diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2015-10-12 12:29:09 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2015-10-12 12:29:09 +0000 |
commit | bf5b3cba06fd2bfead874c188aba102ffb617017 (patch) | |
tree | 6f40d977c86a455a3887c95c08b56d01239aac2e /usr/src/lib/libzfs/common/libzfs_dataset.c | |
parent | 0aa66ddb277db63a65d6ebe79f77260d9c8ec210 (diff) | |
parent | d2058105c61ec61df3a2dd3f839fed8c3fe7bfd6 (diff) | |
download | illumos-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.c | 27 |
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: |