X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=print-tree.c;h=9f9e11e2e235f3bb6e466e650ccefcacb637e820;hb=ae60006cee1c15f87adee22d4595384ea5ab596b;hp=df63334ff2c0b9217e31af131222342b2cba1781;hpb=55e4b14b3e6b0e9bbfaa80667d2497198feae5c1;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/print-tree.c b/print-tree.c index df63334..9f9e11e 100644 --- a/print-tree.c +++ b/print-tree.c @@ -224,14 +224,24 @@ void print_chunk(struct extent_buffer *eb, struct btrfs_chunk *chunk) char chunk_flags_str[32] = {0}; bg_flags_to_str(btrfs_chunk_type(eb, chunk), chunk_flags_str); - printf("\t\tchunk length %llu owner %llu type %s num_stripes %d\n", + printf("\t\tchunk length %llu owner %llu stripe_len %llu\n", (unsigned long long)btrfs_chunk_length(eb, chunk), (unsigned long long)btrfs_chunk_owner(eb, chunk), + (unsigned long long)btrfs_chunk_stripe_len(eb, chunk)); + printf("\t\ttype %s num_stripes %d\n", chunk_flags_str, num_stripes); for (i = 0 ; i < num_stripes ; i++) { + unsigned char dev_uuid[BTRFS_UUID_SIZE]; + char str_dev_uuid[BTRFS_UUID_UNPARSED_SIZE]; + + read_extent_buffer(eb, dev_uuid, + (unsigned long)btrfs_stripe_dev_uuid_nr(chunk, i), + BTRFS_UUID_SIZE); + uuid_unparse(dev_uuid, str_dev_uuid); printf("\t\t\tstripe %d devid %llu offset %llu\n", i, (unsigned long long)btrfs_stripe_devid_nr(eb, chunk, i), (unsigned long long)btrfs_stripe_offset_nr(eb, chunk, i)); + printf("\t\t\tdev uuid: %s\n", str_dev_uuid); } } @@ -275,19 +285,40 @@ static void print_uuids(struct extent_buffer *eb) printf("fs uuid %s\nchunk uuid %s\n", fs_uuid, chunk_uuid); } +static void compress_type_to_str(u8 compress_type, char *ret) +{ + switch (compress_type) { + case BTRFS_COMPRESS_NONE: + strcpy(ret, "none"); + break; + case BTRFS_COMPRESS_ZLIB: + strcpy(ret, "zlib"); + break; + case BTRFS_COMPRESS_LZO: + strcpy(ret, "lzo"); + break; + default: + sprintf(ret, "UNKNOWN.%d", compress_type); + } +} + static void print_file_extent_item(struct extent_buffer *eb, struct btrfs_item *item, int slot, struct btrfs_file_extent_item *fi) { int extent_type = btrfs_file_extent_type(eb, fi); + char compress_str[16]; + + compress_type_to_str(btrfs_file_extent_compression(eb, fi), + compress_str); if (extent_type == BTRFS_FILE_EXTENT_INLINE) { printf("\t\tinline extent data size %u " - "ram %u compress %d\n", + "ram %u compress(%s)\n", btrfs_file_extent_inline_item_len(eb, item), btrfs_file_extent_inline_len(eb, slot, fi), - btrfs_file_extent_compression(eb, fi)); + compress_str); return; } if (extent_type == BTRFS_FILE_EXTENT_PREALLOC) { @@ -306,8 +337,7 @@ static void print_file_extent_item(struct extent_buffer *eb, (unsigned long long)btrfs_file_extent_offset(eb, fi), (unsigned long long)btrfs_file_extent_num_bytes(eb, fi), (unsigned long long)btrfs_file_extent_ram_bytes(eb, fi)); - printf("\t\textent compression %d\n", - btrfs_file_extent_compression(eb, fi)); + printf("\t\textent compression(%s)\n", compress_str); } /* Caller should ensure sizeof(*ret) >= 16("DATA|TREE_BLOCK") */ @@ -479,12 +509,13 @@ static void print_root(struct extent_buffer *leaf, int slot) memset(&root_item, 0, sizeof(root_item)); read_extent_buffer(leaf, &root_item, (unsigned long)ri, len); - printf("\t\troot data bytenr %llu level %d dirid %llu refs %u gen %llu\n", + printf("\t\troot data bytenr %llu level %d dirid %llu refs %u gen %llu lastsnap %llu\n", (unsigned long long)btrfs_root_bytenr(&root_item), btrfs_root_level(&root_item), (unsigned long long)btrfs_root_dirid(&root_item), btrfs_root_refs(&root_item), - (unsigned long long)btrfs_root_generation(&root_item)); + (unsigned long long)btrfs_root_generation(&root_item), + (unsigned long long)btrfs_root_last_snapshot(&root_item)); if (root_item.generation == root_item.generation_v2) { uuid_unparse(root_item.uuid, uuid_str); @@ -608,6 +639,15 @@ static void print_key_type(u64 objectid, u8 type) case BTRFS_BLOCK_GROUP_ITEM_KEY: printf("BLOCK_GROUP_ITEM"); break; + case BTRFS_FREE_SPACE_INFO_KEY: + printf("FREE_SPACE_INFO"); + break; + case BTRFS_FREE_SPACE_EXTENT_KEY: + printf("FREE_SPACE_EXTENT"); + break; + case BTRFS_FREE_SPACE_BITMAP_KEY: + printf("FREE_SPACE_BITMAP"); + break; case BTRFS_CHUNK_ITEM_KEY: printf("CHUNK_ITEM"); break; @@ -726,6 +766,9 @@ static void print_objectid(u64 objectid, u8 type) case BTRFS_UUID_TREE_OBJECTID: printf("UUID_TREE"); break; + case BTRFS_FREE_SPACE_TREE_OBJECTID: + printf("FREE_SPACE_TREE"); + break; case BTRFS_MULTIPLE_OBJECTIDS: printf("MULTIPLE"); break; @@ -808,6 +851,7 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l) struct btrfs_dev_extent *dev_extent; struct btrfs_disk_key disk_key; struct btrfs_block_group_item bg_item; + struct btrfs_free_space_info *free_info; struct btrfs_dir_log_item *dlog; struct btrfs_qgroup_info_item *qg_info; struct btrfs_qgroup_limit_item *qg_limit; @@ -841,10 +885,13 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l) switch (type) { case BTRFS_INODE_ITEM_KEY: ii = btrfs_item_ptr(l, i, struct btrfs_inode_item); - printf("\t\tinode generation %llu transid %llu size %llu block group %llu mode %o links %u uid %u gid %u rdev %llu flags 0x%llx\n", + printf("\t\tinode generation %llu transid %llu size %llu nbytes %llu\n" + "\t\tblock group %llu mode %o links %u uid %u gid %u\n" + "\t\trdev %llu flags 0x%llx\n", (unsigned long long)btrfs_inode_generation(l, ii), (unsigned long long)btrfs_inode_transid(l, ii), (unsigned long long)btrfs_inode_size(l, ii), + (unsigned long long)btrfs_inode_nbytes(l, ii), (unsigned long long)btrfs_inode_block_group(l,ii), btrfs_inode_mode(l, ii), btrfs_inode_nlink(l, ii), @@ -942,6 +989,18 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l) (unsigned long long)btrfs_block_group_chunk_objectid(&bg_item), flags_str); break; + case BTRFS_FREE_SPACE_INFO_KEY: + free_info = btrfs_item_ptr(l, i, struct btrfs_free_space_info); + printf("\t\tfree space info extent count %u flags %u\n", + (unsigned)btrfs_free_space_extent_count(l, free_info), + (unsigned)btrfs_free_space_flags(l, free_info)); + break; + case BTRFS_FREE_SPACE_EXTENT_KEY: + printf("\t\tfree space extent\n"); + break; + case BTRFS_FREE_SPACE_BITMAP_KEY: + printf("\t\tfree space bitmap\n"); + break; case BTRFS_CHUNK_ITEM_KEY: print_chunk(l, btrfs_item_ptr(l, i, struct btrfs_chunk)); break; @@ -978,7 +1037,7 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l) btrfs_qgroup_status_generation(l, qg_status), flags_str, (unsigned long long) - btrfs_qgroup_status_scan(l, qg_status)); + btrfs_qgroup_status_rescan(l, qg_status)); break; case BTRFS_QGROUP_RELATION_KEY: break; @@ -1059,7 +1118,7 @@ void btrfs_print_tree(struct btrfs_root *root, struct extent_buffer *eb, int fol (unsigned long long)btrfs_header_owner(eb)); print_uuids(eb); fflush(stdout); - size = btrfs_level_size(root, btrfs_header_level(eb) - 1); + size = root->nodesize; for (i = 0; i < nr; i++) { u64 blocknr = btrfs_node_blockptr(eb, i); btrfs_node_key(eb, &disk_key, i);