+static void print_dev_stats(struct extent_buffer *eb,
+ struct btrfs_dev_stats_item *stats, u32 size)
+{
+ int i;
+ u32 known = BTRFS_DEV_STAT_VALUES_MAX * sizeof(__le64);
+ __le64 *values = btrfs_dev_stats_values(eb, stats);
+
+ printf("\t\tdevice stats\n");
+ printf("\t\twrite_errs %llu read_errs %llu flush_errs %llu corruption_errs %llu generation %llu\n",
+ (unsigned long long)le64_to_cpu(values[BTRFS_DEV_STAT_WRITE_ERRS]),
+ (unsigned long long)le64_to_cpu(values[BTRFS_DEV_STAT_READ_ERRS]),
+ (unsigned long long)le64_to_cpu(values[BTRFS_DEV_STAT_FLUSH_ERRS]),
+ (unsigned long long)le64_to_cpu(values[BTRFS_DEV_STAT_CORRUPTION_ERRS]),
+ (unsigned long long)le64_to_cpu(values[BTRFS_DEV_STAT_GENERATION_ERRS]));
+
+ if (known < size) {
+ printf("\t\tunknown stats item bytes %u", size - known);
+ for (i = BTRFS_DEV_STAT_VALUES_MAX; i * sizeof(__le64) < size; i++) {
+ printf("\t\tunknown item %u offset %lu value %llu\n",
+ i, i * sizeof(__le64),
+ (unsigned long long)le64_to_cpu(values[i]));
+ }
+ }
+}
+