diff options
author | Wang Shilong <wangsl.fnst@cn.fujitsu.com> | 2014-01-23 06:47:49 +0100 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-01-29 16:06:23 +0100 |
commit | 95def2ede1a9dd12b164932eaf5fefb67aefc41c (patch) | |
tree | b9af144d22220cbbc08ce544ad0f0ea83a2e1537 /fs/btrfs/backref.c | |
parent | Btrfs: fix protection between walking backrefs and root deletion (diff) | |
download | linux-95def2ede1a9dd12b164932eaf5fefb67aefc41c.tar.xz linux-95def2ede1a9dd12b164932eaf5fefb67aefc41c.zip |
Btrfs: fix to catch all errors when resolving indirect ref
We can only tolerate ENOENT here, for other errors, we should
return directly.
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to '')
-rw-r--r-- | fs/btrfs/backref.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 10ae5700ab1e..55ffcf44b909 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -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); |