|
@@ -388,10 +388,16 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
|
|
|
continue;
|
|
|
err = __resolve_indirect_ref(fs_info, path, time_seq, ref,
|
|
|
parents, extent_item_pos);
|
|
|
- if (err == -ENOMEM)
|
|
|
- goto out;
|
|
|
- if (err)
|
|
|
+ /*
|
|
|
+ * we can only tolerate ENOENT,otherwise,we should catch error
|
|
|
+ * and return directly.
|
|
|
+ */
|
|
|
+ if (err == -ENOENT) {
|
|
|
continue;
|
|
|
+ } else if (err) {
|
|
|
+ ret = err;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
|
|
|
/* we put the first parent into the ref at hand */
|
|
|
ULIST_ITER_INIT(&uiter);
|