* [patch v2 1/4] Update pretty-printer for different systems of counting multiples.
2010-10-21 19:01 [patch v2 0/4] Size reporting in userspace tools Hugo Mills
@ 2010-10-21 19:01 ` Hugo Mills
2010-10-21 19:01 ` [patch v2 2/4] Add an option to show ISO, binary or raw bytes counts using df Hugo Mills
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Hugo Mills @ 2010-10-21 19:01 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
Make the pretty-printer for data sizes capable of printing in ISO
(powers of 10^3), binary (powers of 2^10) or raw (a simple byte
count).
Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
---
btrfs-show.c | 7 ++++---
btrfs_cmds.c | 13 ++++++++-----
mkfs.c | 3 ++-
utils.c | 48 +++++++++++++++++++++++++++++++++---------------
utils.h | 7 ++++++-
5 files changed, 53 insertions(+), 25 deletions(-)
Index: btrfs-progs-unstable/btrfs-show.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs-show.c 2010-10-09 15:39:09.000000000 +0100
+++ btrfs-progs-unstable/btrfs-show.c 2010-10-20 19:20:02.000000000 +0100
@@ -69,7 +69,8 @@
else
printf("Label: none ");
- super_bytes_used = pretty_sizes(device->super_bytes_used);
+ super_bytes_used = pretty_sizes(device->super_bytes_used,
+ PRETTY_SIZE_RAW);
total = device->total_devs;
printf(" uuid: %s\n\tTotal devices %llu FS bytes used %s\n", uuidbuf,
@@ -81,8 +82,8 @@
char *total_bytes;
char *bytes_used;
device = list_entry(cur, struct btrfs_device, dev_list);
- total_bytes = pretty_sizes(device->total_bytes);
- bytes_used = pretty_sizes(device->bytes_used);
+ total_bytes = pretty_sizes(device->total_bytes, PRETTY_SIZE_RAW);
+ bytes_used = pretty_sizes(device->bytes_used, PRETTY_SIZE_RAW);
printf("\tdevid %4llu size %s used %s path %s\n",
(unsigned long long)device->devid,
total_bytes, bytes_used, device->name);
Index: btrfs-progs-unstable/btrfs_cmds.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-09 15:39:09.000000000 +0100
+++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-20 19:19:20.000000000 +0100
@@ -634,7 +634,8 @@
else
printf("Label: none ");
- super_bytes_used = pretty_sizes(device->super_bytes_used);
+ super_bytes_used = pretty_sizes(device->super_bytes_used,
+ PRETTY_SIZE_RAW);
total = device->total_devs;
printf(" uuid: %s\n\tTotal devices %llu FS bytes used %s\n", uuidbuf,
@@ -646,8 +647,8 @@
char *total_bytes;
char *bytes_used;
device = list_entry(cur, struct btrfs_device, dev_list);
- total_bytes = pretty_sizes(device->total_bytes);
- bytes_used = pretty_sizes(device->bytes_used);
+ total_bytes = pretty_sizes(device->total_bytes, PRETTY_SIZE_RAW);
+ bytes_used = pretty_sizes(device->bytes_used, PRETTY_SIZE_RAW);
printf("\tdevid %4llu size %s used %s path %s\n",
(unsigned long long)device->devid,
total_bytes, bytes_used, device->name);
@@ -913,8 +914,10 @@
written += 8;
}
- total_bytes = pretty_sizes(sargs->spaces[i].total_bytes);
- used_bytes = pretty_sizes(sargs->spaces[i].used_bytes);
+ total_bytes = pretty_sizes(sargs->spaces[i].total_bytes,
+ PRETTY_SIZE_RAW);
+ used_bytes = pretty_sizes(sargs->spaces[i].used_bytes,
+ PRETTY_SIZE_RAW);
printf("%s: total=%s, used=%s\n", description, total_bytes,
used_bytes);
}
Index: btrfs-progs-unstable/mkfs.c
===================================================================
--- btrfs-progs-unstable.orig/mkfs.c 2010-10-09 15:39:09.000000000 +0100
+++ btrfs-progs-unstable/mkfs.c 2010-10-17 19:35:08.000000000 +0100
@@ -524,7 +524,8 @@
printf("fs created label %s on %s\n\tnodesize %u leafsize %u "
"sectorsize %u size %s\n",
label, first_file, nodesize, leafsize, sectorsize,
- pretty_sizes(btrfs_super_total_bytes(&root->fs_info->super_copy)));
+ pretty_sizes(btrfs_super_total_bytes(&root->fs_info->super_copy),
+ PRETTY_SIZE_BINARY));
printf("%s\n", BTRFS_BUILD_VERSION);
btrfs_commit_transaction(trans, root);
Index: btrfs-progs-unstable/utils.c
===================================================================
--- btrfs-progs-unstable.orig/utils.c 2010-10-09 15:39:09.000000000 +0100
+++ btrfs-progs-unstable/utils.c 2010-10-17 19:35:08.000000000 +0100
@@ -966,30 +966,48 @@
return ret;
}
-static char *size_strs[] = { "", "KB", "MB", "GB", "TB",
+static char *bin_size_strs[] = { "", "KiB", "MiB", "GiB", "TiB",
+ "PiB", "EiB", "ZiB", "YiB"};
+static char *iso_size_strs[] = { "", "kB", "MB", "GB", "TB",
"PB", "EB", "ZB", "YB"};
-char *pretty_sizes(u64 size)
+char *pretty_sizes(u64 size, int format)
{
int num_divs = 0;
u64 last_size = size;
u64 fract_size = size;
float fraction;
char *pretty;
+ int divisor = 1024;
+ char** size_strs = bin_size_strs;
- while(size > 0) {
- fract_size = last_size;
- last_size = size;
- size /= 1024;
- num_divs++;
+ if(format == PRETTY_SIZE_RAW) {
+ pretty = malloc(21);
+ sprintf(pretty, "%llu", size);
+ } else {
+ if(format == PRETTY_SIZE_ISO) {
+ divisor = 1000;
+ size_strs = iso_size_strs;
+ } else if(format == PRETTY_SIZE_BINARY) {
+ divisor = 1024;
+ size_strs = bin_size_strs;
+ }
+
+ while(size > 0) {
+ fract_size = last_size;
+ last_size = size;
+ size /= divisor;
+ num_divs++;
+ }
+ if (num_divs == 0)
+ num_divs = 1;
+ if (num_divs > ARRAY_SIZE(bin_size_strs))
+ return NULL;
+
+ fraction = (float)fract_size / divisor;
+ pretty = malloc(16);
+ sprintf(pretty, "%.2f%s", fraction, size_strs[num_divs-1]);
}
- if (num_divs == 0)
- num_divs = 1;
- if (num_divs > ARRAY_SIZE(size_strs))
- return NULL;
-
- fraction = (float)fract_size / 1024;
- pretty = malloc(16);
- sprintf(pretty, "%.2f%s", fraction, size_strs[num_divs-1]);
+
return pretty;
}
Index: btrfs-progs-unstable/utils.h
===================================================================
--- btrfs-progs-unstable.orig/utils.h 2010-10-09 15:39:09.000000000 +0100
+++ btrfs-progs-unstable/utils.h 2010-10-17 19:35:08.000000000 +0100
@@ -21,6 +21,11 @@
#define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024)
+/* Constants for pretty_size() format parameter */
+#define PRETTY_SIZE_RAW 0
+#define PRETTY_SIZE_ISO 1
+#define PRETTY_SIZE_BINARY 2
+
int make_btrfs(int fd, const char *device, const char *label,
u64 blocks[6], u64 num_bytes, u32 nodesize,
u32 leafsize, u32 sectorsize, u32 stripesize);
@@ -39,5 +44,5 @@
int check_mounted(const char *devicename);
int btrfs_device_already_in_root(struct btrfs_root *root, int fd,
int super_offset);
-char *pretty_sizes(u64 size);
+char *pretty_sizes(u64 size, int format);
#endif
--
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
--- I spent most of my money on drink, women and fast cars. The ---
rest I wasted. -- James Hunt
^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch v2 2/4] Add an option to show ISO, binary or raw bytes counts using df.
2010-10-21 19:01 [patch v2 0/4] Size reporting in userspace tools Hugo Mills
2010-10-21 19:01 ` [patch v2 1/4] Update pretty-printer for different systems of counting multiples Hugo Mills
@ 2010-10-21 19:01 ` Hugo Mills
2010-10-22 7:55 ` Goffredo Baroncelli
2010-10-21 19:01 ` [patch v2 3/4] Add an option to show ISO, binary or raw bytes counts using show Hugo Mills
2010-10-21 19:01 ` [patch v2 4/4] Add an option to show ISO, binary or raw bytes counts using btrfs-show Hugo Mills
3 siblings, 1 reply; 7+ messages in thread
From: Hugo Mills @ 2010-10-21 19:01 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
Change btrfs filesystem df to allow the user to control the scales
used for sizes in the output.
Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
---
btrfs.c | 6 +++---
btrfs_cmds.c | 42 ++++++++++++++++++++++++++++++++++++------
man/btrfs.8.in | 8 ++++++++
3 files changed, 47 insertions(+), 9 deletions(-)
Index: btrfs-progs-unstable/btrfs.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs.c 2010-10-20 19:12:18.000000000 +0100
+++ btrfs-progs-unstable/btrfs.c 2010-10-20 19:48:34.000000000 +0100
@@ -87,9 +87,9 @@
"Show the info of a btrfs filesystem. If no <uuid> or <label>\n"
"is passed, info of all the btrfs filesystem are shown."
},
- { do_df_filesystem, 1,
- "filesystem df", "<path>\n"
- "Show space usage information for a mount point\n."
+ { do_df_filesystem, -1,
+ "filesystem df", "[options] <path>\n"
+ "Show space usage information for a mount point."
},
{ do_balance, 1,
"filesystem balance", "<path>\n"
Index: btrfs-progs-unstable/btrfs_cmds.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-20 19:19:20.000000000 +0100
+++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-20 19:58:48.000000000 +0100
@@ -14,7 +14,6 @@
* Boston, MA 021110-1307, USA.
*/
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -28,6 +27,7 @@
#include <limits.h>
#include <uuid/uuid.h>
#include <ctype.h>
+#include <getopt.h>
#undef ULONG_MAX
@@ -835,13 +835,45 @@
return 0;
}
+const struct option df_options[] = {
+ { "human-readable", 0, NULL, 'h' },
+ { "si", 0, NULL, 'H' },
+ { NULL, 0, NULL, 0 }
+};
+
int do_df_filesystem(int nargs, char **argv)
{
struct btrfs_ioctl_space_args *sargs;
u64 count = 0, i;
int ret;
int fd;
- char *path = argv[1];
+ char *path;
+ int format = PRETTY_SIZE_RAW;
+
+ optind = 1;
+ while(1) {
+ int c = getopt_long(nargs, argv, "hH", df_options, NULL);
+ if (c < 0)
+ break;
+ switch(c) {
+ case 'h':
+ format = PRETTY_SIZE_BINARY;
+ break;
+ case 'H':
+ format = PRETTY_SIZE_ISO;
+ break;
+ default:
+ fprintf(stderr, "Invalid arguments for df\n");
+ free(argv);
+ return 1;
+ }
+ }
+ if (nargs - optind != 1) {
+ fprintf(stderr, "No path given for df\n");
+ free(argv);
+ return 1;
+ }
+ path = argv[optind];
fd = open_file_or_dir(path);
if (fd < 0) {
@@ -914,10 +946,8 @@
written += 8;
}
- total_bytes = pretty_sizes(sargs->spaces[i].total_bytes,
- PRETTY_SIZE_RAW);
- used_bytes = pretty_sizes(sargs->spaces[i].used_bytes,
- PRETTY_SIZE_RAW);
+ total_bytes = pretty_sizes(sargs->spaces[i].total_bytes, format);
+ used_bytes = pretty_sizes(sargs->spaces[i].used_bytes, format);
printf("%s: total=%s, used=%s\n", description, total_bytes,
used_bytes);
}
Index: btrfs-progs-unstable/man/btrfs.8.in
===================================================================
--- btrfs-progs-unstable.orig/man/btrfs.8.in 2010-10-20 19:23:36.000000000 +0100
+++ btrfs-progs-unstable/man/btrfs.8.in 2010-10-20 19:28:14.000000000 +0100
@@ -21,6 +21,8 @@
.PP
\fBbtrfs\fP \fBfilesystem resize\fP\fI [+/\-]<size>[gkm]|max <filesystem>\fP
.PP
+\fBbtrfs\fP \fBfilesystem df\fP\fI [options] <path>\fP
+.PP
\fBbtrfs\fP \fBdevice scan\fP\fI [<device> [<device>..]]\fP
.PP
\fBbtrfs\fP \fBdevice show\fP\fI <dev>|<label> [<dev>|<label>...]\fP
@@ -143,6 +145,12 @@
passed, \fBbtrfs\fR show info of all the btrfs filesystem.
.TP
+\fBfilesystem df\fR [options] <path>\fR
+Show the amount of space used on this filesystem, in bytes. Options:
+-h, --human-readable Use powers of 2^10 (1024) to report sizes.
+-H, --si Use powers of 10^3 (1000) to report sizes, in SI multiples.
+.TP
+
\fBdevice balance\fR \fI<path>\fR
Balance the chunks of the filesystem identified by \fI<path>\fR
across the devices.
--
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
--- I spent most of my money on drink, women and fast cars. The ---
rest I wasted. -- James Hunt
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch v2 2/4] Add an option to show ISO, binary or raw bytes counts using df.
2010-10-21 19:01 ` [patch v2 2/4] Add an option to show ISO, binary or raw bytes counts using df Hugo Mills
@ 2010-10-22 7:55 ` Goffredo Baroncelli
0 siblings, 0 replies; 7+ messages in thread
From: Goffredo Baroncelli @ 2010-10-22 7:55 UTC (permalink / raw)
To: Hugo Mills; +Cc: linux-btrfs
On Thursday, 21 October, 2010, Hugo Mills wrote:
> Change btrfs filesystem df to allow the user to control the scales
> used for sizes in the output.
>
> Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
> ---
> btrfs.c | 6 +++---
> btrfs_cmds.c | 42 ++++++++++++++++++++++++++++++++++++------
> man/btrfs.8.in | 8 ++++++++
> 3 files changed, 47 insertions(+), 9 deletions(-)
>
> Index: btrfs-progs-unstable/btrfs.c
> ===================================================================
> --- btrfs-progs-unstable.orig/btrfs.c 2010-10-20 19:12:18.000000000 +0100
> +++ btrfs-progs-unstable/btrfs.c 2010-10-20 19:48:34.000000000 +0100
> @@ -87,9 +87,9 @@
> "Show the info of a btrfs filesystem. If no <uuid> or
<label>\n"
> "is passed, info of all the btrfs filesystem are shown."
> },
> - { do_df_filesystem, 1,
> - "filesystem df", "<path>\n"
> - "Show space usage information for a mount point\n."
> + { do_df_filesystem, -1,
> + "filesystem df", "[options] <path>\n"
> + "Show space usage information for a mount point."
> },
Please, explicit the option on the "short help" like
> + "filesystem df", "[-h|-H|--si|--human-readable] <path>\n"
> { do_balance, 1,
> "filesystem balance", "<path>\n"
> Index: btrfs-progs-unstable/btrfs_cmds.c
> ===================================================================
> --- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-20 19:19:20.000000000
+0100
> +++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-20 19:58:48.000000000 +0100
> @@ -14,7 +14,6 @@
> * Boston, MA 021110-1307, USA.
> */
>
> -
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> @@ -28,6 +27,7 @@
> #include <limits.h>
> #include <uuid/uuid.h>
> #include <ctype.h>
> +#include <getopt.h>
>
> #undef ULONG_MAX
>
> @@ -835,13 +835,45 @@
> return 0;
> }
>
> +const struct option df_options[] = {
> + { "human-readable", 0, NULL, 'h' },
> + { "si", 0, NULL, 'H' },
> + { NULL, 0, NULL, 0 }
> +};
> +
> int do_df_filesystem(int nargs, char **argv)
> {
> struct btrfs_ioctl_space_args *sargs;
> u64 count = 0, i;
> int ret;
> int fd;
> - char *path = argv[1];
> + char *path;
> + int format = PRETTY_SIZE_RAW;
> +
> + optind = 1;
> + while(1) {
> + int c = getopt_long(nargs, argv, "hH", df_options, NULL);
> + if (c < 0)
> + break;
> + switch(c) {
> + case 'h':
> + format = PRETTY_SIZE_BINARY;
> + break;
> + case 'H':
> + format = PRETTY_SIZE_ISO;
> + break;
> + default:
> + fprintf(stderr, "Invalid arguments for df\n");
> + free(argv);
> + return 1;
> + }
> + }
> + if (nargs - optind != 1) {
> + fprintf(stderr, "No path given for df\n");
> + free(argv);
> + return 1;
> + }
> + path = argv[optind];
>
> fd = open_file_or_dir(path);
> if (fd < 0) {
> @@ -914,10 +946,8 @@
> written += 8;
> }
>
> - total_bytes = pretty_sizes(sargs->spaces[i].total_bytes,
> -
PRETTY_SIZE_RAW);
> - used_bytes = pretty_sizes(sargs->spaces[i].used_bytes,
> -
PRETTY_SIZE_RAW);
> + total_bytes = pretty_sizes(sargs->spaces[i].total_bytes,
format);
> + used_bytes = pretty_sizes(sargs->spaces[i].used_bytes,
format);
> printf("%s: total=%s, used=%s\n", description, total_bytes,
> used_bytes);
> }
> Index: btrfs-progs-unstable/man/btrfs.8.in
> ===================================================================
> --- btrfs-progs-unstable.orig/man/btrfs.8.in 2010-10-20 19:23:36.000000000
+0100
> +++ btrfs-progs-unstable/man/btrfs.8.in 2010-10-20 19:28:14.000000000
+0100
> @@ -21,6 +21,8 @@
> .PP
> \fBbtrfs\fP \fBfilesystem resize\fP\fI [+/\-]<size>[gkm]|max
<filesystem>\fP
> .PP
> +\fBbtrfs\fP \fBfilesystem df\fP\fI [options] <path>\fP
> +.PP
The same here
> \fBbtrfs\fP \fBdevice scan\fP\fI [<device> [<device>..]]\fP
> .PP
> \fBbtrfs\fP \fBdevice show\fP\fI <dev>|<label> [<dev>|<label>...]\fP
> @@ -143,6 +145,12 @@
> passed, \fBbtrfs\fR show info of all the btrfs filesystem.
> .TP
>
> +\fBfilesystem df\fR [options] <path>\fR
The same here
> +Show the amount of space used on this filesystem, in bytes. Options:
> +-h, --human-readable Use powers of 2^10 (1024) to report sizes.
> +-H, --si Use powers of 10^3 (1000) to report sizes, in SI multiples.
> +.TP
> +
> \fBdevice balance\fR \fI<path>\fR
> Balance the chunks of the filesystem identified by \fI<path>\fR
> across the devices.
>
> --
> === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
> PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
> --- I spent most of my money on drink, women and fast cars. The ---
> rest I wasted. -- James Hunt
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijack@inwind.it>
Key fingerprint = 4769 7E51 5293 D36C 814E C054 BF04 F161 3DC5 0512
^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch v2 3/4] Add an option to show ISO, binary or raw bytes counts using show.
2010-10-21 19:01 [patch v2 0/4] Size reporting in userspace tools Hugo Mills
2010-10-21 19:01 ` [patch v2 1/4] Update pretty-printer for different systems of counting multiples Hugo Mills
2010-10-21 19:01 ` [patch v2 2/4] Add an option to show ISO, binary or raw bytes counts using df Hugo Mills
@ 2010-10-21 19:01 ` Hugo Mills
2010-10-22 7:57 ` Goffredo Baroncelli
2010-10-21 19:01 ` [patch v2 4/4] Add an option to show ISO, binary or raw bytes counts using btrfs-show Hugo Mills
3 siblings, 1 reply; 7+ messages in thread
From: Hugo Mills @ 2010-10-21 19:01 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
Change btrfs filesystem show to allow the user to control the scales
used for sizes in the output.
Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
---
btrfs.c | 2 +-
btrfs_cmds.c | 45 ++++++++++++++++++++++++++++++++++++++-------
man/btrfs.8.in | 10 ++++++++++
3 files changed, 49 insertions(+), 8 deletions(-)
Index: btrfs-progs-unstable/btrfs.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs.c 2010-10-20 20:03:37.000000000 +0100
+++ btrfs-progs-unstable/btrfs.c 2010-10-20 20:11:03.000000000 +0100
@@ -83,7 +83,7 @@
"will occupe all available space on the device."
},
{ do_show_filesystem, 999,
- "filesystem show", "[<uuid>|<label>]\n"
+ "filesystem show", "[options] [<uuid>|<label>]\n"
"Show the info of a btrfs filesystem. If no <uuid> or <label>\n"
"is passed, info of all the btrfs filesystem are shown."
},
Index: btrfs-progs-unstable/btrfs_cmds.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-20 20:03:37.000000000 +0100
+++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-20 20:08:00.000000000 +0100
@@ -617,7 +617,7 @@
return 0;
}
-static void print_one_uuid(struct btrfs_fs_devices *fs_devices)
+static void print_one_uuid(struct btrfs_fs_devices *fs_devices, int format)
{
char uuidbuf[37];
struct list_head *cur;
@@ -634,8 +634,7 @@
else
printf("Label: none ");
- super_bytes_used = pretty_sizes(device->super_bytes_used,
- PRETTY_SIZE_RAW);
+ super_bytes_used = pretty_sizes(device->super_bytes_used, format);
total = device->total_devs;
printf(" uuid: %s\n\tTotal devices %llu FS bytes used %s\n", uuidbuf,
@@ -647,8 +646,8 @@
char *total_bytes;
char *bytes_used;
device = list_entry(cur, struct btrfs_device, dev_list);
- total_bytes = pretty_sizes(device->total_bytes, PRETTY_SIZE_RAW);
- bytes_used = pretty_sizes(device->bytes_used, PRETTY_SIZE_RAW);
+ total_bytes = pretty_sizes(device->total_bytes, format);
+ bytes_used = pretty_sizes(device->bytes_used, format);
printf("\tdevid %4llu size %s used %s path %s\n",
(unsigned long long)device->devid,
total_bytes, bytes_used, device->name);
@@ -662,13 +661,45 @@
printf("\n");
}
+const struct option show_options[] = {
+ { "human-readable", 0, NULL, 'h' },
+ { "si", 0, NULL, 'H' },
+ { NULL, 0, NULL, 0 }
+};
+
int do_show_filesystem(int argc, char **argv)
{
struct list_head *all_uuids;
struct btrfs_fs_devices *fs_devices;
struct list_head *cur_uuid;
- char *search = argv[1];
+ char *search;
int ret;
+ int format = PRETTY_SIZE_RAW;
+
+ optind = 1;
+ while(1) {
+ int c = getopt_long(argc, argv, "hH", show_options, NULL);
+ if (c < 0)
+ break;
+ switch(c) {
+ case 'h':
+ format = PRETTY_SIZE_BINARY;
+ break;
+ case 'H':
+ format = PRETTY_SIZE_ISO;
+ break;
+ default:
+ fprintf(stderr, "Invalid arguments for show\n");
+ free(argv);
+ return 1;
+ }
+ }
+ if (argc - optind > 1) {
+ fprintf(stderr, "Too many arguments for show\n");
+ free(argv);
+ return 1;
+ }
+ search = argv[optind];
ret = btrfs_scan_one_dir("/dev", 0);
if (ret){
@@ -682,7 +713,7 @@
list);
if (search && uuid_search(fs_devices, search) == 0)
continue;
- print_one_uuid(fs_devices);
+ print_one_uuid(fs_devices, format);
}
printf("%s\n", BTRFS_BUILD_VERSION);
return 0;
Index: btrfs-progs-unstable/man/btrfs.8.in
===================================================================
--- btrfs-progs-unstable.orig/man/btrfs.8.in 2010-10-20 20:03:53.000000000 +0100
+++ btrfs-progs-unstable/man/btrfs.8.in 2010-10-20 20:08:15.000000000 +0100
@@ -23,6 +23,8 @@
.PP
\fBbtrfs\fP \fBfilesystem df\fP\fI [options] <path>\fP
.PP
+\fBbtrfs\fP \fBfilesystem show\fP\fI [options] [<uuid>|<label>]\fP
+.PP
\fBbtrfs\fP \fBdevice scan\fP\fI [<device> [<device>..]]\fP
.PP
\fBbtrfs\fP \fBdevice show\fP\fI <dev>|<label> [<dev>|<label>...]\fP
@@ -151,6 +153,14 @@
-H, --si Use powers of 10^3 (1000) to report sizes, in SI multiples.
.TP
+\fBfilesystem show\fR [options] [<uuid>|<label>]\fR
+Show the usage of each device in the btrfs filesystem with the given
+uuid or label, or all filesystems if no uuid or label is provided.
+Options:
+-h, --human-readable Use powers of 2^10 (1024) to report sizes.
+-H, --si Use powers of 10^3 (1000) to report sizes, in SI multiples.
+.TP
+
\fBdevice balance\fR \fI<path>\fR
Balance the chunks of the filesystem identified by \fI<path>\fR
across the devices.
--
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
--- I spent most of my money on drink, women and fast cars. The ---
rest I wasted. -- James Hunt
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch v2 3/4] Add an option to show ISO, binary or raw bytes counts using show.
2010-10-21 19:01 ` [patch v2 3/4] Add an option to show ISO, binary or raw bytes counts using show Hugo Mills
@ 2010-10-22 7:57 ` Goffredo Baroncelli
0 siblings, 0 replies; 7+ messages in thread
From: Goffredo Baroncelli @ 2010-10-22 7:57 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
On Thursday, 21 October, 2010, Hugo Mills wrote:
> Change btrfs filesystem show to allow the user to control the scales
> used for sizes in the output.
>
> Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
> ---
> btrfs.c | 2 +-
> btrfs_cmds.c | 45 ++++++++++++++++++++++++++++++++++++++-------
> man/btrfs.8.in | 10 ++++++++++
> 3 files changed, 49 insertions(+), 8 deletions(-)
>
> Index: btrfs-progs-unstable/btrfs.c
> ===================================================================
> --- btrfs-progs-unstable.orig/btrfs.c 2010-10-20 20:03:37.000000000 +0100
> +++ btrfs-progs-unstable/btrfs.c 2010-10-20 20:11:03.000000000 +0100
> @@ -83,7 +83,7 @@
> "will occupe all available space on the device."
> },
> { do_show_filesystem, 999,
> - "filesystem show", "[<uuid>|<label>]\n"
> + "filesystem show", "[options] [<uuid>|<label>]\n"
Please put explicitly the option like my other comments
> "Show the info of a btrfs filesystem. If no <uuid> or
<label>\n"
> "is passed, info of all the btrfs filesystem are shown."
> },
> Index: btrfs-progs-unstable/btrfs_cmds.c
> ===================================================================
> --- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-20 20:03:37.000000000
+0100
> +++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-20 20:08:00.000000000 +0100
> @@ -617,7 +617,7 @@
> return 0;
> }
>
> -static void print_one_uuid(struct btrfs_fs_devices *fs_devices)
> +static void print_one_uuid(struct btrfs_fs_devices *fs_devices, int format)
> {
> char uuidbuf[37];
> struct list_head *cur;
> @@ -634,8 +634,7 @@
> else
> printf("Label: none ");
>
> - super_bytes_used = pretty_sizes(device->super_bytes_used,
> -
PRETTY_SIZE_RAW);
> + super_bytes_used = pretty_sizes(device->super_bytes_used, format);
>
> total = device->total_devs;
> printf(" uuid: %s\n\tTotal devices %llu FS bytes used %s\n", uuidbuf,
> @@ -647,8 +646,8 @@
> char *total_bytes;
> char *bytes_used;
> device = list_entry(cur, struct btrfs_device, dev_list);
> - total_bytes = pretty_sizes(device->total_bytes,
PRETTY_SIZE_RAW);
> - bytes_used = pretty_sizes(device->bytes_used,
PRETTY_SIZE_RAW);
> + total_bytes = pretty_sizes(device->total_bytes, format);
> + bytes_used = pretty_sizes(device->bytes_used, format);
> printf("\tdevid %4llu size %s used %s path %s\n",
> (unsigned long long)device->devid,
> total_bytes, bytes_used, device->name);
> @@ -662,13 +661,45 @@
> printf("\n");
> }
>
> +const struct option show_options[] = {
> + { "human-readable", 0, NULL, 'h' },
> + { "si", 0, NULL, 'H' },
> + { NULL, 0, NULL, 0 }
> +};
> +
> int do_show_filesystem(int argc, char **argv)
> {
> struct list_head *all_uuids;
> struct btrfs_fs_devices *fs_devices;
> struct list_head *cur_uuid;
> - char *search = argv[1];
> + char *search;
> int ret;
> + int format = PRETTY_SIZE_RAW;
> +
> + optind = 1;
> + while(1) {
> + int c = getopt_long(argc, argv, "hH", show_options, NULL);
> + if (c < 0)
> + break;
> + switch(c) {
> + case 'h':
> + format = PRETTY_SIZE_BINARY;
> + break;
> + case 'H':
> + format = PRETTY_SIZE_ISO;
> + break;
> + default:
> + fprintf(stderr, "Invalid arguments for show\n");
> + free(argv);
> + return 1;
> + }
> + }
> + if (argc - optind > 1) {
> + fprintf(stderr, "Too many arguments for show\n");
> + free(argv);
> + return 1;
> + }
> + search = argv[optind];
>
> ret = btrfs_scan_one_dir("/dev", 0);
> if (ret){
> @@ -682,7 +713,7 @@
> list);
> if (search && uuid_search(fs_devices, search) == 0)
> continue;
> - print_one_uuid(fs_devices);
> + print_one_uuid(fs_devices, format);
> }
> printf("%s\n", BTRFS_BUILD_VERSION);
> return 0;
> Index: btrfs-progs-unstable/man/btrfs.8.in
> ===================================================================
> --- btrfs-progs-unstable.orig/man/btrfs.8.in 2010-10-20 20:03:53.000000000
+0100
> +++ btrfs-progs-unstable/man/btrfs.8.in 2010-10-20 20:08:15.000000000
+0100
> @@ -23,6 +23,8 @@
> .PP
> \fBbtrfs\fP \fBfilesystem df\fP\fI [options] <path>\fP
> .PP
> +\fBbtrfs\fP \fBfilesystem show\fP\fI [options] [<uuid>|<label>]\fP
> +.PP
Same here
> > \fBbtrfs\fP \fBdevice scan\fP\fI [<device> [<device>..]]\fP
> .PP
> \fBbtrfs\fP \fBdevice show\fP\fI <dev>|<label> [<dev>|<label>...]\fP
> @@ -151,6 +153,14 @@
> -H, --si Use powers of 10^3 (1000) to report sizes, in SI multiples.
> .TP
>
> +\fBfilesystem show\fR [options] [<uuid>|<label>]\fR
Same here
> +Show the usage of each device in the btrfs filesystem with the given
> +uuid or label, or all filesystems if no uuid or label is provided.
> +Options:
> +-h, --human-readable Use powers of 2^10 (1024) to report sizes.
> +-H, --si Use powers of 10^3 (1000) to report sizes, in SI multiples.
> +.TP
> +
> \fBdevice balance\fR \fI<path>\fR
> Balance the chunks of the filesystem identified by \fI<path>\fR
> across the devices.
>
> --
> === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
> PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
> --- I spent most of my money on drink, women and fast cars. The ---
> rest I wasted. -- James Hunt
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijack@inwind.it>
Key fingerprint = 4769 7E51 5293 D36C 814E C054 BF04 F161 3DC5 0512
^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch v2 4/4] Add an option to show ISO, binary or raw bytes counts using btrfs-show.
2010-10-21 19:01 [patch v2 0/4] Size reporting in userspace tools Hugo Mills
` (2 preceding siblings ...)
2010-10-21 19:01 ` [patch v2 3/4] Add an option to show ISO, binary or raw bytes counts using show Hugo Mills
@ 2010-10-21 19:01 ` Hugo Mills
3 siblings, 0 replies; 7+ messages in thread
From: Hugo Mills @ 2010-10-21 19:01 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
Change btrfs-show to allow the user to control the scales used for
sizes in the output.
Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
---
btrfs-show.c | 27 +++++++++++++++++++--------
man/btrfs-show.8.in | 10 ++++++++--
2 files changed, 27 insertions(+), 10 deletions(-)
Index: btrfs-progs-unstable/btrfs-show.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs-show.c 2010-10-20 19:48:33.000000000 +0100
+++ btrfs-progs-unstable/btrfs-show.c 2010-10-20 20:18:11.000000000 +0100
@@ -52,7 +52,7 @@
return 0;
}
-static void print_one_uuid(struct btrfs_fs_devices *fs_devices)
+static void print_one_uuid(struct btrfs_fs_devices *fs_devices, int format)
{
char uuidbuf[37];
struct list_head *cur;
@@ -69,8 +69,7 @@
else
printf("Label: none ");
- super_bytes_used = pretty_sizes(device->super_bytes_used,
- PRETTY_SIZE_RAW);
+ super_bytes_used = pretty_sizes(device->super_bytes_used, format);
total = device->total_devs;
printf(" uuid: %s\n\tTotal devices %llu FS bytes used %s\n", uuidbuf,
@@ -82,8 +81,8 @@
char *total_bytes;
char *bytes_used;
device = list_entry(cur, struct btrfs_device, dev_list);
- total_bytes = pretty_sizes(device->total_bytes, PRETTY_SIZE_RAW);
- bytes_used = pretty_sizes(device->bytes_used, PRETTY_SIZE_RAW);
+ total_bytes = pretty_sizes(device->total_bytes, format);
+ bytes_used = pretty_sizes(device->bytes_used, format);
printf("\tdevid %4llu size %s used %s path %s\n",
(unsigned long long)device->devid,
total_bytes, bytes_used, device->name);
@@ -99,13 +98,18 @@
static void print_usage(void)
{
- fprintf(stderr, "usage: btrfs-show [search label or device]\n");
+ fprintf(stderr, "usage: btrfs-show [options] [search label or device]\n");
+ fprintf(stderr, "Options:\n");
+ fprintf(stderr, "\t-h, --human-readable\tShow sizes in powers of 2^10.\n");
+ fprintf(stderr, "\t-s, --si\t\tShow sizes in powers of 10^3 (SI multiples).\n");
fprintf(stderr, "%s\n", BTRFS_BUILD_VERSION);
exit(1);
}
static struct option long_options[] = {
/* { "byte-count", 1, NULL, 'b' }, */
+ { "human-readable", 0, NULL, 'h' },
+ { "si", 0, NULL, 'H' },
{ 0, 0, 0, 0}
};
@@ -117,14 +121,21 @@
char *search = NULL;
int ret;
int option_index = 0;
+ int format = PRETTY_SIZE_RAW;
while(1) {
int c;
- c = getopt_long(ac, av, "", long_options,
+ c = getopt_long(ac, av, "hH", long_options,
&option_index);
if (c < 0)
break;
switch(c) {
+ case 'H':
+ format = PRETTY_SIZE_ISO;
+ break;
+ case 'h':
+ format = PRETTY_SIZE_BINARY;
+ break;
default:
print_usage();
}
@@ -144,7 +155,7 @@
list);
if (search && uuid_search(fs_devices, search) == 0)
continue;
- print_one_uuid(fs_devices);
+ print_one_uuid(fs_devices, format);
}
printf("%s\n", BTRFS_BUILD_VERSION);
return 0;
Index: btrfs-progs-unstable/man/btrfs-show.8.in
===================================================================
--- btrfs-progs-unstable.orig/man/btrfs-show.8.in 2010-10-20 20:15:29.000000000 +0100
+++ btrfs-progs-unstable/man/btrfs-show.8.in 2010-10-20 20:17:30.000000000 +0100
@@ -2,13 +2,19 @@
.SH NAME
btrfs-show \- scan the /dev directory for btrfs partitions and print results.
.SH SYNOPSIS
-.B btrfs-show
+.B btrfs-show [options]
.SH DESCRIPTION
.B btrfs-show
is used to scan the /dev directory for btrfs partitions and display brief
information such as lable, uuid, etc of each btrfs partition.
.SH OPTIONS
-none
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+Show values in multiples of 2^10.
+.TP
+\fB\-H\fR, \fB\-\-si\fR
+Show values in multiples of 10^3 (SI multiples).
+
.SH AVAILABILITY
.B btrfs-show
is part of btrfs-progs. Btrfs is currently under heavy development,
--
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
--- I spent most of my money on drink, women and fast cars. The ---
rest I wasted. -- James Hunt
^ permalink raw reply [flat|nested] 7+ messages in thread