diff options
| author | Jason King <jason.brian.king@gmail.com> | 2021-11-05 09:48:07 -0500 |
|---|---|---|
| committer | Jason King <jason.brian.king@gmail.com> | 2021-11-19 15:27:15 -0600 |
| commit | d8f839f91e21bea2f5200f95df55608cbecdeeb9 (patch) | |
| tree | e346867b613449eeb87674a39fc76497eb3f3bd9 /usr/src/lib | |
| parent | 705b6680745618ebbf67feb254ce9a62511084a5 (diff) | |
| download | illumos-joyent-d8f839f91e21bea2f5200f95df55608cbecdeeb9.tar.gz | |
14223 Add change key zfs channel program
Portions contributed by: Alex Wilson <alex@cooperi.net>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Mike Zeller <mike.zeller@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/lib')
| -rw-r--r-- | usr/src/lib/libzfs_core/common/libzfs_core.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/usr/src/lib/libzfs_core/common/libzfs_core.c b/usr/src/lib/libzfs_core/common/libzfs_core.c index dc505f020c..471a5e5515 100644 --- a/usr/src/lib/libzfs_core/common/libzfs_core.c +++ b/usr/src/lib/libzfs_core/common/libzfs_core.c @@ -25,6 +25,7 @@ * Copyright (c) 2014 Integros [integros.com] * Copyright 2017 RackTop Systems. * Copyright (c) 2017 Datto Inc. + * Copyright 2020 Joyent, Inc. */ /* @@ -1069,6 +1070,7 @@ lzc_channel_program_impl(const char *pool, const char *program, boolean_t sync, { int error; nvlist_t *args; + nvlist_t *hidden_args = NULL; args = fnvlist_alloc(); fnvlist_add_string(args, ZCP_ARG_PROGRAM, program); @@ -1076,6 +1078,22 @@ lzc_channel_program_impl(const char *pool, const char *program, boolean_t sync, fnvlist_add_boolean_value(args, ZCP_ARG_SYNC, sync); fnvlist_add_uint64(args, ZCP_ARG_INSTRLIMIT, instrlimit); fnvlist_add_uint64(args, ZCP_ARG_MEMLIMIT, memlimit); + + /* + * If any hidden arguments are passed, we pull them out of 'args' + * and into a separate nvlist so spa_history_nvl() doesn't log + * their values. + */ + if (nvlist_lookup_nvlist(argnvl, ZPOOL_HIDDEN_ARGS, + &hidden_args) == 0) { + nvlist_t *argcopy = fnvlist_dup(argnvl); + + fnvlist_add_nvlist(args, ZPOOL_HIDDEN_ARGS, hidden_args); + fnvlist_remove(argcopy, ZPOOL_HIDDEN_ARGS); + fnvlist_add_nvlist(args, ZCP_ARG_ARGLIST, argcopy); + nvlist_free(argcopy); + } + error = lzc_ioctl(ZFS_IOC_CHANNEL_PROGRAM, pool, args, outnvl); fnvlist_free(args); |
