summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosef Bacik2011-06-06 16:50:35 +0200
committerJosef Bacik2011-06-08 22:37:29 +0200
commitf6a398298d34af66ec3a2d82a44a4dbc5277357d (patch)
tree5cb1a6437051c22f2f3ecca9a4c7d60e4192d377
parentBtrfs: fix the allocator loop logic (diff)
downloadkernel-qcow2-linux-f6a398298d34af66ec3a2d82a44a4dbc5277357d.tar.gz
kernel-qcow2-linux-f6a398298d34af66ec3a2d82a44a4dbc5277357d.tar.xz
kernel-qcow2-linux-f6a398298d34af66ec3a2d82a44a4dbc5277357d.zip
Btrfs: fix duplicate checking logic
When merging my code into the integration test the second check for duplicate entries got screwed up. This patch fixes it by dropping ret2 and just using ret for the return value, and checking if we got an error before adding the bitmap to the local list. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
-rw-r--r--fs/btrfs/free-space-cache.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 8258ccf85dbd..38f3fd923043 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -250,7 +250,7 @@ int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
pgoff_t index = 0;
unsigned long first_page_offset;
int num_checksums;
- int ret = 0, ret2;
+ int ret = 0;
INIT_LIST_HEAD(&bitmaps);
@@ -421,11 +421,10 @@ int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
goto free_cache;
}
spin_lock(&ctl->tree_lock);
- ret2 = link_free_space(ctl, e);
+ ret = link_free_space(ctl, e);
ctl->total_bitmaps++;
ctl->op->recalc_thresholds(ctl);
spin_unlock(&ctl->tree_lock);
- list_add_tail(&e->list, &bitmaps);
if (ret) {
printk(KERN_ERR "Duplicate entries in "
"free space cache, dumping\n");
@@ -434,6 +433,7 @@ int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
page_cache_release(page);
goto free_cache;
}
+ list_add_tail(&e->list, &bitmaps);
}
num_entries--;