mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 04:47:05 +00:00
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:
parent
6bc40e44f1
commit
36062b9183
1 changed files with 3 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue