Message ID | 20190408143601.27752-1-jlayton@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ceph: remove superfluous inode_lock in ceph_fsync | expand |
On 4/8/19 10:36 PM, Jeff Layton wrote: > 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> > --- > 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; > Applied, thanks Yan, Zheng
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;
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> --- fs/ceph/caps.c | 3 --- 1 file changed, 3 deletions(-)