diff options
author | Martin Matuska <mm@FreeBSD.org> | 2021-04-14 10:49:10 +0000 |
---|---|---|
committer | Martin Matuska <mm@FreeBSD.org> | 2021-04-14 10:51:51 +0000 |
commit | 6db169e920810bf1d7e9bd2fad5da92bfb696677 (patch) | |
tree | f0150cc8730eb3e32d0462e6546a176a9eba3b19 /sys/contrib/openzfs/lib | |
parent | 6678e75e4ff9026357950e97964e901d807578a5 (diff) | |
parent | d76d37d9c3f33de9155c16f3b1eceb288c0702a0 (diff) | |
download | src-6db169e920810bf1d7e9bd2fad5da92bfb696677.tar.gz src-6db169e920810bf1d7e9bd2fad5da92bfb696677.zip |
zfs: merge openzfs/zfs@3522f57b6 (master)
Notable upstream pull request merges:
#11742 When specifying raidz vdev name, parity count should match
#11744 Use a helper function to clarify gang block size
#11771 Support running FreeBSD buildworld on Arm-based macOS hosts
This is the last update that will be MFCed into stable/13.
From now on, the tracking of OpenZFS branches will be different:
- main continues tracking openzfs/zfs/master
- stable/13 is going to track openzfs/zfs/zfs-2.1-release
Obtained from: OpenZFS
MFC after: 1 week
Diffstat (limited to 'sys/contrib/openzfs/lib')
6 files changed, 30 insertions, 7 deletions
diff --git a/sys/contrib/openzfs/lib/libspl/include/sys/dklabel.h b/sys/contrib/openzfs/lib/libspl/include/sys/dklabel.h index 95faf2bb4ab3..8c2ca06c0cbc 100644 --- a/sys/contrib/openzfs/lib/libspl/include/sys/dklabel.h +++ b/sys/contrib/openzfs/lib/libspl/include/sys/dklabel.h @@ -31,7 +31,6 @@ #include <sys/isa_defs.h> #include <sys/types32.h> -#include <sys/isa_defs.h> #ifdef __cplusplus extern "C" { diff --git a/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c b/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c index 47418b3237bb..4598e87f2921 100644 --- a/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c +++ b/sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c @@ -48,7 +48,6 @@ #include <sys/mount.h> #include <pwd.h> #include <grp.h> -#include <stddef.h> #include <ucred.h> #ifdef HAVE_IDMAP #include <idmap.h> @@ -66,7 +65,6 @@ #include "zfs_namecheck.h" #include "zfs_prop.h" #include "libzfs_impl.h" -#include "libzfs.h" #include "zfs_deleg.h" static int userquota_propname_decode(const char *propname, boolean_t zoned, diff --git a/sys/contrib/openzfs/lib/libzfs/libzfs_pool.c b/sys/contrib/openzfs/lib/libzfs/libzfs_pool.c index 1934466536dc..9ef97cd677ff 100644 --- a/sys/contrib/openzfs/lib/libzfs/libzfs_pool.c +++ b/sys/contrib/openzfs/lib/libzfs/libzfs_pool.c @@ -49,7 +49,6 @@ #include <dlfcn.h> #include <libzutil.h> #include <fcntl.h> -#include <unistd.h> #include "zfs_namecheck.h" #include "zfs_prop.h" @@ -2670,6 +2669,36 @@ vdev_to_nvlist_iter(nvlist_t *nv, nvlist_t *search, boolean_t *avail_spare, errno = 0; vdev_id = strtoull(idx, &end, 10); + /* + * If we are looking for a raidz and a parity is + * specified, make sure it matches. + */ + int rzlen = strlen(VDEV_TYPE_RAIDZ); + assert(rzlen == strlen(VDEV_TYPE_DRAID)); + int typlen = strlen(type); + if ((strncmp(type, VDEV_TYPE_RAIDZ, rzlen) == 0 || + strncmp(type, VDEV_TYPE_DRAID, rzlen) == 0) && + typlen != rzlen) { + uint64_t vdev_parity; + int parity = *(type + rzlen) - '0'; + + if (parity <= 0 || parity > 3 || + (typlen - rzlen) != 1) { + /* + * Nonsense parity specified, can + * never match + */ + free(type); + return (NULL); + } + verify(nvlist_lookup_uint64(nv, + ZPOOL_CONFIG_NPARITY, &vdev_parity) == 0); + if ((int)vdev_parity != parity) { + free(type); + break; + } + } + free(type); if (errno != 0) return (NULL); diff --git a/sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c b/sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c index 1e3a0bf5618a..bc887e72a23c 100644 --- a/sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c +++ b/sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c @@ -48,7 +48,6 @@ #include <sys/avl.h> #include <sys/debug.h> #include <sys/stat.h> -#include <stddef.h> #include <pthread.h> #include <umem.h> #include <time.h> diff --git a/sys/contrib/openzfs/lib/libzutil/os/linux/zutil_import_os.c b/sys/contrib/openzfs/lib/libzutil/os/linux/zutil_import_os.c index 519ab3a078e3..2e0baecb3bec 100644 --- a/sys/contrib/openzfs/lib/libzutil/os/linux/zutil_import_os.c +++ b/sys/contrib/openzfs/lib/libzutil/os/linux/zutil_import_os.c @@ -61,7 +61,6 @@ #include <sys/dktp/fdisk.h> #include <sys/vdev_impl.h> #include <sys/fs/zfs.h> -#include <sys/vdev_impl.h> #include <thread_pool.h> #include <libzutil.h> diff --git a/sys/contrib/openzfs/lib/libzutil/zutil_import.c b/sys/contrib/openzfs/lib/libzutil/zutil_import.c index e1f31b385503..93d05354f30f 100644 --- a/sys/contrib/openzfs/lib/libzutil/zutil_import.c +++ b/sys/contrib/openzfs/lib/libzutil/zutil_import.c @@ -62,7 +62,6 @@ #include <sys/dktp/fdisk.h> #include <sys/vdev_impl.h> #include <sys/fs/zfs.h> -#include <sys/vdev_impl.h> #include <thread_pool.h> #include <libzutil.h> |