All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Btrfs-progs: fix free space cache checks
@ 2013-05-29 13:09 Josef Bacik
  0 siblings, 0 replies; only message in thread
From: Josef Bacik @ 2013-05-29 13:09 UTC (permalink / raw)
  To: linux-btrfs

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


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2013-05-29 13:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-29 13:09 [PATCH] Btrfs-progs: fix free space cache checks Josef Bacik

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.