summaryrefslogtreecommitdiff
path: root/cmds-device.c
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2016-12-08 19:01:00 +0100
committerDavid Sterba <dsterba@suse.com>2016-12-14 15:06:36 +0100
commit9468d9285ad5542855ae2963995f31036b9f943e (patch)
tree18f7b10fcac77acd0d580d78e03d1a0226fccf49 /cmds-device.c
parent76be45599a9ecffb0c33f965c44a561ffef50edf (diff)
btrfs-progs: dev stats: use table based printing of items
Fewer lines, less code. Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'cmds-device.c')
-rw-r--r--cmds-device.c66
1 files changed, 23 insertions, 43 deletions
diff --git a/cmds-device.c b/cmds-device.c
index a40b6166..aeaaa1d9 100644
--- a/cmds-device.c
+++ b/cmds-device.c
@@ -448,6 +448,19 @@ static int cmd_device_stats(int argc, char **argv)
err |= 1;
} else {
char *canonical_path;
+ int j;
+ static const struct {
+ const char name[32];
+ u64 num;
+ } dev_stats[] = {
+ { "write_io_errs", BTRFS_DEV_STAT_WRITE_ERRS },
+ { "read_io_errs", BTRFS_DEV_STAT_READ_ERRS },
+ { "flush_io_errs", BTRFS_DEV_STAT_FLUSH_ERRS },
+ { "corruption_errs",
+ BTRFS_DEV_STAT_CORRUPTION_ERRS },
+ { "generation_errs",
+ BTRFS_DEV_STAT_GENERATION_ERRS },
+ };
canonical_path = canonicalize_path(path);
@@ -462,50 +475,17 @@ static int cmd_device_stats(int argc, char **argv)
"devid:%llu", args.devid);
}
- if (args.nr_items >= BTRFS_DEV_STAT_WRITE_ERRS + 1) {
- printf("[%s].write_io_errs %llu\n",
- canonical_path,
- (unsigned long long) args.values[
- BTRFS_DEV_STAT_WRITE_ERRS]);
- if ((status == 1) && (args.values[BTRFS_DEV_STAT_WRITE_ERRS] > 0)) {
+ for (j = 0; j < ARRAY_SIZE(dev_stats); j++) {
+ /* We got fewer items than we know */
+ if (args.nr_items < dev_stats[j].num + 1)
+ continue;
+ printf("[%s].%-16s %llu\n", canonical_path,
+ dev_stats[j].name,
+ (unsigned long long)
+ args.values[dev_stats[j].num]);
+ if ((status == 1)
+ && (args.values[dev_stats[j].num] > 0))
err |= 64;
- }
- }
- if (args.nr_items >= BTRFS_DEV_STAT_READ_ERRS + 1) {
- printf("[%s].read_io_errs %llu\n",
- canonical_path,
- (unsigned long long) args.values[
- BTRFS_DEV_STAT_READ_ERRS]);
- if ((status == 1) && (args.values[BTRFS_DEV_STAT_READ_ERRS] > 0)) {
- err |= 64;
- }
- }
- if (args.nr_items >= BTRFS_DEV_STAT_FLUSH_ERRS + 1) {
- printf("[%s].flush_io_errs %llu\n",
- canonical_path,
- (unsigned long long) args.values[
- BTRFS_DEV_STAT_FLUSH_ERRS]);
- if ((status == 1) && (args.values[BTRFS_DEV_STAT_FLUSH_ERRS] > 0)) {
- err |= 64;
- }
- }
- if (args.nr_items >= BTRFS_DEV_STAT_CORRUPTION_ERRS + 1) {
- printf("[%s].corruption_errs %llu\n",
- canonical_path,
- (unsigned long long) args.values[
- BTRFS_DEV_STAT_CORRUPTION_ERRS]);
- if ((status == 1) && (args.values[BTRFS_DEV_STAT_CORRUPTION_ERRS] > 0)) {
- err |= 64;
- }
- }
- if (args.nr_items >= BTRFS_DEV_STAT_GENERATION_ERRS + 1) {
- printf("[%s].generation_errs %llu\n",
- canonical_path,
- (unsigned long long) args.values[
- BTRFS_DEV_STAT_GENERATION_ERRS]);
- if ((status == 1) && (args.values[BTRFS_DEV_STAT_GENERATION_ERRS] > 0)) {
- err |= 64;
- }
}
free(canonical_path);