aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/lib
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2021-04-14 10:49:10 +0000
committerMartin Matuska <mm@FreeBSD.org>2021-04-14 10:51:51 +0000
commit6db169e920810bf1d7e9bd2fad5da92bfb696677 (patch)
treef0150cc8730eb3e32d0462e6546a176a9eba3b19 /sys/contrib/openzfs/lib
parent6678e75e4ff9026357950e97964e901d807578a5 (diff)
parentd76d37d9c3f33de9155c16f3b1eceb288c0702a0 (diff)
downloadsrc-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')
-rw-r--r--sys/contrib/openzfs/lib/libspl/include/sys/dklabel.h1
-rw-r--r--sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c2
-rw-r--r--sys/contrib/openzfs/lib/libzfs/libzfs_pool.c31
-rw-r--r--sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c1
-rw-r--r--sys/contrib/openzfs/lib/libzutil/os/linux/zutil_import_os.c1
-rw-r--r--sys/contrib/openzfs/lib/libzutil/zutil_import.c1
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>