The branch releng/14.0 has been updated by mm:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=0002395c4efbe7f98ac51f38421f9a876c0cd4fb

commit 0002395c4efbe7f98ac51f38421f9a876c0cd4fb
Author:     Martin Matuska <m...@freebsd.org>
AuthorDate: 2023-10-04 12:54:05 +0000
Commit:     Martin Matuska <m...@freebsd.org>
CommitDate: 2023-10-14 20:51:39 +0000

    zfs: merge openzfs/zfs@8015e2ea6 (zfs-2.2-release) into stable/14
    
    Notable upstream pull request merges:
     #15240 e9dc31c74 Update the behavior of mountpoint property
     #15240 c53bc3837 Improve the handling of sharesmb,sharenfs properties
     #15298 0ce1b2ca1 Invoke zdb by guid to avoid import errors
     #15301 0aabd6b48 ZIL: Avoid dbuf_read() in ztest_get_data()
     #15308 9e36c576f Don't allocate from new metaslabs
     #15312 229ca7d73 Fix ENOSPC for extended quota
     #15321 3079bf2e6 Restrict short block cloning requests
     #15322 8015e2ea6 Add '-u' - nomount flag for zfs set
     #15324 b34bf2d5f Tweak rebuild in-flight hard limit
     #15331 608741d06 Report ashift of L2ARC devices in zdb
     #15333 0d870a177 Fix invalid pointer access in trace_dbuf.h
    
    Obtained from:  OpenZFS
    OpenZFS commit: 8015e2ea66b4f6233877fef29a8a35594f33558d
    Approved by:    re (gjb)
    
    (cherry picked from commit a21cb0234b896d8e524840d8b06927f5e8ee1b13)
---
 sys/contrib/openzfs/cmd/zdb/zdb.c                  |   2 +-
 sys/contrib/openzfs/cmd/zfs/zfs_main.c             |  52 ++++++-----
 sys/contrib/openzfs/cmd/ztest.c                    |  24 ++---
 sys/contrib/openzfs/config/zfs-build.m4            |  11 +++
 .../openzfs/contrib/bash_completion.d/Makefile.am  |   2 -
 sys/contrib/openzfs/contrib/debian/control         |   2 +-
 .../contrib/debian/openzfs-zfsutils.install        |   1 -
 sys/contrib/openzfs/contrib/debian/rules.in        |   5 -
 sys/contrib/openzfs/include/libzfs.h               |   8 ++
 .../openzfs/include/os/linux/zfs/sys/trace_dbuf.h  |   8 +-
 sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c  |   3 +-
 sys/contrib/openzfs/lib/libshare/os/linux/nfs.c    |  47 +++++++++-
 sys/contrib/openzfs/lib/libzfs/libzfs.abi          |   7 ++
 sys/contrib/openzfs/lib/libzfs/libzfs_changelist.c |  46 +++++----
 sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c    |  18 +++-
 sys/contrib/openzfs/man/man7/zfsprops.7            |  26 +++++-
 sys/contrib/openzfs/man/man8/zfs-set.8             |   7 ++
 sys/contrib/openzfs/module/zfs/dsl_dir.c           |  22 ++---
 sys/contrib/openzfs/module/zfs/metaslab.c          |   9 ++
 sys/contrib/openzfs/module/zfs/vdev_label.c        |  10 ++
 sys/contrib/openzfs/module/zfs/vdev_rebuild.c      |   4 +-
 sys/contrib/openzfs/module/zfs/zfs_vnops.c         |  13 +++
 sys/contrib/openzfs/tests/runfiles/common.run      |   2 +-
 sys/contrib/openzfs/tests/runfiles/sanity.run      |   2 +-
 .../openzfs/tests/test-runner/bin/zts-report.py.in |   4 +-
 .../openzfs/tests/zfs-tests/tests/Makefile.am      |   1 +
 ...ock_cloning_copyfilerange_fallback_same_txg.ksh |   5 +-
 .../cli_root/zfs_mount/zfs_mount_006_pos.ksh       |   2 +-
 .../cli_root/zfs_mount/zfs_mount_008_pos.ksh       |   4 +-
 .../cli_root/zfs_mount/zfs_mount_012_pos.ksh       |  15 ++-
 .../cli_root/zfs_set/mountpoint_002_pos.ksh        |  12 ++-
 .../cli_root/zfs_set/zfs_set_003_neg.ksh           |  10 +-
 .../cli_root/zfs_set/zfs_set_nomount.ksh           | 103 +++++++++++++++++++++
 .../cli_root/zpool_trim/zpool_trim_partial.ksh     |   2 +-
 .../zpool_trim/zpool_trim_verify_trimmed.ksh       |   2 +-
 .../tests/functional/no_space/enospc_rm.ksh        |  12 ++-
 .../tests/functional/trim/autotrim_config.ksh      |   2 +-
 .../tests/functional/trim/autotrim_integrity.ksh   |   2 +-
 .../functional/trim/autotrim_trim_integrity.ksh    |   2 +-
 .../tests/functional/trim/trim_config.ksh          |   2 +-
 .../tests/functional/trim/trim_integrity.ksh       |   2 +-
 sys/modules/zfs/zfs_config.h                       |   4 +-
 sys/modules/zfs/zfs_gitrev.h                       |   2 +-
 43 files changed, 398 insertions(+), 121 deletions(-)

