|
@@ -965,7 +965,7 @@ again:
|
|
|
while (!list_empty(&prefs)) {
|
|
|
ref = list_first_entry(&prefs, struct __prelim_ref, list);
|
|
|
WARN_ON(ref->count < 0);
|
|
|
- if (ref->count && ref->root_id && ref->parent == 0) {
|
|
|
+ if (roots && ref->count && ref->root_id && ref->parent == 0) {
|
|
|
/* no parent == root of tree */
|
|
|
ret = ulist_add(roots, ref->root_id, 0, GFP_NOFS);
|
|
|
if (ret < 0)
|
|
@@ -1061,22 +1061,14 @@ static int btrfs_find_all_leafs(struct btrfs_trans_handle *trans,
|
|
|
u64 time_seq, struct ulist **leafs,
|
|
|
const u64 *extent_item_pos)
|
|
|
{
|
|
|
- struct ulist *tmp;
|
|
|
int ret;
|
|
|
|
|
|
- tmp = ulist_alloc(GFP_NOFS);
|
|
|
- if (!tmp)
|
|
|
- return -ENOMEM;
|
|
|
*leafs = ulist_alloc(GFP_NOFS);
|
|
|
- if (!*leafs) {
|
|
|
- ulist_free(tmp);
|
|
|
+ if (!*leafs)
|
|
|
return -ENOMEM;
|
|
|
- }
|
|
|
|
|
|
ret = find_parent_nodes(trans, fs_info, bytenr,
|
|
|
- time_seq, *leafs, tmp, extent_item_pos);
|
|
|
- ulist_free(tmp);
|
|
|
-
|
|
|
+ time_seq, *leafs, NULL, extent_item_pos);
|
|
|
if (ret < 0 && ret != -ENOENT) {
|
|
|
free_leaf_list(*leafs);
|
|
|
return ret;
|