summaryrefslogtreecommitdiff
path: root/btrfsck.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-05-09 20:13:48 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-05-09 20:13:48 -0400
commit9d42320851fa33a6bbeda107d7df5d3b5a5dc325 (patch)
tree6c5776e9b68d83a8ef2cfe363afb473c81107860 /btrfsck.c
parent7e8970c198cab360b2ca946efb27c4846369cdad (diff)
more stats from fsck
Diffstat (limited to 'btrfsck.c')
-rw-r--r--btrfsck.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/btrfsck.c b/btrfsck.c
index 31cb0bdf..e89b0d40 100644
--- a/btrfsck.c
+++ b/btrfsck.c
@@ -11,7 +11,11 @@
#include "transaction.h"
#include "bit-radix.h"
-u64 blocks_used = 0;
+static u64 blocks_used = 0;
+static u64 total_csum_bytes = 0;
+static u64 total_btree_blocks = 0;
+static u64 btree_space_waste = 0;
+
struct extent_record {
struct btrfs_disk_key parent_key;
struct btrfs_disk_key node_key;
@@ -234,6 +238,7 @@ static int run_next_block(struct btrfs_root *root,
}
if (btrfs_is_leaf(&buf->node)) {
leaf = &buf->leaf;
+ btree_space_waste += btrfs_leaf_free_space(root, leaf);
for (i = 0; i < nritems; i++) {
struct btrfs_file_extent_item *fi;
if (btrfs_disk_key_type(&leaf->items[i].key) ==
@@ -251,6 +256,12 @@ static int run_next_block(struct btrfs_root *root,
btrfs_extent_refs(ei), 0);
continue;
}
+ if (btrfs_disk_key_type(&leaf->items[i].key) ==
+ BTRFS_CSUM_ITEM_KEY) {
+ total_csum_bytes +=
+ btrfs_item_size(leaf->items + i);
+ continue;
+ }
if (btrfs_disk_key_type(&leaf->items[i].key) !=
BTRFS_EXTENT_DATA_KEY)
continue;
@@ -284,8 +295,11 @@ static int run_next_block(struct btrfs_root *root,
add_pending(pending, seen, ptr);
}
}
+ btree_space_waste += (BTRFS_NODEPTRS_PER_BLOCK(root) -
+ nritems) * sizeof(struct btrfs_key_ptr);
}
btrfs_block_release(root, buf);
+ total_btree_blocks++;
return 0;
}
@@ -420,5 +434,8 @@ int main(int ac, char **av) {
ret = check_extent_refs(root, &extent_radix);
close_ctree(root, &super);
printf("found %Lu blocks used err is %d\n", blocks_used, ret);
+ printf("total csum bytes: %Lu\n", total_csum_bytes);
+ printf("total tree blocks: %Lu\n", total_btree_blocks);
+ printf("btree space waste bytes: %Lu\n", btree_space_waste);
return ret;
}