Btrfs: avoid positive number with ERR_PTR
authorJan Schmidt <list.btrfs@jan-o-sch.net>
Wed, 8 Feb 2012 15:01:01 +0000 (16:01 +0100)
committerDavid Sterba <dsterba@suse.cz>
Wed, 15 Feb 2012 15:40:23 +0000 (16:40 +0100)
inode_ref_info() returns 1 when the element wasn't found and < 0 on error,
just like btrfs_search_slot(). In iref_to_path() it's an error when the
inode ref can't be found, thus we return ERR_PTR(ret) in that case. In order
to avoid ERR_PTR(1), we now set ret to -ENOENT in that case.

Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
fs/btrfs/backref.c

index 633c701a287d4be0242d5b1706515aad4845ecfb..98f6bf10bbd47d26e79d59e6d629e53b2d230500 100644 (file)
@@ -892,6 +892,8 @@ static char *iref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path,
                if (eb != eb_in)
                        free_extent_buffer(eb);
                ret = inode_ref_info(parent, 0, fs_root, path, &found_key);
+               if (ret > 0)
+                       ret = -ENOENT;
                if (ret)
                        break;
                next_inum = found_key.offset;