f2fs: use inode_lock_shared instead of inode_lock in f2fs_seek_block()

inode_lock_shared() -> down_read(&inode->i_rwsem)
       inode_lock() -> down_write(&inode->i_rwsem)

Inode is not updated in f2fs_seek_block(), so there is no need
to hold write lock, use read lock for more efficiency.

Signed-off-by: zhangxirui <xirui.zhang@vivo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
zhangxirui 2023-10-21 06:19:07 -06:00 committed by Jaegeuk Kim
parent 6bc40e44f1
commit 36062b9183

View file

@ -418,7 +418,7 @@ static loff_t f2fs_seek_block(struct file *file, loff_t offset, int whence)
loff_t isize;
int err = 0;
inode_lock(inode);
inode_lock_shared(inode);
isize = i_size_read(inode);
if (offset >= isize)
@ -483,10 +483,10 @@ static loff_t f2fs_seek_block(struct file *file, loff_t offset, int whence)
found:
if (whence == SEEK_HOLE && data_ofs > isize)
data_ofs = isize;
inode_unlock(inode);
inode_unlock_shared(inode);
return vfs_setpos(file, data_ofs, maxbytes);
fail:
inode_unlock(inode);
inode_unlock_shared(inode);
return -ENXIO;
}