btrfs-progs: fi usage, add switches to set output units
Same set of options as 'fi df': binary and decimal bases, human readable options etc. Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
parent
8e27f8ee91
commit
14e5f687fb
|
@ -21,6 +21,7 @@
|
|||
#include <sys/ioctl.h>
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "kerncompat.h"
|
||||
|
@ -844,31 +845,72 @@ out:
|
|||
}
|
||||
|
||||
const char * const cmd_filesystem_usage_usage[] = {
|
||||
"btrfs filesystem usage [-b][-t] <path> [<path>..]",
|
||||
"Show in which disk the chunks are allocated.",
|
||||
"",
|
||||
"-b\tSet byte as unit",
|
||||
"-T\tShow data in tabular format",
|
||||
"btrfs filesystem usage [options] <path> [<path>..]",
|
||||
"Show detailed information about internal filesystem usage .",
|
||||
"-b|--raw raw numbers in bytes",
|
||||
"-h human friendly numbers, base 1024 (default)",
|
||||
"-H human friendly numbers, base 1000",
|
||||
"--iec use 1024 as a base (KiB, MiB, GiB, TiB)",
|
||||
"--si use 1000 as a base (kB, MB, GB, TB)",
|
||||
"-k|--kbytes show sizes in KiB, or kB with --si",
|
||||
"-m|--mbytes show sizes in MiB, or MB with --si",
|
||||
"-g|--gbytes show sizes in GiB, or GB with --si",
|
||||
"-t|--tbytes show sizes in TiB, or TB with --si",
|
||||
"-T show data in tabular format",
|
||||
NULL
|
||||
};
|
||||
|
||||
int cmd_filesystem_usage(int argc, char **argv)
|
||||
{
|
||||
int mode = UNITS_HUMAN;
|
||||
unsigned unit_mode = UNITS_DEFAULT;
|
||||
int ret = 0;
|
||||
int i, more_than_one = 0;
|
||||
int tabular = 0;
|
||||
|
||||
optind = 1;
|
||||
while (1) {
|
||||
int c = getopt(argc, argv, "bT");
|
||||
int long_index;
|
||||
static const struct option long_options[] = {
|
||||
{ "raw", no_argument, NULL, 'b'},
|
||||
{ "kbytes", no_argument, NULL, 'k'},
|
||||
{ "mbytes", no_argument, NULL, 'm'},
|
||||
{ "gbytes", no_argument, NULL, 'g'},
|
||||
{ "tbytes", no_argument, NULL, 't'},
|
||||
{ "si", no_argument, NULL, 256},
|
||||
{ "iec", no_argument, NULL, 257},
|
||||
};
|
||||
int c = getopt_long(argc, argv, "bhHkmgtT", long_options,
|
||||
&long_index);
|
||||
|
||||
if (c < 0)
|
||||
break;
|
||||
|
||||
switch (c) {
|
||||
case 'b':
|
||||
mode = UNITS_RAW;
|
||||
unit_mode = UNITS_RAW;
|
||||
break;
|
||||
case 'k':
|
||||
units_set_base(&unit_mode, UNITS_KBYTES);
|
||||
break;
|
||||
case 'm':
|
||||
units_set_base(&unit_mode, UNITS_MBYTES);
|
||||
break;
|
||||
case 'g':
|
||||
units_set_base(&unit_mode, UNITS_GBYTES);
|
||||
break;
|
||||
case 't':
|
||||
units_set_base(&unit_mode, UNITS_TBYTES);
|
||||
break;
|
||||
case 'h':
|
||||
unit_mode = UNITS_HUMAN_BINARY;
|
||||
break;
|
||||
case 'H':
|
||||
unit_mode = UNITS_HUMAN_DECIMAL;
|
||||
break;
|
||||
case 256:
|
||||
units_set_mode(&unit_mode, UNITS_DECIMAL);
|
||||
break;
|
||||
case 257:
|
||||
units_set_mode(&unit_mode, UNITS_BINARY);
|
||||
break;
|
||||
case 'T':
|
||||
tabular = 1;
|
||||
|
@ -905,12 +947,12 @@ int cmd_filesystem_usage(int argc, char **argv)
|
|||
goto cleanup;
|
||||
|
||||
ret = print_filesystem_usage_overall(fd, chunkinfo, chunkcount,
|
||||
devinfo, devcount, argv[i], mode);
|
||||
devinfo, devcount, argv[i], unit_mode);
|
||||
if (ret)
|
||||
goto cleanup;
|
||||
printf("\n");
|
||||
ret = print_filesystem_usage_by_chunk(fd, chunkinfo, chunkcount,
|
||||
devinfo, devcount, argv[i], mode, tabular);
|
||||
devinfo, devcount, argv[i], unit_mode, tabular);
|
||||
cleanup:
|
||||
close_file_or_dir(fd, dirstream);
|
||||
free(chunkinfo);
|
||||
|
|
Loading…
Reference in New Issue