mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 15:42:46 +00:00
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:
parent
bfc78479eb
commit
cca5de97ae
1 changed files with 7 additions and 8 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue