ceph: do not carry i_lock for readdir from dcache
We were taking dcache_lock inside of i_lock, which introduces a dependency not found elsewhere in the kernel, complicationg the vfs locking scalability work. Since we don't actually need it here anyway, remove it. We only need i_lock to test for the I_COMPLETE flag, so be careful to do so without dcache_lock held. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
@@ -400,8 +400,9 @@ static inline bool ceph_i_test(struct inode *inode, unsigned mask)
|
||||
struct ceph_inode_info *ci = ceph_inode(inode);
|
||||
bool r;
|
||||
|
||||
smp_mb();
|
||||
spin_lock(&inode->i_lock);
|
||||
r = (ci->i_ceph_flags & mask) == mask;
|
||||
spin_unlock(&inode->i_lock);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user