diff options
author | Martin Matuska <mm@FreeBSD.org> | 2023-10-04 12:02:37 +0000 |
---|---|---|
committer | Martin Matuska <mm@FreeBSD.org> | 2023-10-04 12:08:42 +0000 |
commit | f7f4bd06a8d4e5d1e92d0d2905a68a2a03ed9c0c (patch) | |
tree | 986c7135832a9f7d718a3bb97e839fcd49a5418e /sys/contrib/openzfs/cmd | |
parent | f06c928544747326c04f84c582bcd5fda0d7bb91 (diff) | |
parent | f795e90a11c683d64bacc260fb7feab705b220b1 (diff) |
zfs: merge openzfs/zfs@f795e90a1
Notable upstream pull request merges:
#15322 4e16964e1 Add '-u' - nomount flag for zfs set
#15331 fe4d055b3 Report ashift of L2ARC devices in zdb
#15333 249d759ca Fix invalid pointer access in trace_dbuf.h
#15339 f795e90a1 Add BTI landing pads to the AArch64 SHA2 assembly
Obtained from: OpenZFS
OpenZFS commit: f795e90a11c683d64bacc260fb7feab705b220b1
Diffstat (limited to 'sys/contrib/openzfs/cmd')
-rw-r--r-- | sys/contrib/openzfs/cmd/zdb/zdb.c | 2 | ||||
-rw-r--r-- | sys/contrib/openzfs/cmd/zfs/zfs_main.c | 48 |
2 files changed, 30 insertions, 20 deletions
diff --git a/sys/contrib/openzfs/cmd/zdb/zdb.c b/sys/contrib/openzfs/cmd/zdb/zdb.c index 87499cdc95cb..b39a0e8825fb 100644 --- a/sys/contrib/openzfs/cmd/zdb/zdb.c +++ b/sys/contrib/openzfs/cmd/zdb/zdb.c @@ -5179,7 +5179,7 @@ dump_label(const char *dev) if (nvlist_size(config, &size, NV_ENCODE_XDR) != 0) size = buflen; - /* If the device is a cache device clear the header. */ + /* If the device is a cache device read the header. */ if (!read_l2arc_header) { if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, &l2cache) == 0 && diff --git a/sys/contrib/openzfs/cmd/zfs/zfs_main.c b/sys/contrib/openzfs/cmd/zfs/zfs_main.c index 21fd02ff9782..da9b2e583d7a 100644 --- a/sys/contrib/openzfs/cmd/zfs/zfs_main.c +++ b/sys/contrib/openzfs/cmd/zfs/zfs_main.c @@ -339,7 +339,7 @@ get_usage(zfs_help_t idx) "\tsend [-nVvPe] -t <receive_resume_token>\n" "\tsend [-PnVv] --saved filesystem\n")); case HELP_SET: - return (gettext("\tset <property=value> ... " + return (gettext("\tset [-u] <property=value> ... " "<filesystem|volume|snapshot> ...\n")); case HELP_SHARE: return (gettext("\tshare [-l] <-a [nfs|smb] | filesystem>\n")); @@ -4206,8 +4206,8 @@ out: static int set_callback(zfs_handle_t *zhp, void *data) { - nvlist_t *props = data; - int ret = zfs_prop_set_list(zhp, props); + zprop_set_cbdata_t *cb = data; + int ret = zfs_prop_set_list_flags(zhp, cb->cb_proplist, cb->cb_flags); if (ret != 0 || libzfs_errno(g_zfs) != EZFS_SUCCESS) { switch (libzfs_errno(g_zfs)) { @@ -4227,25 +4227,35 @@ set_callback(zfs_handle_t *zhp, void *data) static int zfs_do_set(int argc, char **argv) { - nvlist_t *props = NULL; + zprop_set_cbdata_t cb = { 0 }; int ds_start = -1; /* argv idx of first dataset arg */ int ret = 0; - int i; + int i, c; - /* check for options */ - if (argc > 1 && argv[1][0] == '-') { - (void) fprintf(stderr, gettext("invalid option '%c'\n"), - argv[1][1]); - usage(B_FALSE); + /* check options */ + while ((c = getopt(argc, argv, "u")) != -1) { + switch (c) { + case 'u': + cb.cb_flags |= ZFS_SET_NOMOUNT; + break; + case '?': + default: + (void) fprintf(stderr, gettext("invalid option '%c'\n"), + optopt); + usage(B_FALSE); + } } + argc -= optind; + argv += optind; + /* check number of arguments */ - if (argc < 2) { + if (argc < 1) { (void) fprintf(stderr, gettext("missing arguments\n")); usage(B_FALSE); } - if (argc < 3) { - if (strchr(argv[1], '=') == NULL) { + if (argc < 2) { + if (strchr(argv[0], '=') == NULL) { (void) fprintf(stderr, gettext("missing property=value " "argument(s)\n")); } else { @@ -4256,7 +4266,7 @@ zfs_do_set(int argc, char **argv) } /* validate argument order: prop=val args followed by dataset args */ - for (i = 1; i < argc; i++) { + for (i = 0; i < argc; i++) { if (strchr(argv[i], '=') != NULL) { if (ds_start > 0) { /* out-of-order prop=val argument */ @@ -4274,20 +4284,20 @@ zfs_do_set(int argc, char **argv) } /* Populate a list of property settings */ - if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0) + if (nvlist_alloc(&cb.cb_proplist, NV_UNIQUE_NAME, 0) != 0) nomem(); - for (i = 1; i < ds_start; i++) { - if (!parseprop(props, argv[i])) { + for (i = 0; i < ds_start; i++) { + if (!parseprop(cb.cb_proplist, argv[i])) { ret = -1; goto error; } } ret = zfs_for_each(argc - ds_start, argv + ds_start, 0, - ZFS_TYPE_DATASET, NULL, NULL, 0, set_callback, props); + ZFS_TYPE_DATASET, NULL, NULL, 0, set_callback, &cb); error: - nvlist_free(props); + nvlist_free(cb.cb_proplist); return (ret); } |