From: Ralf Ertzinger Date: Wed, 23 Oct 2013 08:50:48 +0000 (+0200) Subject: Add -p switch to "zpool get" X-Git-Tag: zfs-0.6.3~239 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d65e73810938e5619b72591d3438063b00949e77;p=zfs Add -p switch to "zpool get" This works the same as the -p switch to "zfs get", displaying full resolution values for appropriate attributes. Signed-off-by: Brian Behlendorf Closes #1813 --- diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index b4a101773..cc8fbaca8 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -265,7 +265,7 @@ get_usage(zpool_help_t idx) { case HELP_EVENTS: return (gettext("\tevents [-vHfc]\n")); case HELP_GET: - return (gettext("\tget <\"all\" | property[,...]> " + return (gettext("\tget [-p] <\"all\" | property[,...]> " " ...\n")); case HELP_SET: return (gettext("\tset \n")); @@ -5488,8 +5488,8 @@ get_callback(zpool_handle_t *zhp, void *data) NULL, NULL); } } else { - if (zpool_get_prop(zhp, pl->pl_prop, value, - sizeof (value), &srctype) != 0) + if (zpool_get_prop_literal(zhp, pl->pl_prop, value, + sizeof (value), &srctype, cbp->cb_literal) != 0) continue; zprop_print_one_property(zpool_get_name(zhp), cbp, @@ -5505,9 +5505,26 @@ zpool_do_get(int argc, char **argv) { zprop_get_cbdata_t cb = { 0 }; zprop_list_t fake_name = { 0 }; - int ret; + int c, ret; - if (argc < 2) { + /* check options */ + while ((c = getopt(argc, argv, "p")) != -1) { + switch (c) { + case 'p': + cb.cb_literal = B_TRUE; + break; + + case '?': + (void) fprintf(stderr, gettext("invalid option '%c'\n"), + optopt); + usage(B_FALSE); + } + } + + argc -= optind; + argv += optind; + + if (argc < 1) { (void) fprintf(stderr, gettext("missing property " "argument\n")); usage(B_FALSE); @@ -5521,10 +5538,12 @@ zpool_do_get(int argc, char **argv) cb.cb_columns[3] = GET_COL_SOURCE; cb.cb_type = ZFS_TYPE_POOL; - if (zprop_get_list(g_zfs, argv[1], &cb.cb_proplist, - ZFS_TYPE_POOL) != 0) + if (zprop_get_list(g_zfs, argv[0], &cb.cb_proplist, ZFS_TYPE_POOL) != 0) usage(B_FALSE); + argc--; + argv++; + if (cb.cb_proplist != NULL) { fake_name.pl_prop = ZPOOL_PROP_NAME; fake_name.pl_width = strlen(gettext("NAME")); @@ -5532,7 +5551,7 @@ zpool_do_get(int argc, char **argv) cb.cb_proplist = &fake_name; } - ret = for_each_pool(argc - 2, argv + 2, B_TRUE, &cb.cb_proplist, + ret = for_each_pool(argc, argv, B_TRUE, &cb.cb_proplist, get_callback, &cb); if (cb.cb_proplist == &fake_name) diff --git a/man/man8/zpool.8 b/man/man8/zpool.8 index e86a6b0d5..65cd34281 100644 --- a/man/man8/zpool.8 +++ b/man/man8/zpool.8 @@ -62,7 +62,7 @@ zpool \- configures ZFS storage pools .LP .nf -\fBzpool get\fR "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ... +\fBzpool get\fR [\fB-p\fR] "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ... .fi .LP @@ -1037,7 +1037,7 @@ This command will forcefully export the pool even if it has a shared spare that .ne 2 .mk .na -\fB\fBzpool get\fR "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ...\fR +\fB\fBzpool get\fR [\fB-p\fR] "\fIall\fR" | \fIproperty\fR[,...] \fIpool\fR ...\fR .ad .sp .6 .RS 4n @@ -1054,6 +1054,17 @@ Retrieves the given list of properties (or all properties if "\fBall\fR" is used .sp See the "Properties" section for more information on the available pool properties. +.sp +.ne 2 +.mk +.na +\fB\fB-p\fR\fR +.ad +.RS 6n +.rt +Display numbers in parseable (exact) values. +.RE + .RE .sp