From ffb61c55b2501c3dcd266856e25430ae8e3753d6 Mon Sep 17 00:00:00 2001 From: Jeff Layton Date: Mon, 8 Apr 2019 10:36:01 -0400 Subject: [PATCH] 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 Reviewed-by: "Yan, Zheng" Signed-off-by: Ilya Dryomov --- fs/ceph/caps.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 36a8dc699448..f976939f771f 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -2257,8 +2257,6 @@ int ceph_fsync(struct file *file, loff_t start, loff_t end, int datasync) if (datasync) goto out; - inode_lock(inode); - dirty = try_flush_caps(inode, &flush_tid); 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, caps_are_flushed(inode, flush_tid)); } - inode_unlock(inode); out: dout("fsync %p%s result=%d\n", inode, datasync ? " datasync" : "", ret); return ret;