diff --git a/sys/contrib/openzfs/cmd/zdb/zdb.c 
b/sys/contrib/openzfs/cmd/zdb/zdb.c
index 4b9921d47b81..005bf3f16590 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 533a21bba4d0..5a2285ce434b 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"));
@@ -4202,9 +4202,10 @@ out:
 static int
 set_callback(zfs_handle_t *zhp, void *data)
 {
-       nvlist_t *props = data;
+       zprop_set_cbdata_t *cb = data;
+       int ret = zfs_prop_set_list_flags(zhp, cb->cb_proplist, cb->cb_flags);
 
-       if (zfs_prop_set_list(zhp, props) != 0) {
+       if (ret != 0 || libzfs_errno(g_zfs) != EZFS_SUCCESS) {
                switch (libzfs_errno(g_zfs)) {
                case EZFS_MOUNTFAILED:
                        (void) fprintf(stderr, gettext("property may be set "
@@ -4215,33 +4216,42 @@ set_callback(zfs_handle_t *zhp, void *data)
                            "but unable to reshare filesystem\n"));
                        break;
                }
-               return (1);
        }
-       return (0);
+       return (ret);
 }
 
 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 {
@@ -4252,7 +4262,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 */
@@ -4270,20 +4280,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);
 }
 
diff --git a/sys/contrib/openzfs/cmd/ztest.c b/sys/contrib/openzfs/cmd/ztest.c
index 59c4be225f93..8cfbdfe1c2e2 100644
--- a/sys/contrib/openzfs/cmd/ztest.c
+++ b/sys/contrib/openzfs/cmd/ztest.c
@@ -2457,8 +2457,7 @@ ztest_get_data(void *arg, uint64_t arg2, lr_write_t *lr, 
char *buf,
                zgd->zgd_lr = (struct zfs_locked_range *)ztest_range_lock(zd,
                    object, offset, size, RL_READER);
 
-               error = dmu_buf_hold(os, object, offset, zgd, &db,
-                   DMU_READ_NO_PREFETCH);
+               error = dmu_buf_hold_noread(os, object, offset, zgd, &db);
 
                if (error == 0) {
                        blkptr_t *bp = &lr->lr_blkptr;
@@ -6379,6 +6378,7 @@ ztest_reguid(ztest_ds_t *zd, uint64_t id)
        spa_t *spa = ztest_spa;
        uint64_t orig, load;
        int error;
+       ztest_shared_t *zs = ztest_shared;
 
        if (ztest_opts.zo_mmp_test)
                return;
@@ -6388,6 +6388,7 @@ ztest_reguid(ztest_ds_t *zd, uint64_t id)
 
        (void) pthread_rwlock_wrlock(&ztest_name_lock);
        error = spa_change_guid(spa);
+       zs->zs_guid = spa_guid(spa);
        (void) pthread_rwlock_unlock(&ztest_name_lock);
 
        if (error != 0)
@@ -6917,7 +6918,7 @@ ztest_trim(ztest_ds_t *zd, uint64_t id)
  * Verify pool integrity by running zdb.
  */
 static void
-ztest_run_zdb(const char *pool)
+ztest_run_zdb(uint64_t guid)
 {
        int status;
        char *bin;
@@ -6941,13 +6942,13 @@ ztest_run_zdb(const char *pool)
        free(set_gvars_args);
 
        size_t would = snprintf(zdb, len,
-           "%s -bcc%s%s -G -d -Y -e -y %s -p %s %s",
+           "%s -bcc%s%s -G -d -Y -e -y %s -p %s %"PRIu64,
            bin,
            ztest_opts.zo_verbose >= 3 ? "s" : "",
            ztest_opts.zo_verbose >= 4 ? "v" : "",
            set_gvars_args_joined,
            ztest_opts.zo_dir,
-           pool);
+           guid);
        ASSERT3U(would, <, len);
 
        umem_free(set_gvars_args_joined, strlen(set_gvars_args_joined) + 1);
@@ -7525,14 +7526,15 @@ ztest_import(ztest_shared_t *zs)
        VERIFY0(spa_open(ztest_opts.zo_pool, &spa, FTAG));
        zs->zs_metaslab_sz =
            1ULL << spa->spa_root_vdev->vdev_child[0]->vdev_ms_shift;
+       zs->zs_guid = spa_guid(spa);
        spa_close(spa, FTAG);
 
        kernel_fini();
 
        if (!ztest_opts.zo_mmp_test) {
-               ztest_run_zdb(ztest_opts.zo_pool);
+               ztest_run_zdb(zs->zs_guid);
                ztest_freeze();
-               ztest_run_zdb(ztest_opts.zo_pool);
+               ztest_run_zdb(zs->zs_guid);
        }
 
        (void) pthread_rwlock_destroy(&ztest_name_lock);
@@ -7603,7 +7605,6 @@ ztest_run(ztest_shared_t *zs)
        dsl_pool_config_enter(dmu_objset_pool(os), FTAG);
        dmu_objset_fast_stat(os, &dds);
        dsl_pool_config_exit(dmu_objset_pool(os), FTAG);
-       zs->zs_guid = dds.dds_guid;
        dmu_objset_disown(os, B_TRUE, FTAG);
 
        /*
@@ -7874,14 +7875,15 @@ ztest_init(ztest_shared_t *zs)
        VERIFY0(spa_open(ztest_opts.zo_pool, &spa, FTAG));
        zs->zs_metaslab_sz =
            1ULL << spa->spa_root_vdev->vdev_child[0]->vdev_ms_shift;
+       zs->zs_guid = spa_guid(spa);
        spa_close(spa, FTAG);
 
        kernel_fini();
 
        if (!ztest_opts.zo_mmp_test) {
-               ztest_run_zdb(ztest_opts.zo_pool);
+               ztest_run_zdb(zs->zs_guid);
                ztest_freeze();
-               ztest_run_zdb(ztest_opts.zo_pool);
+               ztest_run_zdb(zs->zs_guid);
        }
 
        (void) pthread_rwlock_destroy(&ztest_name_lock);
@@ -8304,7 +8306,7 @@ main(int argc, char **argv)
                }
 
                if (!ztest_opts.zo_mmp_test)
-                       ztest_run_zdb(ztest_opts.zo_pool);
+                       ztest_run_zdb(zs->zs_guid);
        }
 
        if (ztest_opts.zo_verbose >= 1) {
diff --git a/sys/contrib/openzfs/config/zfs-build.m4 
b/sys/contrib/openzfs/config/zfs-build.m4
index 2703e6c016c4..5ea6aa29a3de 100644
--- a/sys/contrib/openzfs/config/zfs-build.m4
+++ b/sys/contrib/openzfs/config/zfs-build.m4
@@ -617,6 +617,17 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
                AC_MSG_RESULT([no])
        fi
        AC_SUBST(RPM_DEFINE_INITRAMFS)
+
+       AC_MSG_CHECKING([default bash completion directory])
+       case "$VENDOR" in
+               ubuntu)     
bashcompletiondir=/usr/share/bash-completion/completions   ;;
+               debian)     
bashcompletiondir=/usr/share/bash-completion/completions   ;;
+               freebsd)    bashcompletiondir=$sysconfdir/bash_completion.d;;
+               *)          bashcompletiondir=/etc/bash_completion.d   ;;
+       esac
+       AC_MSG_RESULT([$bashcompletiondir])
+       AC_SUBST(bashcompletiondir)
+
 ])
 
 dnl #
diff --git a/sys/contrib/openzfs/contrib/bash_completion.d/Makefile.am 
b/sys/contrib/openzfs/contrib/bash_completion.d/Makefile.am
index dc4b610c42b8..1ec05ed73d2d 100644
--- a/sys/contrib/openzfs/contrib/bash_completion.d/Makefile.am
+++ b/sys/contrib/openzfs/contrib/bash_completion.d/Makefile.am
@@ -1,5 +1,3 @@
-bashcompletiondir = $(sysconfdir)/bash_completion.d
-
 nodist_bashcompletion_DATA  = %D%/zfs
 SUBSTFILES                 += $(nodist_bashcompletion_DATA)
 
diff --git a/sys/contrib/openzfs/contrib/debian/control 
b/sys/contrib/openzfs/contrib/debian/control
index b9bb23b09ba0..f4e97fe16145 100644
--- a/sys/contrib/openzfs/contrib/debian/control
+++ b/sys/contrib/openzfs/contrib/debian/control
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: ZFS on Linux specific mailing list 
<zfs-disc...@list.zfsonlinux.org>
 Build-Depends: debhelper-compat (= 12),
                dh-python,
-               dkms (>> 2.1.1.2-5),
+               dh-sequence-dkms | dkms (>> 2.1.1.2-5),
                libaio-dev,
                libblkid-dev,
                libcurl4-openssl-dev,
diff --git a/sys/contrib/openzfs/contrib/debian/openzfs-zfsutils.install 
b/sys/contrib/openzfs/contrib/debian/openzfs-zfsutils.install
index 301d8f67b3af..fa05401bc168 100644
--- a/sys/contrib/openzfs/contrib/debian/openzfs-zfsutils.install
+++ b/sys/contrib/openzfs/contrib/debian/openzfs-zfsutils.install
@@ -1,7 +1,6 @@
 etc/default/zfs
 etc/zfs/zfs-functions
 etc/zfs/zpool.d/
-etc/bash_completion.d/zfs
 lib/systemd/system-generators/
 lib/systemd/system-preset/
 lib/systemd/system/zfs-import-cache.service
diff --git a/sys/contrib/openzfs/contrib/debian/rules.in 
b/sys/contrib/openzfs/contrib/debian/rules.in
index f0791cfabd38..a3a05efacb50 100755
--- a/sys/contrib/openzfs/contrib/debian/rules.in
+++ b/sys/contrib/openzfs/contrib/debian/rules.in
@@ -71,10 +71,6 @@ override_dh_auto_install:
        @# Install the utilities.
        $(MAKE) install DESTDIR='$(CURDIR)/debian/tmp'
 
-       # Use upstream's bash completion
-       install -D -t 
'$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/' \
-               '$(CURDIR)/contrib/bash_completion.d/zfs'
-
        # Move from bin_dir to /usr/sbin
        # Remove suffix (.py) as per policy 10.4 - Scripts
        # https://www.debian.org/doc/debian-policy/ch-files.html#s-scripts
@@ -136,7 +132,6 @@ override_dh_auto_install:
 
        chmod a-x '$(CURDIR)/debian/tmp/etc/zfs/zfs-functions'
        chmod a-x '$(CURDIR)/debian/tmp/etc/default/zfs'
-       chmod a-x 
'$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/zfs'
 
 override_dh_python3:
        dh_python3 -p openzfs-python3-pyzfs
diff --git a/sys/contrib/openzfs/include/libzfs.h 
b/sys/contrib/openzfs/include/libzfs.h
index fa05b7921bb5..6c3669273786 100644
--- a/sys/contrib/openzfs/include/libzfs.h
+++ b/sys/contrib/openzfs/include/libzfs.h
@@ -523,6 +523,7 @@ _LIBZFS_H nvlist_t *zfs_valid_proplist(libzfs_handle_t *, 
zfs_type_t,
 _LIBZFS_H const char *zfs_prop_to_name(zfs_prop_t);
 _LIBZFS_H int zfs_prop_set(zfs_handle_t *, const char *, const char *);
 _LIBZFS_H int zfs_prop_set_list(zfs_handle_t *, nvlist_t *);
+_LIBZFS_H int zfs_prop_set_list_flags(zfs_handle_t *, nvlist_t *, int);
 _LIBZFS_H int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t,
     zprop_source_t *, char *, size_t, boolean_t);
 _LIBZFS_H int zfs_prop_get_recvd(zfs_handle_t *, const char *, char *, size_t,
@@ -645,6 +646,13 @@ typedef struct zprop_get_cbdata {
        vdev_cbdata_t cb_vdevs;
 } zprop_get_cbdata_t;
 
+#define        ZFS_SET_NOMOUNT         1
+
+typedef struct zprop_set_cbdata {
+       int cb_flags;
+       nvlist_t *cb_proplist;
+} zprop_set_cbdata_t;
+
 _LIBZFS_H void zprop_print_one_property(const char *, zprop_get_cbdata_t *,
     const char *, const char *, zprop_source_t, const char *,
     const char *);
diff --git a/sys/contrib/openzfs/include/os/linux/zfs/sys/trace_dbuf.h 
b/sys/contrib/openzfs/include/os/linux/zfs/sys/trace_dbuf.h
index 11d25be35bc4..0f6a98b47d60 100644
--- a/sys/contrib/openzfs/include/os/linux/zfs/sys/trace_dbuf.h
+++ b/sys/contrib/openzfs/include/os/linux/zfs/sys/trace_dbuf.h
@@ -60,8 +60,12 @@
 
 #define        DBUF_TP_FAST_ASSIGN                                             
\
        if (db != NULL) {                                               \
-               __assign_str(os_spa,                                    \
-               spa_name(DB_DNODE(db)->dn_objset->os_spa));             \
+               if (POINTER_IS_VALID(DB_DNODE(db)->dn_objset)) {        \
+                       __assign_str(os_spa,                            \
+                       spa_name(DB_DNODE(db)->dn_objset->os_spa));     \
+               } else {                                                \
+                       __assign_str(os_spa, "NULL");                   \
+               }                                                       \
                                                                        \
                __entry->ds_object = db->db_objset->os_dsl_dataset ?    \
                db->db_objset->os_dsl_dataset->ds_object : 0;           \
diff --git a/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c 
b/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c
index 521631c51f07..d9fc66106369 100644
--- a/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c
+++ b/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c
@@ -161,7 +161,8 @@ nfs_is_shared(sa_share_impl_t impl_share)
 static int
 nfs_validate_shareopts(const char *shareopts)
 {
-       (void) shareopts;
+       if (strlen(shareopts) == 0)
+               return (SA_SYNTAX_ERR);
        return (SA_OK);
 }
 
diff --git a/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c 
b/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c
index c27e5564c1e1..004946b0cfe4 100644
--- a/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c
+++ b/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c
@@ -319,12 +319,49 @@ get_linux_shareopts_cb(const char *key, const char 
*value, void *cookie)
            "wdelay" };
 
        char **plinux_opts = (char **)cookie;
+       char *host, *val_dup, *literal, *next;
 
-       /* host-specific options, these are taken care of elsewhere */
-       if (strcmp(key, "ro") == 0 || strcmp(key, "rw") == 0 ||
-           strcmp(key, "sec") == 0)
+       if (strcmp(key, "sec") == 0)
                return (SA_OK);
 
+       if (strcmp(key, "ro") == 0 || strcmp(key, "rw") == 0) {
+               if (value == NULL || strlen(value) == 0)
+                       return (SA_OK);
+               val_dup = strdup(value);
+               host = val_dup;
+               if (host == NULL)
+                       return (SA_NO_MEMORY);
+               do {
+                       if (*host == '[') {
+                               host++;
+                               literal = strchr(host, ']');
+                               if (literal == NULL) {
+                                       free(val_dup);
+                                       return (SA_SYNTAX_ERR);
+                               }
+                               if (literal[1] == '\0')
+                                       next = NULL;
+                               else if (literal[1] == '/') {
+                                       next = strchr(literal + 2, ':');
+                                       if (next != NULL)
+                                               ++next;
+                               } else if (literal[1] == ':')
+                                       next = literal + 2;
+                               else {
+                                       free(val_dup);
+                                       return (SA_SYNTAX_ERR);
+                               }
+                       } else {
+                               next = strchr(host, ':');
+                               if (next != NULL)
+                                       ++next;
+                       }
+                       host = next;
+               } while (host != NULL);
+               free(val_dup);
+               return (SA_OK);
+       }
+
        if (strcmp(key, "anon") == 0)
                key = "anonuid";
 
@@ -472,6 +509,10 @@ static int
 nfs_validate_shareopts(const char *shareopts)
 {
        char *linux_opts = NULL;
+
+       if (strlen(shareopts) == 0)
+               return (SA_SYNTAX_ERR);
+
        int error = get_linux_shareopts(shareopts, &linux_opts);
        if (error != SA_OK)
                return (error);
diff --git a/sys/contrib/openzfs/lib/libzfs/libzfs.abi 
b/sys/contrib/openzfs/lib/libzfs/libzfs.abi
index 6e53bcb41a87..8658d39e28fc 100644
--- a/sys/contrib/openzfs/lib/libzfs/libzfs.abi
+++ b/sys/contrib/openzfs/lib/libzfs/libzfs.abi
@@ -396,6 +396,7 @@
     <elf-symbol name='zfs_prop_readonly' type='func-type' 
binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='zfs_prop_set' type='func-type' binding='global-binding' 
visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='zfs_prop_set_list' type='func-type' 
binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='zfs_prop_set_list_flags' type='func-type' 
binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='zfs_prop_setonce' type='func-type' 
binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='zfs_prop_string_to_index' type='func-type' 
binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='zfs_prop_to_name' type='func-type' 
binding='global-binding' visibility='default-visibility' is-defined='yes'/>
@@ -4424,6 +4425,12 @@
       <parameter type-id='5ce45b60' name='props'/>
       <return type-id='95e97e5e'/>
     </function-decl>
+    <function-decl name='zfs_prop_set_list_flags' 
mangled-name='zfs_prop_set_list_flags' visibility='default' binding='global' 
size-in-bits='64' elf-symbol-id='zfs_prop_set_list_flags'>
+      <parameter type-id='9200a744' name='zhp'/>
+      <parameter type-id='5ce45b60' name='props'/>
+      <parameter type-id='95e97e5e' name='flags'/>
+      <return type-id='95e97e5e'/>
+    </function-decl>
     <function-decl name='zfs_prop_inherit' mangled-name='zfs_prop_inherit' 
visibility='default' binding='global' size-in-bits='64' 
elf-symbol-id='zfs_prop_inherit'>
       <parameter type-id='9200a744' name='zhp'/>
       <parameter type-id='80f4b756' name='propname'/>
diff --git a/sys/contrib/openzfs/lib/libzfs/libzfs_changelist.c 
b/sys/contrib/openzfs/lib/libzfs/libzfs_changelist.c
index dd14c570ec03..4db1cbce9568 100644
--- a/sys/contrib/openzfs/lib/libzfs/libzfs_changelist.c
+++ b/sys/contrib/openzfs/lib/libzfs/libzfs_changelist.c
@@ -105,6 +105,15 @@ changelist_prefix(prop_changelist_t *clp)
            clp->cl_prop != ZFS_PROP_SHARESMB)
                return (0);
 
+       /*
+        * If CL_GATHER_DONT_UNMOUNT is set, don't want to unmount/unshare and
+        * later (re)mount/(re)share the filesystem in postfix phase, so we
+        * return from here. If filesystem is mounted or unmounted, leave it
+        * as it is.
+        */
+       if (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT)
+               return (0);
+
        if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL)
                return (-1);
 
@@ -129,8 +138,6 @@ changelist_prefix(prop_changelist_t *clp)
                         */
                        switch (clp->cl_prop) {
                        case ZFS_PROP_MOUNTPOINT:
-                               if (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT)
-                                       break;
                                if (zfs_unmount(cn->cn_handle, NULL,
                                    clp->cl_mflags) != 0) {
                                        ret = -1;
@@ -164,9 +171,8 @@ changelist_prefix(prop_changelist_t *clp)
  * reshare the filesystems as necessary.  In changelist_gather() we recorded
  * whether the filesystem was previously shared or mounted.  The action we take
  * depends on the previous state, and whether the value was previously 
'legacy'.
- * For non-legacy properties, we only remount/reshare the filesystem if it was
- * previously mounted/shared.  Otherwise, we always remount/reshare the
- * filesystem.
+ * For non-legacy properties, we always remount/reshare the filesystem,
+ * if CL_GATHER_DONT_UNMOUNT is not set.
  */
 int
 changelist_postfix(prop_changelist_t *clp)
@@ -174,10 +180,17 @@ changelist_postfix(prop_changelist_t *clp)
        prop_changenode_t *cn;
        uu_avl_walk_t *walk;
        char shareopts[ZFS_MAXPROPLEN];
-       int errors = 0;
        boolean_t commit_smb_shares = B_FALSE;
        boolean_t commit_nfs_shares = B_FALSE;
 
+       /*
+        * If CL_GATHER_DONT_UNMOUNT is set, it means we don't want to (un)mount
+        * or (re/un)share the filesystem, so we return from here. If filesystem
+        * is mounted or unmounted, leave it as it is.
+        */
+       if (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT)
+               return (0);
+
        /*
         * If we're changing the mountpoint, attempt to destroy the underlying
         * mountpoint.  All other datasets will have inherited from this dataset
@@ -240,17 +253,16 @@ changelist_postfix(prop_changelist_t *clp)
                needs_key = (zfs_prop_get_int(cn->cn_handle,
                    ZFS_PROP_KEYSTATUS) == ZFS_KEYSTATUS_UNAVAILABLE);
 
-               mounted = (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT) ||
-                   zfs_is_mounted(cn->cn_handle, NULL);
+               mounted = zfs_is_mounted(cn->cn_handle, NULL);
 
                if (!mounted && !needs_key && (cn->cn_mounted ||
-                   ((sharenfs || sharesmb || clp->cl_waslegacy) &&
+                   (((clp->cl_prop == ZFS_PROP_MOUNTPOINT &&
+                   clp->cl_prop == clp->cl_realprop) ||
+                   sharenfs || sharesmb || clp->cl_waslegacy) &&
                    (zfs_prop_get_int(cn->cn_handle,
                    ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_ON)))) {
 
-                       if (zfs_mount(cn->cn_handle, NULL, 0) != 0)
-                               errors++;
-                       else
+                       if (zfs_mount(cn->cn_handle, NULL, 0) == 0)
                                mounted = TRUE;
                }
 
@@ -262,19 +274,19 @@ changelist_postfix(prop_changelist_t *clp)
                const enum sa_protocol nfs[] =
                    {SA_PROTOCOL_NFS, SA_NO_PROTOCOL};
                if (sharenfs && mounted) {
-                       errors += zfs_share(cn->cn_handle, nfs);
+                       zfs_share(cn->cn_handle, nfs);
                        commit_nfs_shares = B_TRUE;
                } else if (cn->cn_shared || clp->cl_waslegacy) {
-                       errors += zfs_unshare(cn->cn_handle, NULL, nfs);
+                       zfs_unshare(cn->cn_handle, NULL, nfs);
                        commit_nfs_shares = B_TRUE;
                }
                const enum sa_protocol smb[] =
                    {SA_PROTOCOL_SMB, SA_NO_PROTOCOL};
                if (sharesmb && mounted) {
-                       errors += zfs_share(cn->cn_handle, smb);
+                       zfs_share(cn->cn_handle, smb);
                        commit_smb_shares = B_TRUE;
                } else if (cn->cn_shared || clp->cl_waslegacy) {
-                       errors += zfs_unshare(cn->cn_handle, NULL, smb);
+                       zfs_unshare(cn->cn_handle, NULL, smb);
                        commit_smb_shares = B_TRUE;
                }
        }
@@ -288,7 +300,7 @@ changelist_postfix(prop_changelist_t *clp)
        zfs_commit_shares(proto);
        uu_avl_walk_end(walk);
 
-       return (errors ? -1 : 0);
+       return (0);
 }
 
 /*
diff --git a/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c 
b/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c
index 11d3eb6a3c60..727efc5a91ad 100644
--- a/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c
+++ b/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c
@@ -1771,14 +1771,24 @@ error:
        return (ret);
 }
 
-
-
 /*
  * Given an nvlist of property names and values, set the properties for the
  * given dataset.
  */
 int
 zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props)
+{
+       return (zfs_prop_set_list_flags(zhp, props, 0));
+}
+
+/*
+ * Given an nvlist of property names, values and flags, set the properties
+ * for the given dataset. If ZFS_SET_NOMOUNT is set, it allows to update
+ * mountpoint, sharenfs and sharesmb properties without (un/re)mounting
+ * and (un/re)sharing the dataset.
+ */
+int
+zfs_prop_set_list_flags(zfs_handle_t *zhp, nvlist_t *props, int flags)
 {
        zfs_cmd_t zc = {"\0"};
        int ret = -1;
@@ -1848,7 +1858,9 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props)
                if (prop != ZFS_PROP_CANMOUNT ||
                    (fnvpair_value_uint64(elem) == ZFS_CANMOUNT_OFF &&
                    zfs_is_mounted(zhp, NULL))) {
-                       cls[cl_idx] = changelist_gather(zhp, prop, 0, 0);
+                       cls[cl_idx] = changelist_gather(zhp, prop,
+                           ((flags & ZFS_SET_NOMOUNT) ?
+                           CL_GATHER_DONT_UNMOUNT : 0), 0);
                        if (cls[cl_idx] == NULL)
                                goto error;
                }
diff --git a/sys/contrib/openzfs/man/man7/zfsprops.7 
b/sys/contrib/openzfs/man/man7/zfsprops.7
index 51ddd85eb79e..e3674b1f8a8d 100644
--- a/sys/contrib/openzfs/man/man7/zfsprops.7
+++ b/sys/contrib/openzfs/man/man7/zfsprops.7
@@ -1248,10 +1248,18 @@ Otherwise, they are automatically remounted in the new 
location if the property
 was previously
 .Sy legacy
 or
-.Sy none ,
-or if they were mounted before the property was changed.
+.Sy none .
 In addition, any shared file systems are unshared and shared in the new
 location.
+.Pp
+When the
+.Sy mountpoint
+property is set with
+.Nm zfs Cm set Fl u
+, the
+.Sy mountpoint
+property is updated but dataset is not mounted or unmounted and remains
+as it was before.
 .It Sy nbmand Ns = Ns Sy on Ns | Ns Sy off
 Controls whether the file system should be mounted with
 .Sy nbmand
@@ -1656,6 +1664,13 @@ by default.
 This means that any additional access control
 (disallow specific user specific access etc) must be done on the underlying 
file
 system.
+.Pp
+When the
+.Sy sharesmb
+property is updated with
+.Nm zfs Cm set Fl u
+, the property is set to desired value, but the operation to share, reshare
+or unshare the the dataset is not performed.
 .It Sy sharenfs Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Ar opts
 Controls whether the file system is shared via NFS, and what options are to be
 used.
@@ -1699,6 +1714,13 @@ or if they were shared before the property was changed.
 If the new property is
 .Sy off ,
 the file systems are unshared.
+.Pp
+When the
+.Sy sharenfs
+property is updated with
+.Nm zfs Cm set Fl u
+, the property is set to desired value, but the operation to share, reshare
+or unshare the the dataset is not performed.
 .It Sy logbias Ns = Ns Sy latency Ns | Ns Sy throughput
 Provide a hint to ZFS about handling of synchronous requests in this dataset.
 If
diff --git a/sys/contrib/openzfs/man/man8/zfs-set.8 
b/sys/contrib/openzfs/man/man8/zfs-set.8
index 4cabdcd8bd83..c01bcc643e5d 100644
--- a/sys/contrib/openzfs/man/man8/zfs-set.8
+++ b/sys/contrib/openzfs/man/man8/zfs-set.8
@@ -39,6 +39,7 @@
 .Sh SYNOPSIS
 .Nm zfs
 .Cm set
+.Op Fl u
 .Ar property Ns = Ns Ar value Oo Ar property Ns = Ns Ar value Oc Ns …
 .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot Ns …
 .Nm zfs
@@ -60,6 +61,7 @@
 .It Xo
 .Nm zfs
 .Cm set
+.Op Fl u
 .Ar property Ns = Ns Ar value Oo Ar property Ns = Ns Ar value Oc Ns …
 .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot Ns …
 .Xc
@@ -79,6 +81,11 @@ For more information, see the
 .Em User Properties
 section of
 .Xr zfsprops 7 .
+.Bl -tag -width "-u"
+.It Fl u
+Update mountpoint, sharenfs, sharesmb property but do not mount or share the
+dataset.
+.El
 .It Xo
 .Nm zfs
 .Cm get
diff --git a/sys/contrib/openzfs/module/zfs/dsl_dir.c 
b/sys/contrib/openzfs/module/zfs/dsl_dir.c
index bbe6a03d620f..baf970121a61 100644
--- a/sys/contrib/openzfs/module/zfs/dsl_dir.c
+++ b/sys/contrib/openzfs/module/zfs/dsl_dir.c
@@ -26,6 +26,7 @@
  * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
  * Copyright (c) 2016 Actifio, Inc. All rights reserved.
  * Copyright (c) 2018, loli10K <ezomori.noz...@gmail.com>. All rights reserved.
+ * Copyright (c) 2023 Hewlett Packard Enterprise Development LP.
  */
 
 #include <sys/dmu.h>
@@ -1358,30 +1359,23 @@ top_of_function:
                ext_quota = 0;
 
        if (used_on_disk >= quota) {
+               if (retval == ENOSPC && (used_on_disk - quota) <
+                   dsl_pool_deferred_space(dd->dd_pool)) {
+                       retval = SET_ERROR(ERESTART);
+               }
                /* Quota exceeded */
                mutex_exit(&dd->dd_lock);
                DMU_TX_STAT_BUMP(dmu_tx_quota);
                return (retval);
        } else if (used_on_disk + est_inflight >= quota + ext_quota) {
-               if (est_inflight > 0 || used_on_disk < quota) {
-                       retval = SET_ERROR(ERESTART);
-               } else {
-                       ASSERT3U(used_on_disk, >=, quota);
-
-                       if (retval == ENOSPC && (used_on_disk - quota) <
-                           dsl_pool_deferred_space(dd->dd_pool)) {
-                               retval = SET_ERROR(ERESTART);
-                       }
-               }
-
                dprintf_dd(dd, "failing: used=%lluK inflight = %lluK "
-                   "quota=%lluK tr=%lluK err=%d\n",
+                   "quota=%lluK tr=%lluK\n",
                    (u_longlong_t)used_on_disk>>10,
                    (u_longlong_t)est_inflight>>10,
-                   (u_longlong_t)quota>>10, (u_longlong_t)asize>>10, retval);
+                   (u_longlong_t)quota>>10, (u_longlong_t)asize>>10);
                mutex_exit(&dd->dd_lock);
                DMU_TX_STAT_BUMP(dmu_tx_quota);
-               return (retval);
+               return (SET_ERROR(ERESTART));
        }
 
        /* We need to up our estimated delta before dropping dd_lock */
diff --git a/sys/contrib/openzfs/module/zfs/metaslab.c 
b/sys/contrib/openzfs/module/zfs/metaslab.c
index 20dc934593f1..cdf599b17924 100644
--- a/sys/contrib/openzfs/module/zfs/metaslab.c
+++ b/sys/contrib/openzfs/module/zfs/metaslab.c
@@ -3208,6 +3208,15 @@ metaslab_segment_weight(metaslab_t *msp)
 static boolean_t
 metaslab_should_allocate(metaslab_t *msp, uint64_t asize, boolean_t try_hard)
 {
+       /*
+        * This case will usually but not always get caught by the checks below;
+        * metaslabs can be loaded by various means, including the trim and
+        * initialize code. Once that happens, without this check they are
+        * allocatable even before they finish their first txg sync.
+        */
+       if (unlikely(msp->ms_new))
+               return (B_FALSE);
+
        /*
         * If the metaslab is loaded, ms_max_size is definitive and we can use
         * the fast check. If it's not, the ms_max_size is a lower bound (once
diff --git a/sys/contrib/openzfs/module/zfs/vdev_label.c 
b/sys/contrib/openzfs/module/zfs/vdev_label.c
index a5c76808f2d2..a2e5524a8391 100644
--- a/sys/contrib/openzfs/module/zfs/vdev_label.c
+++ b/sys/contrib/openzfs/module/zfs/vdev_label.c
@@ -1138,6 +1138,16 @@ vdev_label_init(vdev_t *vd, uint64_t crtxg, 
vdev_labeltype_t reason)
                    POOL_STATE_L2CACHE) == 0);
                VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_GUID,
                    vd->vdev_guid) == 0);
+
+               /*
+                * This is merely to facilitate reporting the ashift of the
+                * cache device through zdb. The actual retrieval of the
+                * ashift (in vdev_alloc()) uses the nvlist
+                * spa->spa_l2cache->sav_config (populated in
+                * spa_ld_open_aux_vdevs()).
+                */
+               VERIFY(nvlist_add_uint64(label, ZPOOL_CONFIG_ASHIFT,
+                   vd->vdev_ashift) == 0);
        } else {
                uint64_t txg = 0ULL;
 
diff --git a/sys/contrib/openzfs/module/zfs/vdev_rebuild.c 
b/sys/contrib/openzfs/module/zfs/vdev_rebuild.c
index 75c3900cbb0c..6503390f7973 100644
--- a/sys/contrib/openzfs/module/zfs/vdev_rebuild.c
+++ b/sys/contrib/openzfs/module/zfs/vdev_rebuild.c
@@ -807,12 +807,12 @@ vdev_rebuild_thread(void *arg)
 
                /*
                 * Calculate the max number of in-flight bytes for top-level
-                * vdev scanning operations (minimum 1MB, maximum 1/4 of
+                * vdev scanning operations (minimum 1MB, maximum 1/2 of
                 * arc_c_max shared by all top-level vdevs).  Limits for the
                 * issuing phase are done per top-level vdev and are handled
                 * separately.
                 */
-               uint64_t limit = (arc_c_max / 4) / MAX(rvd->vdev_children, 1);
+               uint64_t limit = (arc_c_max / 2) / MAX(rvd->vdev_children, 1);
                vr->vr_bytes_inflight_max = MIN(limit, MAX(1ULL << 20,
                    zfs_rebuild_vdev_limit * vd->vdev_children));
 
diff --git a/sys/contrib/openzfs/module/zfs/zfs_vnops.c 
b/sys/contrib/openzfs/module/zfs/zfs_vnops.c
index a64e1e2dc83d..40d6c87a754e 100644
--- a/sys/contrib/openzfs/module/zfs/zfs_vnops.c
+++ b/sys/contrib/openzfs/module/zfs/zfs_vnops.c
@@ -1206,6 +1206,19 @@ zfs_clone_range(znode_t *inzp, uint64_t *inoffp, znode_t 
*outzp,
                goto unlock;
        }
 
+       /*
+        * If we are copying only one block and it is smaller than recordsize
+        * property, do not allow destination to grow beyond one block if it
+        * is not there yet.  Otherwise the destination will get stuck with
+        * that block size forever, that can be as small as 512 bytes, no
+        * matter how big the destination grow later.
+        */
+       if (len <= inblksz && inblksz < outzfsvfs->z_max_blksz &&
+           outzp->z_size <= inblksz && outoff + len > inblksz) {
+               error = SET_ERROR(EINVAL);
+               goto unlock;
+       }
+
        error = zn_rlimit_fsize(outoff + len);
        if (error != 0) {
                goto unlock;
diff --git a/sys/contrib/openzfs/tests/runfiles/common.run 
b/sys/contrib/openzfs/tests/runfiles/common.run
index 342f56d50d04..ef787c65c0f9 100644
--- a/sys/contrib/openzfs/tests/runfiles/common.run
+++ b/sys/contrib/openzfs/tests/runfiles/common.run
@@ -281,7 +281,7 @@ tests = ['cache_001_pos', 'cache_002_neg', 
'canmount_001_pos',
     'user_property_004_pos', 'version_001_neg', 'zfs_set_001_neg',
     'zfs_set_002_neg', 'zfs_set_003_neg', 'property_alias_001_pos',
     'mountpoint_003_pos', 'ro_props_001_pos', 'zfs_set_keylocation',
-    'zfs_set_feature_activation']
+    'zfs_set_feature_activation', 'zfs_set_nomount']
 tags = ['functional', 'cli_root', 'zfs_set']
 
 [tests/functional/cli_root/zfs_share]
diff --git a/sys/contrib/openzfs/tests/runfiles/sanity.run 
b/sys/contrib/openzfs/tests/runfiles/sanity.run
index 449bf1c0f56a..ab41c05b8473 100644
--- a/sys/contrib/openzfs/tests/runfiles/sanity.run
+++ b/sys/contrib/openzfs/tests/runfiles/sanity.run
@@ -212,7 +212,7 @@ tests = ['cache_001_pos', 'cache_002_neg', 
'canmount_001_pos',
     'user_property_001_pos', 'user_property_003_neg', 'readonly_001_pos',
     'user_property_004_pos', 'version_001_neg',
     'zfs_set_003_neg', 'property_alias_001_pos',
-    'zfs_set_keylocation', 'zfs_set_feature_activation']
+    'zfs_set_keylocation', 'zfs_set_feature_activation', 'zfs_set_nomount']
 tags = ['functional', 'cli_root', 'zfs_set']
 
 [tests/functional/cli_root/zfs_snapshot]
diff --git a/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in 
b/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in
index e1bbe063ab4c..558e4b57279d 100755
--- a/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in
+++ b/sys/contrib/openzfs/tests/test-runner/bin/zts-report.py.in
@@ -214,6 +214,7 @@ maybe = {
     'cli_root/zfs_get/zfs_get_009_pos': ['SKIP', 5479],
     'cli_root/zfs_rollback/zfs_rollback_001_pos': ['FAIL', known_reason],
     'cli_root/zfs_rollback/zfs_rollback_002_pos': ['FAIL', known_reason],
+    'cli_root/zfs_share/zfs_share_concurrent_shares': ['FAIL', known_reason],
     'cli_root/zfs_snapshot/zfs_snapshot_002_neg': ['FAIL', known_reason],
     'cli_root/zfs_unshare/zfs_unshare_006_pos': ['SKIP', na_reason],
     'cli_root/zpool_add/zpool_add_004_pos': ['FAIL', known_reason],
@@ -259,10 +260,9 @@ if sys.platform.startswith('freebsd'):
     maybe.update({
         'cli_root/zfs_copies/zfs_copies_002_pos': ['FAIL', known_reason],
         'cli_root/zfs_inherit/zfs_inherit_001_neg': ['FAIL', known_reason],
-        'cli_root/zfs_share/zfs_share_concurrent_shares':
-            ['FAIL', known_reason],
         'cli_root/zpool_import/zpool_import_012_pos': ['FAIL', known_reason],
         'delegate/zfs_allow_003_pos': ['FAIL', known_reason],
+        'delegate/zfs_allow_010_pos': ['FAIL', known_reason],
         'inheritance/inherit_001_pos': ['FAIL', 11829],
         'resilver/resilver_restart_001': ['FAIL', known_reason],
         'pool_checkpoint/checkpoint_big_rewind': ['FAIL', 12622],
diff --git a/sys/contrib/openzfs/tests/zfs-tests/tests/Makefile.am 
b/sys/contrib/openzfs/tests/zfs-tests/tests/Makefile.am
index 1a58e6f774e9..3272a5d5816f 100644
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/Makefile.am
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/Makefile.am
@@ -870,6 +870,7 @@ nobase_dist_datadir_zfs_tests_tests_SCRIPTS += \
        functional/cli_root/zfs_set/zfs_set_003_neg.ksh \
        functional/cli_root/zfs_set/zfs_set_feature_activation.ksh \
        functional/cli_root/zfs_set/zfs_set_keylocation.ksh \
+       functional/cli_root/zfs_set/zfs_set_nomount.ksh \
        functional/cli_root/zfs_share/cleanup.ksh \
        functional/cli_root/zfs_share/setup.ksh \
        functional/cli_root/zfs_share/zfs_share_001_pos.ksh \
diff --git 
a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_fallback_same_txg.ksh
 
b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_fallback_same_txg.ksh
index 74c5a5bece60..2cd2f4763a73 100755
*** 413 LINES SKIPPED ***

Reply via email to