diff options
author | Yan, Zheng <zheng.z.yan@intel.com> | 2013-09-22 04:15:58 +0200 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-11-23 20:00:59 +0100 |
commit | a096b09aeec6ff99edfdfd8cee24d6f25377d585 (patch) | |
tree | d32a4a15cd391c2c84205c855e7d997070279cc6 /fs/ceph/super.h | |
parent | ceph: handle frag mismatch between readdir request and reply (diff) | |
download | linux-a096b09aeec6ff99edfdfd8cee24d6f25377d585.tar.xz linux-a096b09aeec6ff99edfdfd8cee24d6f25377d585.zip |
ceph: queue cap release in __ceph_remove_cap()
call __queue_cap_release() in __ceph_remove_cap(), this avoids
acquiring s_cap_lock twice.
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r-- | fs/ceph/super.h | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 6014b0a3c405..ef4ac38bb614 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -741,13 +741,7 @@ extern int ceph_add_cap(struct inode *inode, int fmode, unsigned issued, unsigned wanted, unsigned cap, unsigned seq, u64 realmino, int flags, struct ceph_cap_reservation *caps_reservation); -extern void __ceph_remove_cap(struct ceph_cap *cap); -static inline void ceph_remove_cap(struct ceph_cap *cap) -{ - spin_lock(&cap->ci->i_ceph_lock); - __ceph_remove_cap(cap); - spin_unlock(&cap->ci->i_ceph_lock); -} +extern void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release); extern void ceph_put_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap); |