mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Add zfs_nicebytes() to print human-readable sizes
* Add zfs_nicebytes() to print human-readable sizes Some 'zfs', 'zpool' and 'zdb' output strings can be confusing to the user when no units are specified. This add a new zfs_nicenum_format "ZFS_NICENUM_BYTES" used to print bytes in their human-readable form. Additionally, update some test cases to use machine-parsable 'zfs get'. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: loli10K <ezomori.nozomu@gmail.com> Closes #2414 Closes #3185 Closes #3594 Closes #6032
This commit is contained in:
+30
-10
@@ -1313,7 +1313,7 @@ zfs_do_destroy(int argc, char **argv)
|
||||
|
||||
if (cb.cb_verbose) {
|
||||
char buf[16];
|
||||
zfs_nicenum(cb.cb_snapused, buf, sizeof (buf));
|
||||
zfs_nicebytes(cb.cb_snapused, buf, sizeof (buf));
|
||||
if (cb.cb_parsable) {
|
||||
(void) printf("reclaim\t%llu\n",
|
||||
(u_longlong_t)cb.cb_snapused);
|
||||
@@ -2549,11 +2549,17 @@ userspace_cb(void *arg, const char *domain, uid_t rid, uint64_t space)
|
||||
}
|
||||
|
||||
/* Calculate/update width of USED/QUOTA fields */
|
||||
if (cb->cb_nicenum)
|
||||
zfs_nicenum(space, sizebuf, sizeof (sizebuf));
|
||||
else
|
||||
if (cb->cb_nicenum) {
|
||||
if (prop == ZFS_PROP_USERUSED || prop == ZFS_PROP_GROUPUSED ||
|
||||
prop == ZFS_PROP_USERQUOTA || prop == ZFS_PROP_GROUPQUOTA) {
|
||||
zfs_nicebytes(space, sizebuf, sizeof (sizebuf));
|
||||
} else {
|
||||
zfs_nicenum(space, sizebuf, sizeof (sizebuf));
|
||||
}
|
||||
} else {
|
||||
(void) snprintf(sizebuf, sizeof (sizebuf), "%llu",
|
||||
(u_longlong_t)space);
|
||||
}
|
||||
sizelen = strlen(sizebuf);
|
||||
if (prop == ZFS_PROP_USERUSED || prop == ZFS_PROP_GROUPUSED) {
|
||||
propname = "used";
|
||||
@@ -2646,22 +2652,36 @@ print_us_node(boolean_t scripted, boolean_t parsable, int *fields, int types,
|
||||
break;
|
||||
case USFIELD_USED:
|
||||
case USFIELD_QUOTA:
|
||||
if (type == DATA_TYPE_UINT64) {
|
||||
if (parsable) {
|
||||
(void) sprintf(valstr, "%llu",
|
||||
(u_longlong_t)val64);
|
||||
strval = valstr;
|
||||
} else if (field == USFIELD_QUOTA &&
|
||||
val64 == 0) {
|
||||
strval = "none";
|
||||
} else {
|
||||
zfs_nicebytes(val64, valstr,
|
||||
sizeof (valstr));
|
||||
strval = valstr;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case USFIELD_OBJUSED:
|
||||
case USFIELD_OBJQUOTA:
|
||||
if (type == DATA_TYPE_UINT64) {
|
||||
if (parsable) {
|
||||
(void) sprintf(valstr, "%llu",
|
||||
(u_longlong_t)val64);
|
||||
strval = valstr;
|
||||
} else if (field == USFIELD_OBJQUOTA &&
|
||||
val64 == 0) {
|
||||
strval = "none";
|
||||
} else {
|
||||
zfs_nicenum(val64, valstr,
|
||||
sizeof (valstr));
|
||||
}
|
||||
if ((field == USFIELD_QUOTA ||
|
||||
field == USFIELD_OBJQUOTA) &&
|
||||
strcmp(valstr, "0") == 0)
|
||||
strval = "none";
|
||||
else
|
||||
strval = valstr;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user