Skip to content

Commit

Permalink
Add -p switch to "zpool get"
Browse files Browse the repository at this point in the history
This works the same as the -p switch to "zfs get", displaying full
resolution values for appropriate attributes.

Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#1813
  • Loading branch information
Lalufu authored and behlendorf committed Oct 28, 2013
1 parent 8b921f6 commit d65e738
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 10 deletions.
35 changes: 27 additions & 8 deletions cmd/zpool/zpool_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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[,...]> "
"<pool> ...\n"));
case HELP_SET:
return (gettext("\tset <property=value> <pool> \n"));
Expand Down Expand Up @@ -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,
Expand All @@ -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);
Expand All @@ -5521,18 +5538,20 @@ 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"));
fake_name.pl_next = cb.cb_proplist;
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)
Expand Down
15 changes: 13 additions & 2 deletions man/man8/zpool.8
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit d65e738

Please sign in to comment.