ceph: remove superfluous inode_lock in ceph_fsync
Originally, filemap_write_and_wait took the i_mutex internally, but commit 02c24a82187d pushed the mutex acquisition into the individual fsync routines, leaving it up to the subsystem maintainers to remove it if it wasn't needed. For ceph, I see no reason to take the inode_lock here. All of the operations inside that lock are protected by their own locking. Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
committed by
Ilya Dryomov
parent
0384892c2d
commit
ffb61c55b2
@ -2257,8 +2257,6 @@ int ceph_fsync(struct file *file, loff_t start, loff_t end, int datasync)
|
|||||||
if (datasync)
|
if (datasync)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
inode_lock(inode);
|
|
||||||
|
|
||||||
dirty = try_flush_caps(inode, &flush_tid);
|
dirty = try_flush_caps(inode, &flush_tid);
|
||||||
dout("fsync dirty caps are %s\n", ceph_cap_string(dirty));
|
dout("fsync dirty caps are %s\n", ceph_cap_string(dirty));
|
||||||
|
|
||||||
@ -2273,7 +2271,6 @@ int ceph_fsync(struct file *file, loff_t start, loff_t end, int datasync)
|
|||||||
ret = wait_event_interruptible(ci->i_cap_wq,
|
ret = wait_event_interruptible(ci->i_cap_wq,
|
||||||
caps_are_flushed(inode, flush_tid));
|
caps_are_flushed(inode, flush_tid));
|
||||||
}
|
}
|
||||||
inode_unlock(inode);
|
|
||||||
out:
|
out:
|
||||||
dout("fsync %p%s result=%d\n", inode, datasync ? " datasync" : "", ret);
|
dout("fsync %p%s result=%d\n", inode, datasync ? " datasync" : "", ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user