Use refcount_t to replace atomic_t when operating refcount. Signed-off-by: Chengguang Xu <cgxu519@xxxxxxx> --- fs/ceph/inode.c | 2 +- fs/ceph/locks.c | 10 +++++----- fs/ceph/mds_client.c | 4 ++-- fs/ceph/super.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 7a7b76ad876a..9c008c078dbf 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -496,7 +496,7 @@ struct inode *ceph_alloc_inode(struct super_block *sb) ci->i_wb_ref = 0; ci->i_wrbuffer_ref = 0; ci->i_wrbuffer_ref_head = 0; - atomic_set(&ci->i_filelock_ref, 0); + refcount_set(&ci->i_filelock_ref, 0); atomic_set(&ci->i_shared_gen, 0); ci->i_rdcache_gen = 0; ci->i_rdcache_revoking = 0; diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c index 9dae2ec7e1fa..ce01100ff948 100644 --- a/fs/ceph/locks.c +++ b/fs/ceph/locks.c @@ -33,14 +33,14 @@ void __init ceph_flock_init(void) static void ceph_fl_copy_lock(struct file_lock *dst, struct file_lock *src) { struct inode *inode = file_inode(src->fl_file); - atomic_inc(&ceph_inode(inode)->i_filelock_ref); + refcount_inc(&ceph_inode(inode)->i_filelock_ref); } static void ceph_fl_release_lock(struct file_lock *fl) { struct inode *inode = file_inode(fl->fl_file); struct ceph_inode_info *ci = ceph_inode(inode); - if (atomic_dec_and_test(&ci->i_filelock_ref)) { + if (refcount_dec_and_test(&ci->i_filelock_ref)) { /* clear error when all locks are released */ spin_lock(&ci->i_ceph_lock); ci->i_ceph_flags &= ~CEPH_I_ERROR_FILELOCK; @@ -73,7 +73,7 @@ static int ceph_lock_message(u8 lock_type, u16 operation, struct inode *inode, * window. Caller function will decrease the counter. */ fl->fl_ops = &ceph_fl_lock_ops; - atomic_inc(&ceph_inode(inode)->i_filelock_ref); + refcount_inc(&ceph_inode(inode)->i_filelock_ref); } if (operation != CEPH_MDS_OP_SETFILELOCK || cmd == CEPH_LOCK_UNLOCK) @@ -245,7 +245,7 @@ int ceph_lock(struct file *file, int cmd, struct file_lock *fl) * window. Caller function will decrease the counter. */ fl->fl_ops = &ceph_fl_lock_ops; - atomic_inc(&ci->i_filelock_ref); + refcount_inc(&ci->i_filelock_ref); } spin_unlock(&ci->i_ceph_lock); if (err < 0) { @@ -302,7 +302,7 @@ int ceph_flock(struct file *file, int cmd, struct file_lock *fl) } else { /* see comment in ceph_lock */ fl->fl_ops = &ceph_fl_lock_ops; - atomic_inc(&ci->i_filelock_ref); + refcount_inc(&ci->i_filelock_ref); } spin_unlock(&ci->i_ceph_lock); if (err < 0) { diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index c65192102381..98e90b5715f0 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -1277,7 +1277,7 @@ static int remove_session_caps_cb(struct inode *inode, struct ceph_cap *cap, } spin_unlock(&mdsc->cap_dirty_lock); - if (atomic_read(&ci->i_filelock_ref) > 0) { + if (refcount_read(&ci->i_filelock_ref) > 0) { /* make further file lock syscall return -EIO */ ci->i_ceph_flags |= CEPH_I_ERROR_FILELOCK; pr_warn_ratelimited(" dropping file locks for %p %lld\n", @@ -1561,7 +1561,7 @@ static int trim_caps_cb(struct inode *inode, struct ceph_cap *cap, void *arg) /* Note: it's possible that i_filelock_ref becomes non-zero * after dropping auth caps. It doesn't hurt because reply * of lock mds request will re-add auth caps. */ - if (atomic_read(&ci->i_filelock_ref) > 0) + if (refcount_read(&ci->i_filelock_ref) > 0) goto out; } /* The inode has cached pages, but it's no longer used. diff --git a/fs/ceph/super.h b/fs/ceph/super.h index d4b0ca5d7a15..40c41f3a7025 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -358,7 +358,7 @@ struct ceph_inode_info { int i_pin_ref; int i_rd_ref, i_rdcache_ref, i_wr_ref, i_wb_ref; int i_wrbuffer_ref, i_wrbuffer_ref_head; - atomic_t i_filelock_ref; + refcount_t i_filelock_ref; atomic_t i_shared_gen; /* increment each time we get FILE_SHARED */ u32 i_rdcache_gen; /* incremented each time we get FILE_CACHE. */ u32 i_rdcache_revoking; /* RDCACHE gen to async invalidate, if any */ -- 2.17.1 -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html