This fixes two bugs with the free space cache checker. First is we apparently
always use root->sectorsize for our unit in the kernel so we have to do that
in
progs otherwise bitmaps turn out to not look right if we have leafsize
!sectorsize. The second is a small issue if we had skinny metadata extents set,
we wouldn''t advance last properly because we unconditionally use
key.offset
instead of root->leafsize. Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
---
cmds-check.c | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/cmds-check.c b/cmds-check.c
index 7bb68ce..288b36e 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -2853,7 +2853,10 @@ static int verify_space_cache(struct btrfs_root *root,
}
if (last == key.objectid) {
- last = key.objectid + key.offset;
+ if (key.type == BTRFS_EXTENT_ITEM_KEY)
+ last = key.objectid + key.offset;
+ else
+ last = key.objectid + root->leafsize;
path->slots[0]++;
continue;
}
@@ -2906,15 +2909,8 @@ static int check_space_cache(struct btrfs_root *root)
start = cache->key.objectid + cache->key.offset;
if (!cache->free_space_ctl) {
- int sectorsize;
-
- if (cache->flags & (BTRFS_BLOCK_GROUP_METADATA |
- BTRFS_BLOCK_GROUP_SYSTEM))
- sectorsize = root->leafsize;
- else
- sectorsize = root->sectorsize;
-
- if (btrfs_init_free_space_ctl(cache, sectorsize)) {
+ if (btrfs_init_free_space_ctl(cache,
+ root->sectorsize)) {
ret = -ENOMEM;
break;
}
--
1.7.7.6
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html