Commit 65a246c5 authored by Tsutomu Itoh's avatar Tsutomu Itoh Committed by Chris Mason

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: default avatarTsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent b0b802d7
...@@ -551,10 +551,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, ...@@ -551,10 +551,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
ret = btrfs_search_slot(trans, root, &key, path, -1, 1); ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
if (ret > 0) { if (ret > 0) {
if (path->slots[0] == 0) if (path->slots[0] == 0)
goto out; break;
path->slots[0]--; path->slots[0]--;
} else if (ret < 0) { } else if (ret < 0) {
goto out; break;
} }
leaf = path->nodes[0]; leaf = path->nodes[0];
...@@ -579,7 +579,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, ...@@ -579,7 +579,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
/* delete the entire item, it is inside our range */ /* delete the entire item, it is inside our range */
if (key.offset >= bytenr && csum_end <= end_byte) { if (key.offset >= bytenr && csum_end <= end_byte) {
ret = btrfs_del_item(trans, root, path); ret = btrfs_del_item(trans, root, path);
BUG_ON(ret); if (ret)
goto out;
if (key.offset == bytenr) if (key.offset == bytenr)
break; break;
} else if (key.offset < bytenr && csum_end > end_byte) { } else if (key.offset < bytenr && csum_end > end_byte) {
...@@ -633,9 +634,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, ...@@ -633,9 +634,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
} }
btrfs_release_path(root, path); btrfs_release_path(root, path);
} }
ret = 0;
out: out:
btrfs_free_path(path); btrfs_free_path(path);
return 0; return ret;
} }
int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans, int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
......
...@@ -385,7 +385,10 @@ int btrfs_del_root_ref(struct btrfs_trans_handle *trans, ...@@ -385,7 +385,10 @@ int btrfs_del_root_ref(struct btrfs_trans_handle *trans,
*sequence = btrfs_root_ref_sequence(leaf, ref); *sequence = btrfs_root_ref_sequence(leaf, ref);
ret = btrfs_del_item(trans, tree_root, path); ret = btrfs_del_item(trans, tree_root, path);
BUG_ON(ret); if (ret) {
err = ret;
goto out;
}
} else } else
err = -ENOENT; err = -ENOENT;
...@@ -397,6 +400,7 @@ int btrfs_del_root_ref(struct btrfs_trans_handle *trans, ...@@ -397,6 +400,7 @@ int btrfs_del_root_ref(struct btrfs_trans_handle *trans,
goto again; goto again;
} }
out:
btrfs_free_path(path); btrfs_free_path(path);
return err; return err;
} }
......
...@@ -1050,7 +1050,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans, ...@@ -1050,7 +1050,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
break; break;
ret = btrfs_del_item(trans, root, path); ret = btrfs_del_item(trans, root, path);
BUG_ON(ret); if (ret)
goto out;
btrfs_release_path(root, path); btrfs_release_path(root, path);
inode = read_one_inode(root, key.offset); inode = read_one_inode(root, key.offset);
...@@ -1068,8 +1069,10 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans, ...@@ -1068,8 +1069,10 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
*/ */
key.offset = (u64)-1; key.offset = (u64)-1;
} }
ret = 0;
out:
btrfs_release_path(root, path); btrfs_release_path(root, path);
return 0; return ret;
} }
...@@ -2587,7 +2590,8 @@ static int drop_objectid_items(struct btrfs_trans_handle *trans, ...@@ -2587,7 +2590,8 @@ static int drop_objectid_items(struct btrfs_trans_handle *trans,
break; break;
ret = btrfs_del_item(trans, log, path); ret = btrfs_del_item(trans, log, path);
BUG_ON(ret); if (ret)
break;
btrfs_release_path(log, path); btrfs_release_path(log, path);
} }
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, ...@@ -967,7 +967,6 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
if (device->bytes_used > 0) if (device->bytes_used > 0)
device->bytes_used -= btrfs_dev_extent_length(leaf, extent); device->bytes_used -= btrfs_dev_extent_length(leaf, extent);
ret = btrfs_del_item(trans, root, path); ret = btrfs_del_item(trans, root, path);
BUG_ON(ret);
out: out:
btrfs_free_path(path); btrfs_free_path(path);
...@@ -1770,10 +1769,9 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans, ...@@ -1770,10 +1769,9 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans,
BUG_ON(ret); BUG_ON(ret);
ret = btrfs_del_item(trans, root, path); ret = btrfs_del_item(trans, root, path);
BUG_ON(ret);
btrfs_free_path(path); btrfs_free_path(path);
return 0; return ret;
} }
static int btrfs_del_sys_chunk(struct btrfs_root *root, u64 chunk_objectid, u64 static int btrfs_del_sys_chunk(struct btrfs_root *root, u64 chunk_objectid, u64
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment