aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/cmd
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2023-10-04 12:02:37 +0000
committerMartin Matuska <mm@FreeBSD.org>2023-10-04 12:08:42 +0000
commitf7f4bd06a8d4e5d1e92d0d2905a68a2a03ed9c0c (patch)
tree986c7135832a9f7d718a3bb97e839fcd49a5418e /sys/contrib/openzfs/cmd
parentf06c928544747326c04f84c582bcd5fda0d7bb91 (diff)
parentf795e90a11c683d64bacc260fb7feab705b220b1 (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.c2
-rw-r--r--sys/contrib/openzfs/cmd/zfs/zfs_main.c48
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);
}