+static void print_qgroup_limit(struct extent_buffer *eb, int slot)
+{
+ struct btrfs_qgroup_limit_item *qg_limit;
+
+ qg_limit = btrfs_item_ptr(eb, slot, struct btrfs_qgroup_limit_item);
+ printf("\t\tflags %llx\n"
+ "\t\tmax_referenced %lld max_exclusive %lld\n"
+ "\t\trsv_referenced %lld rsv_exclusive %lld\n",
+ (unsigned long long)btrfs_qgroup_limit_flags(eb, qg_limit),
+ (long long)btrfs_qgroup_limit_max_referenced(eb, qg_limit),
+ (long long)btrfs_qgroup_limit_max_exclusive(eb, qg_limit),
+ (long long)btrfs_qgroup_limit_rsv_referenced(eb, qg_limit),
+ (long long)btrfs_qgroup_limit_rsv_exclusive(eb, qg_limit));
+}
+
+static void print_persistent_item(struct extent_buffer *eb, void *ptr,
+ u32 item_size, u64 objectid, u64 offset)
+{
+ printf("\t\tpersistent item objectid ");
+ print_objectid(stdout, objectid, BTRFS_PERSISTENT_ITEM_KEY);
+ printf(" offset %llu\n", (unsigned long long)offset);
+ switch (objectid) {
+ case BTRFS_DEV_STATS_OBJECTID:
+ print_dev_stats(eb, ptr, item_size);
+ break;
+ default:
+ printf("\t\tunknown persistent item objectid %llu\n", objectid);
+ }
+}
+
+static void print_temporary_item(struct extent_buffer *eb, void *ptr,
+ u64 objectid, u64 offset)
+{
+ printf("\t\ttemporary item objectid ");
+ print_objectid(stdout, objectid, BTRFS_TEMPORARY_ITEM_KEY);
+ printf(" offset %llu\n", (unsigned long long)offset);
+ switch (objectid) {
+ case BTRFS_BALANCE_OBJECTID:
+ print_balance_item(eb, ptr);
+ break;
+ default:
+ printf("\t\tunknown temporary item objectid %llu\n", objectid);
+ }
+}
+
+static void print_extent_csum(struct extent_buffer *eb,
+ struct btrfs_fs_info *fs_info, u32 item_size, u64 start)
+{
+ u32 size;
+
+ size = (item_size / btrfs_super_csum_size(fs_info->super_copy)) *
+ fs_info->sectorsize;
+ printf("\t\trange start %llu end %llu length %u\n",
+ (unsigned long long)start,
+ (unsigned long long)start + size, size);
+}
+