From 1155b69290a45f0cf55cb8ba1e4e5659e3264e66 Mon Sep 17 00:00:00 2001 From: Zach Dykstra Date: Sat, 12 Mar 2022 09:57:21 -0600 Subject: [PATCH] zfs: update to 2.1.3. --- ...1-only-build-the-module-in-dkms.conf.patch | 43 +++ srcpkgs/zfs/patches/12975.patch | 276 ------------------ srcpkgs/zfs/patches/dkms.patch | 39 --- srcpkgs/zfs/patches/musl-seek-constants.patch | 58 ---- srcpkgs/zfs/template | 6 +- 5 files changed, 46 insertions(+), 376 deletions(-) create mode 100644 srcpkgs/zfs/patches/0001-only-build-the-module-in-dkms.conf.patch delete mode 100644 srcpkgs/zfs/patches/12975.patch delete mode 100644 srcpkgs/zfs/patches/dkms.patch delete mode 100644 srcpkgs/zfs/patches/musl-seek-constants.patch diff --git a/srcpkgs/zfs/patches/0001-only-build-the-module-in-dkms.conf.patch b/srcpkgs/zfs/patches/0001-only-build-the-module-in-dkms.conf.patch new file mode 100644 index 000000000000..cd9e890ab76e --- /dev/null +++ b/srcpkgs/zfs/patches/0001-only-build-the-module-in-dkms.conf.patch @@ -0,0 +1,43 @@ +# Patch from https://aur.archlinux.org/cgit/aur.git/tree/0001-only-build-the-module-in-dkms.conf.patch?h=zfs-dkms +# Avoids recompiling ZFS userland utilities with DKMS rebuilds +From b4a2c0b184c9c9599421b15a430fb88deb5dbd17 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz +Date: Sun, 28 Oct 2018 15:01:58 -0400 +Subject: [PATCH] only build the module in dkms.conf + +--- + scripts/dkms.mkconf | 19 ++----------------- + 1 file changed, 2 insertions(+), 17 deletions(-) + +diff --git a/scripts/dkms.mkconf b/scripts/dkms.mkconf +index 88c289383..5a859a0e0 100755 +--- a/scripts/dkms.mkconf ++++ b/scripts/dkms.mkconf +@@ -28,14 +28,7 @@ PACKAGE_CONFIG="${pkgcfg}" + PRE_BUILD="configure + --prefix=/usr + --with-config=kernel +- --with-linux=\$( +- if [ -e "\${kernel_source_dir/%build/source}" ] +- then +- echo "\${kernel_source_dir/%build/source}" +- else +- echo "\${kernel_source_dir}" +- fi +- ) ++ --with-linux="\${kernel_source_dir}" + --with-linux-obj="\${kernel_source_dir}" + \$( + [[ -n \"\${ICP_ROOT}\" ]] && \\ +@@ -69,7 +54,7 @@ POST_BUILD="scripts/dkms.postbuild + " + AUTOINSTALL="yes" + REMAKE_INITRD="no" +-MAKE[0]="make" ++MAKE[0]="make -C module/" + STRIP[0]="\$( + [[ -r \${PACKAGE_CONFIG} ]] \\ + && source \${PACKAGE_CONFIG} \\ +-- +2.19.1 + diff --git a/srcpkgs/zfs/patches/12975.patch b/srcpkgs/zfs/patches/12975.patch deleted file mode 100644 index 13d08e98d8bb..000000000000 --- a/srcpkgs/zfs/patches/12975.patch +++ /dev/null @@ -1,276 +0,0 @@ -From 7b926912e9a968341c2140f7b887261fea86c706 Mon Sep 17 00:00:00 2001 -From: Rich Ercolani -Date: Fri, 14 Jan 2022 05:09:08 -0500 -Subject: [PATCH 1/4] Linux 5.16 compat: Check slab.h for kvmalloc - -As it says on the tin - the folio work moved a bunch out of mm.h. - -Signed-off-by: Rich Ercolani ---- - config/kernel-kmem.m4 | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/config/kernel-kmem.m4 b/config/kernel-kmem.m4 -index 43f9e72f88d..03c2a41fbdb 100644 ---- a/config/kernel-kmem.m4 -+++ b/config/kernel-kmem.m4 -@@ -64,6 +64,7 @@ dnl # - AC_DEFUN([ZFS_AC_KERNEL_SRC_KVMALLOC], [ - ZFS_LINUX_TEST_SRC([kvmalloc], [ - #include -+ #include - ],[ - void *p __attribute__ ((unused)); - - -From 1ca38ed9280ce80e7a12813b54dc5ade5e78f61b Mon Sep 17 00:00:00 2001 -From: Rich Ercolani -Date: Fri, 14 Jan 2022 05:08:33 -0500 -Subject: [PATCH 2/4] Linux 5.16 compat: Added add_disk check for return - -add_disk went from void to must-check int return. - -Signed-off-by: Rich Ercolani ---- - config/kernel-add-disk.m4 | 27 +++++++++++++++++++++++++++ - config/kernel.m4 | 2 ++ - module/os/linux/zfs/zvol_os.c | 4 ++++ - 3 files changed, 33 insertions(+) - create mode 100644 config/kernel-add-disk.m4 - -diff --git a/config/kernel-add-disk.m4 b/config/kernel-add-disk.m4 -new file mode 100644 -index 00000000000..3bc40f1e7d2 ---- /dev/null -+++ b/config/kernel-add-disk.m4 -@@ -0,0 +1,27 @@ -+dnl # -+dnl # 5.16 API change -+dnl # add_disk grew a must-check return code -+dnl # -+AC_DEFUN([ZFS_AC_KERNEL_SRC_ADD_DISK], [ -+ -+ ZFS_LINUX_TEST_SRC([add_disk_ret], [ -+ #include -+ ], [ -+ struct gendisk *disk = NULL; -+ int err = add_disk(disk); -+ err = err; -+ ]) -+ -+]) -+ -+AC_DEFUN([ZFS_AC_KERNEL_ADD_DISK], [ -+ AC_MSG_CHECKING([whether add_disk() returns int]) -+ ZFS_LINUX_TEST_RESULT([add_disk_ret], -+ [ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_ADD_DISK_RET, 1, -+ [add_disk() returns int]) -+ ], [ -+ AC_MSG_RESULT(no) -+ ]) -+]) -diff --git a/config/kernel.m4 b/config/kernel.m4 -index bdd3caed2b3..b3ed966b726 100644 ---- a/config/kernel.m4 -+++ b/config/kernel.m4 -@@ -135,6 +135,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [ - ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS - ZFS_AC_KERNEL_SRC_STANDALONE_LINUX_STDARG - ZFS_AC_KERNEL_SRC_PAGEMAP_FOLIO_WAIT_BIT -+ ZFS_AC_KERNEL_SRC_ADD_DISK - - AC_MSG_CHECKING([for available kernel interfaces]) - ZFS_LINUX_TEST_COMPILE_ALL([kabi]) -@@ -243,6 +244,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [ - ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS - ZFS_AC_KERNEL_STANDALONE_LINUX_STDARG - ZFS_AC_KERNEL_PAGEMAP_FOLIO_WAIT_BIT -+ ZFS_AC_KERNEL_ADD_DISK - ]) - - dnl # -diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c -index cef52e22483..e26d4db4977 100644 ---- a/module/os/linux/zfs/zvol_os.c -+++ b/module/os/linux/zfs/zvol_os.c -@@ -1110,7 +1110,11 @@ zvol_os_create_minor(const char *name) - rw_enter(&zvol_state_lock, RW_WRITER); - zvol_insert(zv); - rw_exit(&zvol_state_lock); -+#ifdef HAVE_ADD_DISK_RET -+ error = add_disk(zv->zv_zso->zvo_disk); -+#else - add_disk(zv->zv_zso->zvo_disk); -+#endif - } else { - ida_simple_remove(&zvol_ida, idx); - } - -From a0b11a8996b55a0bb3c1c100fa6f392ca90d74b0 Mon Sep 17 00:00:00 2001 -From: Rich Ercolani -Date: Fri, 14 Jan 2022 05:07:33 -0500 -Subject: [PATCH 3/4] Linux 5.16 compat: Added mapping for - iov_iter_fault_in_readable - -Linux decided to rename this for some reason. At some point, we -should probably invert this mapping, but for now... - -Signed-off-by: Rich Ercolani ---- - config/kernel-add-disk.m4 | 1 - - config/kernel-vfs-iov_iter.m4 | 22 ++++++++++++++++++++-- - include/os/linux/spl/sys/uio.h | 4 ++++ - 3 files changed, 24 insertions(+), 3 deletions(-) - -diff --git a/config/kernel-add-disk.m4 b/config/kernel-add-disk.m4 -index 3bc40f1e7d2..5d1779eb432 100644 ---- a/config/kernel-add-disk.m4 -+++ b/config/kernel-add-disk.m4 -@@ -13,7 +13,6 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_ADD_DISK], [ - ]) - - ]) -- - AC_DEFUN([ZFS_AC_KERNEL_ADD_DISK], [ - AC_MSG_CHECKING([whether add_disk() returns int]) - ZFS_LINUX_TEST_RESULT([add_disk_ret], -diff --git a/config/kernel-vfs-iov_iter.m4 b/config/kernel-vfs-iov_iter.m4 -index ecdda939f1c..57f78745a24 100644 ---- a/config/kernel-vfs-iov_iter.m4 -+++ b/config/kernel-vfs-iov_iter.m4 -@@ -41,6 +41,17 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_IOV_ITER], [ - error = iov_iter_fault_in_readable(&iter, size); - ]) - -+ ZFS_LINUX_TEST_SRC([fault_in_iov_iter_readable], [ -+ #include -+ #include -+ ],[ -+ struct iov_iter iter = { 0 }; -+ size_t size = 512; -+ int error __attribute__ ((unused)); -+ -+ error = fault_in_iov_iter_readable(&iter, size); -+ ]) -+ - ZFS_LINUX_TEST_SRC([iov_iter_count], [ - #include - #include -@@ -123,8 +134,15 @@ AC_DEFUN([ZFS_AC_KERNEL_VFS_IOV_ITER], [ - AC_DEFINE(HAVE_IOV_ITER_FAULT_IN_READABLE, 1, - [iov_iter_fault_in_readable() is available]) - ],[ -- AC_MSG_RESULT(no) -- enable_vfs_iov_iter="no" -+ AC_MSG_CHECKING([whether fault_in_iov_iter_readable() is available]) -+ ZFS_LINUX_TEST_RESULT([fault_in_iov_iter_readable], [ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_FAULT_IN_IOV_ITER_READABLE, 1, -+ [fault_in_iov_iter_readable() is available]) -+ ],[ -+ AC_MSG_RESULT(no) -+ enable_vfs_iov_iter="no" -+ ]) - ]) - - AC_MSG_CHECKING([whether iov_iter_count() is available]) -diff --git a/include/os/linux/spl/sys/uio.h b/include/os/linux/spl/sys/uio.h -index 66af2b0b534..439eec98623 100644 ---- a/include/os/linux/spl/sys/uio.h -+++ b/include/os/linux/spl/sys/uio.h -@@ -34,6 +34,10 @@ - #include - #include - -+#if defined(HAVE_VFS_IOV_ITER) && defined(HAVE_FAULT_IN_IOV_ITER_READABLE) -+#define iov_iter_fault_in_readable(a, b) fault_in_iov_iter_readable(a, b) -+#endif -+ - typedef struct iovec iovec_t; - - typedef enum zfs_uio_rw { - -From 700bb88b595d0e73ad3c19767cec68cb8081be2d Mon Sep 17 00:00:00 2001 -From: Rich Ercolani -Date: Wed, 19 Jan 2022 00:12:15 -0500 -Subject: [PATCH 4/4] Add support for FALLOC_FL_ZERO_RANGE - -For us, I think it's always just FALLOC_FL_PUNCH_HOLE with a fake -mustache on. - -Signed-off-by: Rich Ercolani ---- - config/kernel-fallocate.m4 | 17 +++++++++++++++++ - module/os/linux/zfs/zpl_file.c | 9 +++++++-- - 2 files changed, 24 insertions(+), 2 deletions(-) - -diff --git a/config/kernel-fallocate.m4 b/config/kernel-fallocate.m4 -index 7a8550f7e76..815602d3e2c 100644 ---- a/config/kernel-fallocate.m4 -+++ b/config/kernel-fallocate.m4 -@@ -3,6 +3,10 @@ dnl # Linux 2.6.38 - 3.x API - dnl # The fallocate callback was moved from the inode_operations - dnl # structure to the file_operations structure. - dnl # -+dnl # -+dnl # Linux 3.15+ -+dnl # fallocate learned a new flag, FALLOC_FL_ZERO_RANGE -+dnl # - AC_DEFUN([ZFS_AC_KERNEL_SRC_FALLOCATE], [ - ZFS_LINUX_TEST_SRC([file_fallocate], [ - #include -@@ -15,12 +19,25 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FALLOCATE], [ - .fallocate = test_fallocate, - }; - ], []) -+ ZFS_LINUX_TEST_SRC([falloc_fl_zero_range], [ -+ #include -+ ],[ -+ int flags __attribute__ ((unused)); -+ flags = FALLOC_FL_ZERO_RANGE; -+ ]) - ]) - - AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [ - AC_MSG_CHECKING([whether fops->fallocate() exists]) - ZFS_LINUX_TEST_RESULT([file_fallocate], [ - AC_MSG_RESULT(yes) -+ AC_MSG_CHECKING([whether FALLOC_FL_ZERO_RANGE exists]) -+ ZFS_LINUX_TEST_RESULT([falloc_fl_zero_range], [ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_FALLOC_FL_ZERO_RANGE, 1, [FALLOC_FL_ZERO_RANGE is defined]) -+ ],[ -+ AC_MSG_RESULT(no) -+ ]) - ],[ - ZFS_LINUX_TEST_ERROR([file_fallocate]) - ]) -diff --git a/module/os/linux/zfs/zpl_file.c b/module/os/linux/zfs/zpl_file.c -index 21926f170c5..a3af1804f6a 100644 ---- a/module/os/linux/zfs/zpl_file.c -+++ b/module/os/linux/zfs/zpl_file.c -@@ -745,7 +745,12 @@ zpl_fallocate_common(struct inode *ip, int mode, loff_t offset, loff_t len) - fstrans_cookie_t cookie; - int error = 0; - -- if ((mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) != 0) -+ int test_mode = FALLOC_FL_PUNCH_HOLE; -+#ifdef HAVE_FALLOC_FL_ZERO_RANGE -+ test_mode |= FALLOC_FL_ZERO_RANGE; -+#endif -+ -+ if ((mode & ~(FALLOC_FL_KEEP_SIZE | test_mode)) != 0) - return (-EOPNOTSUPP); - - if (offset < 0 || len <= 0) -@@ -756,7 +761,7 @@ zpl_fallocate_common(struct inode *ip, int mode, loff_t offset, loff_t len) - - crhold(cr); - cookie = spl_fstrans_mark(); -- if (mode & FALLOC_FL_PUNCH_HOLE) { -+ if (mode & (test_mode)) { - flock64_t bf; - - if (offset > olen) diff --git a/srcpkgs/zfs/patches/dkms.patch b/srcpkgs/zfs/patches/dkms.patch deleted file mode 100644 index 850a976534d4..000000000000 --- a/srcpkgs/zfs/patches/dkms.patch +++ /dev/null @@ -1,39 +0,0 @@ -# Patch from https://aur.archlinux.org/packages/zfs-dkms/ -# Avoids recompiling ZFS userland utilities with DKMS rebuilds -# Also short-circuits a useless test for Debian in the DKMS source - ---- a/scripts/dkms.mkconf 2021-01-19 19:19:08.000000000 -0500 -+++ b/scripts/dkms.mkconf 2021-02-02 19:03:02.045984881 -0500 -@@ -26,22 +26,7 @@ - PRE_BUILD="configure - --prefix=/usr - --with-config=kernel -- --with-linux=\$( -- case \`lsb_release -is\` in -- (Debian|Devuan) -- if [[ -e \${kernel_source_dir/%build/source} ]] -- then -- echo \${kernel_source_dir/%build/source} -- else -- # A kpkg exception for Proxmox 2.0 -- echo \${kernel_source_dir} -- fi -- ;; -- (*) -- echo \${kernel_source_dir} -- ;; -- esac -- ) -+ --with-linux=\${kernel_source_dir} - --with-linux-obj=\${kernel_source_dir} - \$( - [[ -n \"\${ICP_ROOT}\" ]] && \\ -@@ -75,7 +60,7 @@ - " - AUTOINSTALL="yes" - REMAKE_INITRD="no" --MAKE[0]="make" -+MAKE[0]="make -C module/" - STRIP[0]="\$( - [[ -r \${PACKAGE_CONFIG} ]] \\ - && source \${PACKAGE_CONFIG} \\ diff --git a/srcpkgs/zfs/patches/musl-seek-constants.patch b/srcpkgs/zfs/patches/musl-seek-constants.patch deleted file mode 100644 index 3d2c563f8c51..000000000000 --- a/srcpkgs/zfs/patches/musl-seek-constants.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 123c87b3c2d75636da79f57a4b0ed60d2a3133a8 Mon Sep 17 00:00:00 2001 -From: Georgy Yakovlev -Date: Mon, 20 Dec 2021 12:25:11 -0800 -Subject: [PATCH] zfs-test/mmap_seek: fix build on musl - -it needs linux/fs.h for SEEK_DATA and friends - -without linux/fs.h: - -``` -mmap_seek.c -mmap_seek.c: In function 'seek_data': -mmap_seek.c:37:40: error: 'SEEK_DATA' undeclared (first use in this function); -did you mean 'SEEK_SET'? - 37 | off_t data_offset = lseek(fd, offset, SEEK_DATA); -``` - -also it needs sys/sysmacros.h for P2ROUNDUP -without it: - -``` -mmap_seek.c: In function 'main': -mmap_seek.c:122:19: warning: -implicit declaration of function 'P2ROUNDUP' [-Wimplicit-function-declaration] - 122 | seek_hole(fd, 0, P2ROUNDUP(file_size / 2, block_size)); - | ^~~~~~~~~ -powerpc64-gentoo-linux-musl/bin/ld: mmap_seek.o: in function `main': -mmap_seek.c:(.text.startup+0x1b8): undefined reference to `P2ROUNDUP' -powerpc64-gentoo-linux-musl/bin/ld: mmap_seek.c:(.text.startup+0x1d8): - undefined reference to `P2ROUNDUP' -powerpc64-gentoo-linux-musl/bin/ld: mmap_seek.c:(.text.startup+0x21c): - undefined reference to `P2ROUNDUP' -collect2: error: ld returned 1 exit status -make[5]: *** [Makefile:754: mmap_seek] Error 1 -``` - -Closes: https://github.com/openzfs/zfs/pull/12891 -Signed-off-by: Georgy Yakovlev ---- - tests/zfs-tests/cmd/mmap_seek/mmap_seek.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/tests/zfs-tests/cmd/mmap_seek/mmap_seek.c b/tests/zfs-tests/cmd/mmap_seek/mmap_seek.c -index f476e1dba9a..bb36527aafe 100644 ---- a/tests/zfs-tests/cmd/mmap_seek/mmap_seek.c -+++ b/tests/zfs-tests/cmd/mmap_seek/mmap_seek.c -@@ -29,7 +29,11 @@ - #include - #include - #include -+#include - #include -+#ifdef __linux__ -+#include -+#endif - - static void - seek_data(int fd, off_t offset, off_t expected) diff --git a/srcpkgs/zfs/template b/srcpkgs/zfs/template index 0b0c490a5843..477c39614cd0 100644 --- a/srcpkgs/zfs/template +++ b/srcpkgs/zfs/template @@ -1,7 +1,7 @@ # Template file for 'zfs' pkgname=zfs -version=2.1.2 -revision=2 +version=2.1.3 +revision=1 build_style=gnu-configure configure_args="--with-config=user --with-mounthelperdir=/usr/bin --with-udevdir=/usr/lib/udev --with-udevruledir=/usr/lib/udev/rules.d @@ -15,7 +15,7 @@ maintainer="Toyam Cox " license="CDDL-1.0" homepage="https://openzfs.github.io/openzfs-docs/" distfiles="https://github.com/openzfs/zfs/releases/download/zfs-${version}/zfs-${version}.tar.gz" -checksum=258cf1d17a1f668a3b99b61eaf14be06c614df42503db0319bef1b9fc4c8b9e7 +checksum=b61b644547793f409cafd6538a52d78f2f72b0cd013e88340882457c8c9b43fd # dkms must be before initramfs-regenerate to build modules before images triggers="dkms initramfs-regenerate" dkms_modules="zfs ${version}"