Skip to content

Commit

Permalink
btrfs: simplify btrfs_iget
Browse files Browse the repository at this point in the history
Don't open-code iget_failed(), don't bother with btrfs_free_path(NULL),
move handling of positive return values of btrfs_lookup_inode() from
btrfs_read_locked_inode() to btrfs_iget() and kill now obviously
pointless ASSERT() in there.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
Al Viro authored and David Sterba committed Aug 6, 2018
1 parent 9bc2cef commit f5b3a41
Showing 1 changed file with 13 additions and 16 deletions.
29 changes: 13 additions & 16 deletions fs/btrfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -3604,18 +3604,15 @@ static int btrfs_read_locked_inode(struct inode *inode)
filled = true;

path = btrfs_alloc_path();
if (!path) {
ret = -ENOMEM;
goto make_bad;
}
if (!path)
return -ENOMEM;

memcpy(&location, &BTRFS_I(inode)->location, sizeof(location));

ret = btrfs_lookup_inode(NULL, root, path, &location, 0);
if (ret) {
if (ret > 0)
ret = -ENOENT;
goto make_bad;
btrfs_free_path(path);
return ret;
}

leaf = path->nodes[0];
Expand Down Expand Up @@ -3768,10 +3765,6 @@ static int btrfs_read_locked_inode(struct inode *inode)

btrfs_sync_inode_flags_to_i_flags(inode);
return 0;

make_bad:
btrfs_free_path(path);
return ret;
}

/*
Expand Down Expand Up @@ -5702,11 +5695,15 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location,
if (new)
*new = 1;
} else {
make_bad_inode(inode);
unlock_new_inode(inode);
iput(inode);
ASSERT(ret < 0);
inode = ERR_PTR(ret < 0 ? ret : -ESTALE);
iget_failed(inode);
/*
* ret > 0 can come from btrfs_search_slot called by
* btrfs_read_locked_inode, this means the inode item
* was not found.
*/
if (ret > 0)
ret = -ENOENT;
inode = ERR_PTR(ret);
}
}

Expand Down

0 comments on commit f5b3a41

Please sign in to comment.