summaryrefslogtreecommitdiff
path: root/usr/src/lib/libzfs/common/libzfs_dataset.c
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2015-10-12 12:29:09 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2015-10-12 12:29:09 +0000
commitbf5b3cba06fd2bfead874c188aba102ffb617017 (patch)
tree6f40d977c86a455a3887c95c08b56d01239aac2e /usr/src/lib/libzfs/common/libzfs_dataset.c
parent0aa66ddb277db63a65d6ebe79f77260d9c8ec210 (diff)
parentd2058105c61ec61df3a2dd3f839fed8c3fe7bfd6 (diff)
downloadillumos-joyent-bf5b3cba06fd2bfead874c188aba102ffb617017.tar.gz
[illumos-gate merge]
commit d2058105c61ec61df3a2dd3f839fed8c3fe7bfd6 6267 dn_bonus evicted too early commit daec38ecb4fb5e73e4ca9e99be84f6b8c50c02fa 6295 metaslab_condense's dbgmsg should include vdev id commit 8fe00bfb8790ad51653f67b01d5ac14256cbb404 6293 ztest failure: error == 28 (0xc == 0x1c) in ztest_tx_assign() commit ba3132cfb269da4118d7dc25a8c6c1a91f9f5303 6289 ::dbuf dcmd misaligned output commit 9c3fd1216fa7fb02cfbc78a2518a686d54b48ab8 2605 want to resume interrupted zfs send commit aab04418a72c0a29040a5da7eec08efe19dbef04 6268 zfs diff confused by moving a file to another directory commit 9ce6e318fecae800270f382ed76162508c5d525b 6242 sha512 is broken in grub commit 3f84190c280ddf5917fb4682f34fdaa328ee195c 6290 zdb -h overflows stack commit 6de9bb5603e65b16816b7ab29e39bac820e2da2b 6286 ZFS internal error when set large block on bootfs commit 0f2e7d03b8f588387cb8dd8dd500cbe5ff4484e0 6288 dmu_buf_will_dirty could be faster
Diffstat (limited to 'usr/src/lib/libzfs/common/libzfs_dataset.c')
-rw-r--r--usr/src/lib/libzfs/common/libzfs_dataset.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/usr/src/lib/libzfs/common/libzfs_dataset.c b/usr/src/lib/libzfs/common/libzfs_dataset.c
index 633850d316..8d33d1b3cb 100644
--- a/usr/src/lib/libzfs/common/libzfs_dataset.c
+++ b/usr/src/lib/libzfs/common/libzfs_dataset.c
@@ -1818,22 +1818,21 @@ getprop_uint64(zfs_handle_t *zhp, zfs_prop_t prop, char **source)
return (value);
}
-static char *
+static const char *
getprop_string(zfs_handle_t *zhp, zfs_prop_t prop, char **source)
{
nvlist_t *nv;
- char *value;
+ const char *value;
*source = NULL;
if (nvlist_lookup_nvlist(zhp->zfs_props,
zfs_prop_to_name(prop), &nv) == 0) {
- verify(nvlist_lookup_string(nv, ZPROP_VALUE, &value) == 0);
+ value = fnvlist_lookup_string(nv, ZPROP_VALUE);
(void) nvlist_lookup_string(nv, ZPROP_SOURCE, source);
} else {
verify(!zhp->zfs_props_table ||
zhp->zfs_props_table[prop] == B_TRUE);
- if ((value = (char *)zfs_prop_default_string(prop)) == NULL)
- value = "";
+ value = zfs_prop_default_string(prop);
*source = "";
}
@@ -2240,7 +2239,7 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen,
{
char *source = NULL;
uint64_t val;
- char *str;
+ const char *str;
const char *strval;
boolean_t received = zfs_is_recvd_props_mode(zhp);
boolean_t printerr;
@@ -2356,14 +2355,10 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen,
break;
case ZFS_PROP_ORIGIN:
- (void) strlcpy(propbuf, getprop_string(zhp, prop, &source),
- proplen);
- /*
- * If there is no parent at all, return failure to indicate that
- * it doesn't apply to this dataset.
- */
- if (propbuf[0] == '\0')
+ str = getprop_string(zhp, prop, &source);
+ if (str == NULL)
return (-1);
+ (void) strlcpy(propbuf, str, proplen);
break;
case ZFS_PROP_CLONES:
@@ -2540,8 +2535,10 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen,
break;
case PROP_TYPE_STRING:
- (void) strlcpy(propbuf,
- getprop_string(zhp, prop, &source), proplen);
+ str = getprop_string(zhp, prop, &source);
+ if (str == NULL)
+ return (-1);
+ (void) strlcpy(propbuf, str, proplen);
break;
case PROP_TYPE_INDEX: