extra stats for btrfsck, link count in print-tree.c
authorChris Mason <chris.mason@oracle.com>
Fri, 14 Sep 2007 13:19:19 +0000 (09:19 -0400)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Fri, 14 Sep 2007 13:19:19 +0000 (09:19 -0400)
btrfsck.c
print-tree.c

index e5be0319c700efa8ddbaf44c99cbc223042264f6..628dfc3caca4c573973ba088387186b317739b6b 100644 (file)
--- a/btrfsck.c
+++ b/btrfsck.c
@@ -33,6 +33,8 @@ static u64 blocks_used = 0;
 static u64 total_csum_bytes = 0;
 static u64 total_btree_blocks = 0;
 static u64 btree_space_waste = 0;
+static u64 data_blocks_allocated = 0;
+static u64 data_blocks_referenced = 0;
 
 struct extent_record {
        struct btrfs_disk_key parent_key;
@@ -353,6 +355,11 @@ static int run_next_block(struct btrfs_root *root,
                                continue;
                        if (btrfs_file_extent_disk_blocknr(fi) == 0)
                                continue;
+
+                       data_blocks_allocated +=
+                               btrfs_file_extent_disk_num_blocks(fi);
+                       data_blocks_referenced +=
+                               btrfs_file_extent_num_blocks(fi);
                        ret = add_extent_rec(extent_radix, NULL, blocknr,
                                   btrfs_file_extent_disk_blocknr(fi),
                                   btrfs_file_extent_disk_num_blocks(fi),
@@ -522,5 +529,8 @@ int main(int ac, char **av) {
               (unsigned long long)total_btree_blocks);
        printf("btree space waste bytes: %llu\n",
               (unsigned long long)btree_space_waste);
+       printf("file data blocks allocated: %llu\n referenced %llu\n",
+               (unsigned long long)data_blocks_allocated,
+               (unsigned long long)data_blocks_referenced);
        return ret;
 }
index 60deda54dacaa047b22a258d159d5b4d09e72b94..728932016b5dfbfc34bc6d9fa79d0a9d56cf4786 100644 (file)
@@ -76,11 +76,12 @@ void btrfs_print_leaf(struct btrfs_root *root, struct btrfs_leaf *l)
                switch (type) {
                case BTRFS_INODE_ITEM_KEY:
                        ii = btrfs_item_ptr(l, i, struct btrfs_inode_item);
-                       printf("\t\tinode generation %llu size %llu block group %llu mode %o\n",
+                       printf("\t\tinode generation %llu size %llu block group %llu mode %o links %u\n",
                               (unsigned long long)btrfs_inode_generation(ii),
                               (unsigned long long)btrfs_inode_size(ii),
                               (unsigned long long)btrfs_inode_block_group(ii),
-                              btrfs_inode_mode(ii));
+                              btrfs_inode_mode(ii),
+                              btrfs_inode_nlink(ii));
                        break;
                case BTRFS_DIR_ITEM_KEY:
                        di = btrfs_item_ptr(l, i, struct btrfs_dir_item);