summaryrefslogtreecommitdiff
path: root/free-space-cache.c
diff options
context:
space:
mode:
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>2014-06-18 13:28:22 +0800
committerDavid Sterba <dsterba@suse.cz>2014-08-22 14:43:09 +0200
commit978542ff59e731dcc45084a7341b2cd8b5437163 (patch)
tree3530085e7323d2575026006cd482bf00a12dbeee /free-space-cache.c
parent445a3a0a51f03a3e1c35dacbd065a2c9efeadf97 (diff)
btrfs-progs: clean fsck noise for free inode generation 0
When we write a btrfs to full and then we have no space left for free space cache. The btrfs check will output msg as follows which is noise indeed: # free space inode generation (0) did not match free space cache generation (XXX) When the free space cache is not written out normally, the free inode generation will be 0. In this condition, no noise should be outputed. Also, check 0-sized inode eariler together with 0-generationed inode. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz>
Diffstat (limited to 'free-space-cache.c')
-rw-r--r--free-space-cache.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/free-space-cache.c b/free-space-cache.c
index bddde240..2440dd80 100644
--- a/free-space-cache.c
+++ b/free-space-cache.c
@@ -310,6 +310,13 @@ static int __load_free_space_cache(struct btrfs_root *root,
leaf = path->nodes[0];
inode_item = btrfs_item_ptr(leaf, path->slots[0],
struct btrfs_inode_item);
+
+ inode_size = btrfs_inode_size(leaf, inode_item);
+ if (!inode_size || !btrfs_inode_generation(leaf, inode_item)) {
+ btrfs_release_path(path);
+ return 0;
+ }
+
if (btrfs_inode_generation(leaf, inode_item) != generation) {
printf("free space inode generation (%llu) did not match "
"free space cache generation (%llu)\n",
@@ -320,10 +327,7 @@ static int __load_free_space_cache(struct btrfs_root *root,
return 0;
}
- inode_size = btrfs_inode_size(leaf, inode_item);
btrfs_release_path(path);
- if (inode_size == 0)
- return 0;
if (!num_entries)
return 0;