提交 2c536799 编写于 作者: J Jeff Mahoney 提交者: David Sterba

btrfs: btrfs_drop_snapshot should return int

Commit cb1b69f4 (Btrfs: forced readonly when btrfs_drop_snapshot() fails)
made btrfs_drop_snapshot return void because there were no callers checking
the return value. That is the wrong order to handle error propogation since
the caller will have no idea that an error has occured and continue on
as if nothing went wrong.
Signed-off-by: NJeff Mahoney <jeffm@suse.com>
上级 3fbe5c02
...@@ -2661,9 +2661,9 @@ static inline int btrfs_next_item(struct btrfs_root *root, struct btrfs_path *p) ...@@ -2661,9 +2661,9 @@ static inline int btrfs_next_item(struct btrfs_root *root, struct btrfs_path *p)
} }
int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path); int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path);
int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf); int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf);
void btrfs_drop_snapshot(struct btrfs_root *root, int __must_check btrfs_drop_snapshot(struct btrfs_root *root,
struct btrfs_block_rsv *block_rsv, int update_ref, struct btrfs_block_rsv *block_rsv,
int for_reloc); int update_ref, int for_reloc);
int btrfs_drop_subtree(struct btrfs_trans_handle *trans, int btrfs_drop_subtree(struct btrfs_trans_handle *trans,
struct btrfs_root *root, struct btrfs_root *root,
struct extent_buffer *node, struct extent_buffer *node,
......
...@@ -6734,7 +6734,7 @@ static noinline int walk_up_tree(struct btrfs_trans_handle *trans, ...@@ -6734,7 +6734,7 @@ static noinline int walk_up_tree(struct btrfs_trans_handle *trans,
* also make sure backrefs for the shared block and all lower level * also make sure backrefs for the shared block and all lower level
* blocks are properly updated. * blocks are properly updated.
*/ */
void btrfs_drop_snapshot(struct btrfs_root *root, int btrfs_drop_snapshot(struct btrfs_root *root,
struct btrfs_block_rsv *block_rsv, int update_ref, struct btrfs_block_rsv *block_rsv, int update_ref,
int for_reloc) int for_reloc)
{ {
...@@ -6902,7 +6902,7 @@ void btrfs_drop_snapshot(struct btrfs_root *root, ...@@ -6902,7 +6902,7 @@ void btrfs_drop_snapshot(struct btrfs_root *root,
out: out:
if (err) if (err)
btrfs_std_error(root->fs_info, err); btrfs_std_error(root->fs_info, err);
return; return err;
} }
/* /*
......
...@@ -2272,7 +2272,8 @@ int merge_reloc_roots(struct reloc_control *rc) ...@@ -2272,7 +2272,8 @@ int merge_reloc_roots(struct reloc_control *rc)
} else { } else {
list_del_init(&reloc_root->root_list); list_del_init(&reloc_root->root_list);
} }
btrfs_drop_snapshot(reloc_root, rc->block_rsv, 0, 1); ret = btrfs_drop_snapshot(reloc_root, rc->block_rsv, 0, 1);
BUG_ON(ret < 0);
} }
if (found) { if (found) {
......
...@@ -1387,6 +1387,8 @@ int btrfs_clean_old_snapshots(struct btrfs_root *root) ...@@ -1387,6 +1387,8 @@ int btrfs_clean_old_snapshots(struct btrfs_root *root)
spin_unlock(&fs_info->trans_lock); spin_unlock(&fs_info->trans_lock);
while (!list_empty(&list)) { while (!list_empty(&list)) {
int ret;
root = list_entry(list.next, struct btrfs_root, root_list); root = list_entry(list.next, struct btrfs_root, root_list);
list_del(&root->root_list); list_del(&root->root_list);
...@@ -1394,9 +1396,10 @@ int btrfs_clean_old_snapshots(struct btrfs_root *root) ...@@ -1394,9 +1396,10 @@ int btrfs_clean_old_snapshots(struct btrfs_root *root)
if (btrfs_header_backref_rev(root->node) < if (btrfs_header_backref_rev(root->node) <
BTRFS_MIXED_BACKREF_REV) BTRFS_MIXED_BACKREF_REV)
btrfs_drop_snapshot(root, NULL, 0, 0); ret = btrfs_drop_snapshot(root, NULL, 0, 0);
else else
btrfs_drop_snapshot(root, NULL, 1, 0); ret =btrfs_drop_snapshot(root, NULL, 1, 0);
BUG_ON(ret < 0);
} }
return 0; return 0;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册