diff options
author | Josef Bacik <jbacik@fusionio.com> | 2013-06-05 10:02:59 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2013-06-19 13:52:56 -0400 |
commit | f00dd8386a57d241d0f7c72653f7ffad118dc5ae (patch) | |
tree | 53f6b68eee7da04126a4e256f3fc1bee75f4972f | |
parent | 7e992408e3723bdb14f4af4f970b12f8f76d0b14 (diff) |
Btrfs-progs: fix reference check for roots in btrfsck
I noticed that I was getting these errors on a bigger file system with more
snapshots that had been removed. This check is bogus since we won't inc
rec->found_ref if we don't find a REF_KEY _and_ a DIR_ITEM, so we only have to
worry about there being no references to a root if it actually has a root item.
If it doesn't then it's just referenced by things that will go no where anyway.
With this patch fsck no longer incorrectly complains about this file system
image I have. Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
-rw-r--r-- | cmds-check.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/cmds-check.c b/cmds-check.c index 4083298f..68cdd523 100644 --- a/cmds-check.c +++ b/cmds-check.c @@ -1637,6 +1637,14 @@ static int check_root_refs(struct btrfs_root *root, rec->objectid); if (ret == 0) continue; + + /* + * If we don't have a root item then we likely just have + * a dir item in a snapshot for this root but no actual + * ref key or anything so it's meaningless. + */ + if (!rec->found_root_item) + continue; errors++; fprintf(stderr, "fs tree %llu not referenced\n", (unsigned long long)rec->objectid); |