btrfs: make find_desired_extent take btrfs_inode

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Nikolay Borisov 2021-02-17 15:12:48 +02:00 committed by David Sterba
parent bfc78479eb
commit cca5de97ae

View file

@ -3495,13 +3495,13 @@ static long btrfs_fallocate(struct file *file, int mode,
return ret; return ret;
} }
static loff_t find_desired_extent(struct inode *inode, loff_t offset, static loff_t find_desired_extent(struct btrfs_inode *inode, loff_t offset,
int whence) int whence)
{ {
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); struct btrfs_fs_info *fs_info = inode->root->fs_info;
struct extent_map *em = NULL; struct extent_map *em = NULL;
struct extent_state *cached_state = NULL; struct extent_state *cached_state = NULL;
loff_t i_size = inode->i_size; loff_t i_size = inode->vfs_inode.i_size;
u64 lockstart; u64 lockstart;
u64 lockend; u64 lockend;
u64 start; u64 start;
@ -3524,11 +3524,10 @@ static loff_t find_desired_extent(struct inode *inode, loff_t offset,
lockend--; lockend--;
len = lockend - lockstart + 1; len = lockend - lockstart + 1;
lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, lock_extent_bits(&inode->io_tree, lockstart, lockend, &cached_state);
&cached_state);
while (start < i_size) { while (start < i_size) {
em = btrfs_get_extent_fiemap(BTRFS_I(inode), start, len); em = btrfs_get_extent_fiemap(inode, start, len);
if (IS_ERR(em)) { if (IS_ERR(em)) {
ret = PTR_ERR(em); ret = PTR_ERR(em);
em = NULL; em = NULL;
@ -3550,7 +3549,7 @@ static loff_t find_desired_extent(struct inode *inode, loff_t offset,
cond_resched(); cond_resched();
} }
free_extent_map(em); free_extent_map(em);
unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, unlock_extent_cached(&inode->io_tree, lockstart, lockend,
&cached_state); &cached_state);
if (ret) { if (ret) {
offset = ret; offset = ret;
@ -3574,7 +3573,7 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int whence)
case SEEK_DATA: case SEEK_DATA:
case SEEK_HOLE: case SEEK_HOLE:
btrfs_inode_lock(inode, BTRFS_ILOCK_SHARED); btrfs_inode_lock(inode, BTRFS_ILOCK_SHARED);
offset = find_desired_extent(inode, offset, whence); offset = find_desired_extent(BTRFS_I(inode), offset, whence);
btrfs_inode_unlock(inode, BTRFS_ILOCK_SHARED); btrfs_inode_unlock(inode, BTRFS_ILOCK_SHARED);
break; break;
} }