forked from Minki/linux
Btrfs: return error code to caller when btrfs_del_item fails
The error code is returned instead of calling BUG_ON when btrfs_del_item returns the error. Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
b0b802d7e3
commit
65a246c5ff
@ -551,10 +551,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
|
||||
ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
|
||||
if (ret > 0) {
|
||||
if (path->slots[0] == 0)
|
||||
goto out;
|
||||
break;
|
||||
path->slots[0]--;
|
||||
} else if (ret < 0) {
|
||||
goto out;
|
||||
break;
|
||||
}
|
||||
|
||||
leaf = path->nodes[0];
|
||||
@ -579,7 +579,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
|
||||
/* delete the entire item, it is inside our range */
|
||||
if (key.offset >= bytenr && csum_end <= end_byte) {
|
||||
ret = btrfs_del_item(trans, root, path);
|
||||
BUG_ON(ret);
|
||||
if (ret)
|
||||
goto out;
|
||||
if (key.offset == bytenr)
|
||||
break;
|
||||
} else if (key.offset < bytenr && csum_end > end_byte) {
|
||||
@ -633,9 +634,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
|
||||
}
|
||||
btrfs_release_path(root, path);
|
||||
}
|
||||
ret = 0;
|
||||
out:
|
||||
btrfs_free_path(path);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
|
||||
|
@ -385,7 +385,10 @@ again:
|
||||
*sequence = btrfs_root_ref_sequence(leaf, ref);
|
||||
|
||||
ret = btrfs_del_item(trans, tree_root, path);
|
||||
BUG_ON(ret);
|
||||
if (ret) {
|
||||
err = ret;
|
||||
goto out;
|
||||
}
|
||||
} else
|
||||
err = -ENOENT;
|
||||
|
||||
@ -397,6 +400,7 @@ again:
|
||||
goto again;
|
||||
}
|
||||
|
||||
out:
|
||||
btrfs_free_path(path);
|
||||
return err;
|
||||
}
|
||||
|
@ -1050,7 +1050,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
|
||||
break;
|
||||
|
||||
ret = btrfs_del_item(trans, root, path);
|
||||
BUG_ON(ret);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
btrfs_release_path(root, path);
|
||||
inode = read_one_inode(root, key.offset);
|
||||
@ -1068,8 +1069,10 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
|
||||
*/
|
||||
key.offset = (u64)-1;
|
||||
}
|
||||
ret = 0;
|
||||
out:
|
||||
btrfs_release_path(root, path);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -2587,7 +2590,8 @@ static int drop_objectid_items(struct btrfs_trans_handle *trans,
|
||||
break;
|
||||
|
||||
ret = btrfs_del_item(trans, log, path);
|
||||
BUG_ON(ret);
|
||||
if (ret)
|
||||
break;
|
||||
btrfs_release_path(log, path);
|
||||
}
|
||||
btrfs_release_path(log, path);
|
||||
|
@ -967,7 +967,6 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
|
||||
if (device->bytes_used > 0)
|
||||
device->bytes_used -= btrfs_dev_extent_length(leaf, extent);
|
||||
ret = btrfs_del_item(trans, root, path);
|
||||
BUG_ON(ret);
|
||||
|
||||
out:
|
||||
btrfs_free_path(path);
|
||||
@ -1770,10 +1769,9 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans,
|
||||
BUG_ON(ret);
|
||||
|
||||
ret = btrfs_del_item(trans, root, path);
|
||||
BUG_ON(ret);
|
||||
|
||||
btrfs_free_path(path);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int btrfs_del_sys_chunk(struct btrfs_root *root, u64 chunk_objectid, u64
|
||||
|
Loading…
Reference in New Issue
Block a user