Btrfs: fix duplicate checking logic
authorJosef Bacik <josef@redhat.com>
Mon, 6 Jun 2011 14:50:35 +0000 (10:50 -0400)
committerJosef Bacik <josef@redhat.com>
Wed, 8 Jun 2011 20:37:29 +0000 (16:37 -0400)
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>
fs/btrfs/free-space-cache.c

index 8258ccf85dbd194892bc96851f01773fecfba76e..38f3fd9230431465c25c19830c311bf5bdaf61c4 100644 (file)
@@ -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--;