NFS: Use an atomic_long_t to count the number of commits
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
a6b6d5b85a
commit
5cb953d4b1
|
@ -2012,7 +2012,7 @@ static void init_once(void *foo)
|
||||||
INIT_LIST_HEAD(&nfsi->access_cache_inode_lru);
|
INIT_LIST_HEAD(&nfsi->access_cache_inode_lru);
|
||||||
INIT_LIST_HEAD(&nfsi->commit_info.list);
|
INIT_LIST_HEAD(&nfsi->commit_info.list);
|
||||||
atomic_long_set(&nfsi->nrequests, 0);
|
atomic_long_set(&nfsi->nrequests, 0);
|
||||||
nfsi->commit_info.ncommit = 0;
|
atomic_long_set(&nfsi->commit_info.ncommit, 0);
|
||||||
atomic_set(&nfsi->commit_info.rpcs_out, 0);
|
atomic_set(&nfsi->commit_info.rpcs_out, 0);
|
||||||
init_rwsem(&nfsi->rmdir_sem);
|
init_rwsem(&nfsi->rmdir_sem);
|
||||||
mutex_init(&nfsi->commit_mutex);
|
mutex_init(&nfsi->commit_mutex);
|
||||||
|
|
|
@ -857,7 +857,7 @@ nfs_request_add_commit_list_locked(struct nfs_page *req, struct list_head *dst,
|
||||||
{
|
{
|
||||||
set_bit(PG_CLEAN, &req->wb_flags);
|
set_bit(PG_CLEAN, &req->wb_flags);
|
||||||
nfs_list_add_request(req, dst);
|
nfs_list_add_request(req, dst);
|
||||||
cinfo->mds->ncommit++;
|
atomic_long_inc(&cinfo->mds->ncommit);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nfs_request_add_commit_list_locked);
|
EXPORT_SYMBOL_GPL(nfs_request_add_commit_list_locked);
|
||||||
|
|
||||||
|
@ -903,7 +903,7 @@ nfs_request_remove_commit_list(struct nfs_page *req,
|
||||||
if (!test_and_clear_bit(PG_CLEAN, &(req)->wb_flags))
|
if (!test_and_clear_bit(PG_CLEAN, &(req)->wb_flags))
|
||||||
return;
|
return;
|
||||||
nfs_list_remove_request(req);
|
nfs_list_remove_request(req);
|
||||||
cinfo->mds->ncommit--;
|
atomic_long_dec(&cinfo->mds->ncommit);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nfs_request_remove_commit_list);
|
EXPORT_SYMBOL_GPL(nfs_request_remove_commit_list);
|
||||||
|
|
||||||
|
@ -1017,7 +1017,7 @@ out:
|
||||||
unsigned long
|
unsigned long
|
||||||
nfs_reqs_to_commit(struct nfs_commit_info *cinfo)
|
nfs_reqs_to_commit(struct nfs_commit_info *cinfo)
|
||||||
{
|
{
|
||||||
return cinfo->mds->ncommit;
|
return atomic_long_read(&cinfo->mds->ncommit);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NFS_I(cinfo->inode)->commit_mutex held by caller */
|
/* NFS_I(cinfo->inode)->commit_mutex held by caller */
|
||||||
|
@ -1057,8 +1057,10 @@ nfs_scan_commit(struct inode *inode, struct list_head *dst,
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
if (!atomic_long_read(&cinfo->mds->ncommit))
|
||||||
|
return 0;
|
||||||
mutex_lock(&NFS_I(cinfo->inode)->commit_mutex);
|
mutex_lock(&NFS_I(cinfo->inode)->commit_mutex);
|
||||||
if (cinfo->mds->ncommit > 0) {
|
if (atomic_long_read(&cinfo->mds->ncommit) > 0) {
|
||||||
const int max = INT_MAX;
|
const int max = INT_MAX;
|
||||||
|
|
||||||
ret = nfs_scan_commit_list(&cinfo->mds->list, dst,
|
ret = nfs_scan_commit_list(&cinfo->mds->list, dst,
|
||||||
|
@ -1890,7 +1892,7 @@ int nfs_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/* no commits means nothing needs to be done */
|
/* no commits means nothing needs to be done */
|
||||||
if (!nfsi->commit_info.ncommit)
|
if (!atomic_long_read(&nfsi->commit_info.ncommit))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (wbc->sync_mode == WB_SYNC_NONE) {
|
if (wbc->sync_mode == WB_SYNC_NONE) {
|
||||||
|
|
|
@ -1476,7 +1476,7 @@ struct nfs_pgio_header {
|
||||||
|
|
||||||
struct nfs_mds_commit_info {
|
struct nfs_mds_commit_info {
|
||||||
atomic_t rpcs_out;
|
atomic_t rpcs_out;
|
||||||
unsigned long ncommit;
|
atomic_long_t ncommit;
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue