diff mbox series

ceph: remove superfluous inode_lock in ceph_fsync

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

Commit Message

Jeff Layton April 8, 2019, 2:36 p.m. UTC
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(-)

Comments

Yan, Zheng April 9, 2019, 2:16 a.m. UTC | #1
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 mbox series

Patch

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;