diff options
author | Fan Chengniang <fancn.fnst@cn.fujitsu.com> | 2015-01-19 15:18:18 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2015-01-21 18:13:18 +0100 |
commit | 4d13434539052dcdcc738b68535d5e9bdb116dda (patch) | |
tree | 2007d2a6a3163e1f53684a1b7bfbc25855bf88ca /qgroup.c | |
parent | 07ce7005fc81289eb4c7dde7d601be08c977b92c (diff) | |
download | btrfs-progs-4d13434539052dcdcc738b68535d5e9bdb116dda.tar.gz |
btrfs-progs: make btrfs qgroups show human readable sizes
add --raw, --si, --iec, --kbytes, --mbytes, --gbytes, --tbytes options
make columns which show sizes align to right. Others aligned to left.
example:
qgroupid rfer excl max_rfer max_excl parent child
-------- ---- ---- -------- -------- ------ -----
0/5 299.58MiB 299.58MiB 300.00MiB 300.00MiB 1/1 ---
0/265 299.58MiB 16.00KiB 400.00MiB 0.00B 1/1 ---
0/266 299.58MiB 16.00KiB 350.00MiB 0.00B --- ---
1/1 599.16MiB 299.59MiB 800.00MiB 0.00B --- 0/5,0/265
Signed-off-by: Fan Chengniang <fancn.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Diffstat (limited to 'qgroup.c')
-rw-r--r-- | qgroup.c | 77 |
1 files changed, 52 insertions, 25 deletions
@@ -20,6 +20,7 @@ #include <sys/ioctl.h> #include "ctree.h" #include "ioctl.h" +#include "utils.h" #define BTRFS_QGROUP_NFILTERS_INCREASE (2 * BTRFS_QGROUP_FILTER_MAX) #define BTRFS_QGROUP_NCOMPS_INCREASE (2 * BTRFS_QGROUP_COMP_MAX) @@ -80,53 +81,62 @@ static struct { char *name; char *column_name; int need_print; + unsigned unit_mode; int max_len; } btrfs_qgroup_columns[] = { { .name = "qgroupid", .column_name = "Qgroupid", .need_print = 1, + .unit_mode = 0, .max_len = 8, }, { .name = "rfer", .column_name = "Rfer", .need_print = 1, - .max_len = 4, + .unit_mode = UNITS_DEFAULT, + .max_len = 12, }, { .name = "excl", .column_name = "Excl", .need_print = 1, - .max_len = 4, + .unit_mode = UNITS_DEFAULT, + .max_len = 12, }, { .name = "max_rfer", .column_name = "Max_rfer", .need_print = 0, - .max_len = 8, + .unit_mode = UNITS_DEFAULT, + .max_len = 12, }, { .name = "max_excl", .column_name = "Max_excl", .need_print = 0, - .max_len = 8, + .unit_mode = UNITS_DEFAULT, + .max_len = 12, }, { .name = "parent", .column_name = "Parent", .need_print = 0, + .unit_mode = 0, .max_len = 7, }, { .name = "child", .column_name = "Child", .need_print = 0, + .unit_mode = 0, .max_len = 5, }, { .name = NULL, .column_name = NULL, .need_print = 0, + .unit_mode = 0, }, }; @@ -147,6 +157,14 @@ void btrfs_qgroup_setup_print_column(enum btrfs_qgroup_column_enum column) btrfs_qgroup_columns[i].need_print = 1; } +void btrfs_qgroup_setup_units(unsigned unit_mode) +{ + btrfs_qgroup_columns[BTRFS_QGROUP_RFER].unit_mode = unit_mode; + btrfs_qgroup_columns[BTRFS_QGROUP_EXCL].unit_mode = unit_mode; + btrfs_qgroup_columns[BTRFS_QGROUP_MAX_RFER].unit_mode = unit_mode; + btrfs_qgroup_columns[BTRFS_QGROUP_MAX_EXCL].unit_mode = unit_mode; +} + static int print_parent_column(struct btrfs_qgroup *qgroup) { struct btrfs_qgroup_list *list = NULL; @@ -194,6 +212,8 @@ static void print_qgroup_column(struct btrfs_qgroup *qgroup, { BUG_ON(column >= BTRFS_QGROUP_ALL || column < 0); int len; + int unit_mode = btrfs_qgroup_columns[column].unit_mode; + int max_len = btrfs_qgroup_columns[column].max_len; switch (column) { @@ -203,24 +223,20 @@ static void print_qgroup_column(struct btrfs_qgroup *qgroup, print_qgroup_column_add_blank(BTRFS_QGROUP_QGROUPID, len); break; case BTRFS_QGROUP_RFER: - len = printf("%llu", qgroup->rfer); - print_qgroup_column_add_blank(BTRFS_QGROUP_RFER, len); + len = printf("%*s", max_len, pretty_size_mode(qgroup->rfer, unit_mode)); break; case BTRFS_QGROUP_EXCL: - len = printf("%llu", qgroup->excl); - print_qgroup_column_add_blank(BTRFS_QGROUP_EXCL, len); + len = printf("%*s", max_len, pretty_size_mode(qgroup->excl, unit_mode)); break; case BTRFS_QGROUP_PARENT: len = print_parent_column(qgroup); print_qgroup_column_add_blank(BTRFS_QGROUP_PARENT, len); break; case BTRFS_QGROUP_MAX_RFER: - len = printf("%llu", qgroup->max_rfer); - print_qgroup_column_add_blank(BTRFS_QGROUP_MAX_RFER, len); + len = printf("%*s", max_len, pretty_size_mode(qgroup->max_rfer, unit_mode)); break; case BTRFS_QGROUP_MAX_EXCL: - len = printf("%llu", qgroup->max_excl); - print_qgroup_column_add_blank(BTRFS_QGROUP_MAX_EXCL, len); + len = printf("%*s", max_len, pretty_size_mode(qgroup->max_excl, unit_mode)); break; case BTRFS_QGROUP_CHILD: len = print_child_column(qgroup); @@ -250,30 +266,41 @@ static void print_table_head() { int i; int len; + int max_len; for (i = 0; i < BTRFS_QGROUP_ALL; i++) { + max_len = btrfs_qgroup_columns[i].max_len; if (!btrfs_qgroup_columns[i].need_print) continue; - printf("%s", btrfs_qgroup_columns[i].name); - len = btrfs_qgroup_columns[i].max_len - - strlen(btrfs_qgroup_columns[i].name); - while (len--) - printf(" "); + if ((i == BTRFS_QGROUP_QGROUPID) | (i == BTRFS_QGROUP_PARENT) | + (i == BTRFS_QGROUP_CHILD)) + printf("%-*s", max_len, btrfs_qgroup_columns[i].name); + else + printf("%*s", max_len, btrfs_qgroup_columns[i].name); printf(" "); } printf("\n"); for (i = 0; i < BTRFS_QGROUP_ALL; i++) { + max_len = btrfs_qgroup_columns[i].max_len; if (!btrfs_qgroup_columns[i].need_print) continue; - - len = strlen(btrfs_qgroup_columns[i].name); - while (len--) - printf("-"); - len = btrfs_qgroup_columns[i].max_len - - strlen(btrfs_qgroup_columns[i].name); + if ((i == BTRFS_QGROUP_QGROUPID) | (i == BTRFS_QGROUP_PARENT) | + (i == BTRFS_QGROUP_CHILD)) { + len = strlen(btrfs_qgroup_columns[i].name); + while (len--) + printf("-"); + len = max_len - strlen(btrfs_qgroup_columns[i].name); + while (len--) + printf(" "); + } else { + len = max_len - strlen(btrfs_qgroup_columns[i].name); + while (len--) + printf(" "); + len = strlen(btrfs_qgroup_columns[i].name); + while (len--) + printf("-"); + } printf(" "); - while (len--) - printf(" "); } printf("\n"); } |