Skip to content

Commit

Permalink
Btrfs: return error to caller if read_one_inode() fails
Browse files Browse the repository at this point in the history
When read_one_inode() fails, error code is returned to caller instead
of BUG_ON().

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Tsutomu Itoh authored and Chris Mason committed May 23, 2011
1 parent 1cd3079 commit c00e949
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions fs/btrfs/tree-log.c
Original file line number Diff line number Diff line change
Expand Up @@ -677,7 +677,10 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
btrfs_release_path(root, path);

inode = read_one_inode(root, location.objectid);
BUG_ON(!inode);
if (!inode) {
kfree(name);
return -EIO;
}

ret = link_to_fixup_dir(trans, root, path, location.objectid);
BUG_ON(ret);
Expand Down Expand Up @@ -816,7 +819,10 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
return -ENOENT;

inode = read_one_inode(root, key->objectid);
BUG_ON(!inode);
if (!inode) {
iput(dir);
return -EIO;
}

ref_ptr = btrfs_item_ptr_offset(eb, slot);
ref_end = ref_ptr + btrfs_item_size_nr(eb, slot);
Expand Down Expand Up @@ -1054,7 +1060,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,

btrfs_release_path(root, path);
inode = read_one_inode(root, key.offset);
BUG_ON(!inode);
if (!inode)
return -EIO;

ret = fixup_inode_link_count(trans, root, inode);
BUG_ON(ret);
Expand Down Expand Up @@ -1090,7 +1097,8 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,
struct inode *inode;

inode = read_one_inode(root, objectid);
BUG_ON(!inode);
if (!inode)
return -EIO;

key.objectid = BTRFS_TREE_LOG_FIXUP_OBJECTID;
btrfs_set_key_type(&key, BTRFS_ORPHAN_ITEM_KEY);
Expand Down Expand Up @@ -1177,7 +1185,8 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
int ret;

dir = read_one_inode(root, key->objectid);
BUG_ON(!dir);
if (!dir)
return -EIO;

name_len = btrfs_dir_name_len(eb, di);
name = kmalloc(name_len, GFP_NOFS);
Expand Down Expand Up @@ -1433,7 +1442,10 @@ static noinline int check_item_in_log(struct btrfs_trans_handle *trans,
btrfs_release_path(root, path);
btrfs_release_path(log, log_path);
inode = read_one_inode(root, location.objectid);
BUG_ON(!inode);
if (!inode) {
kfree(name);
return -EIO;
}

ret = link_to_fixup_dir(trans, root,
path, location.objectid);
Expand Down

0 comments on commit c00e949

Please sign in to comment.