Btrfs: remove free-space-cache.c WARN during log replay
authorChris Mason <chris.mason@oracle.com>
Mon, 21 Nov 2011 14:39:11 +0000 (09:39 -0500)
committerChris Mason <chris.mason@oracle.com>
Mon, 21 Nov 2011 19:57:33 +0000 (14:57 -0500)
The log replay code only partially loads block groups, since
the block group caching code is able to detect and deal with
extents the logging code has pinned down.

While the logging code is pinning down block groups, there is
a bogus WARN_ON we're hitting if the code wasn't able to find
an extent in the cache.  This commit removes the warning because
it can happen any time there isn't a valid free space cache
for that block group.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/free-space-cache.c

index aedacdbf77e2345acff1127dc903fcdfe29abb47..6e5b7e4636989661e1e506993dce9f82faee3f35 100644 (file)
@@ -1849,7 +1849,13 @@ again:
                info = tree_search_offset(ctl, offset_to_bitmap(ctl, offset),
                                          1, 0);
                if (!info) {
-                       WARN_ON(1);
+                       /* the tree logging code might be calling us before we
+                        * have fully loaded the free space rbtree for this
+                        * block group.  So it is possible the entry won't
+                        * be in the rbtree yet at all.  The caching code
+                        * will make sure not to put it in the rbtree if
+                        * the logging code has pinned it.
+                        */
                        goto out_lock;
                }
        }