zfs: update to 2.0.5.
This commit is contained in:
parent
4dfd80a2f0
commit
7a0ad21a4c
File diff suppressed because it is too large
Load Diff
|
@ -1,91 +0,0 @@
|
||||||
From 8122746cc52741e2d010aa0ad8e0f15ab24bbf28 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Coleman Kane <ckane@colemankane.org>
|
|
||||||
Date: Sat, 20 Mar 2021 01:33:42 -0400
|
|
||||||
Subject: [PATCH] Linux 5.12 update: bio_max_segs() replaces BIO_MAX_PAGES
|
|
||||||
|
|
||||||
The BIO_MAX_PAGES macro is being retired in favor of a bio_max_segs()
|
|
||||||
function that implements the typical MIN(x,y) logic used throughout the
|
|
||||||
kernel for bounding the allocation, and also the new implementation is
|
|
||||||
intended to be signed-safe (which the former was not).
|
|
||||||
|
|
||||||
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
|
|
||||||
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
|
||||||
Signed-off-by: Coleman Kane <ckane@colemankane.org>
|
|
||||||
Closes #11765
|
|
||||||
(cherry picked from commit ffd6978ef59cfe2773e984bf03de2f0b93b03f5c)
|
|
||||||
Signed-off-by: Jonathon Fernyhough <jonathon@m2x.dev>
|
|
||||||
---
|
|
||||||
config/kernel-bio_max_segs.m4 | 23 +++++++++++++++++++++++
|
|
||||||
config/kernel.m4 | 2 ++
|
|
||||||
module/os/linux/zfs/vdev_disk.c | 5 +++++
|
|
||||||
3 files changed, 30 insertions(+)
|
|
||||||
create mode 100644 config/kernel-bio_max_segs.m4
|
|
||||||
|
|
||||||
diff --git a/config/kernel-bio_max_segs.m4 b/config/kernel-bio_max_segs.m4
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..a90d75455c1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/config/kernel-bio_max_segs.m4
|
|
||||||
@@ -0,0 +1,23 @@
|
|
||||||
+dnl #
|
|
||||||
+dnl # 5.12 API change removes BIO_MAX_PAGES in favor of bio_max_segs()
|
|
||||||
+dnl # which will handle the logic of setting the upper-bound to a
|
|
||||||
+dnl # BIO_MAX_PAGES, internally.
|
|
||||||
+dnl #
|
|
||||||
+AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_MAX_SEGS], [
|
|
||||||
+ ZFS_LINUX_TEST_SRC([bio_max_segs], [
|
|
||||||
+ #include <linux/bio.h>
|
|
||||||
+ ],[
|
|
||||||
+ bio_max_segs(1);
|
|
||||||
+ ])
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
+AC_DEFUN([ZFS_AC_KERNEL_BIO_MAX_SEGS], [
|
|
||||||
+ AC_MSG_CHECKING([whether bio_max_segs() exists])
|
|
||||||
+ ZFS_LINUX_TEST_RESULT([bio_max_segs], [
|
|
||||||
+ AC_MSG_RESULT(yes)
|
|
||||||
+
|
|
||||||
+ AC_DEFINE([HAVE_BIO_MAX_SEGS], 1, [bio_max_segs() is implemented])
|
|
||||||
+ ],[
|
|
||||||
+ AC_MSG_RESULT(no)
|
|
||||||
+ ])
|
|
||||||
+])
|
|
||||||
diff --git a/config/kernel.m4 b/config/kernel.m4
|
|
||||||
index 51c7fb926ec..b8d53490a4a 100644
|
|
||||||
--- a/config/kernel.m4
|
|
||||||
+++ b/config/kernel.m4
|
|
||||||
@@ -127,6 +127,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
|
||||||
ZFS_AC_KERNEL_SRC_GENERIC_FILLATTR_USERNS
|
|
||||||
ZFS_AC_KERNEL_SRC_MKNOD
|
|
||||||
ZFS_AC_KERNEL_SRC_SYMLINK
|
|
||||||
+ ZFS_AC_KERNEL_SRC_BIO_MAX_SEGS
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for available kernel interfaces])
|
|
||||||
ZFS_LINUX_TEST_COMPILE_ALL([kabi])
|
|
||||||
@@ -227,6 +228,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
|
||||||
ZFS_AC_KERNEL_GENERIC_FILLATTR_USERNS
|
|
||||||
ZFS_AC_KERNEL_MKNOD
|
|
||||||
ZFS_AC_KERNEL_SYMLINK
|
|
||||||
+ ZFS_AC_KERNEL_BIO_MAX_SEGS
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl #
|
|
||||||
diff --git a/module/os/linux/zfs/vdev_disk.c b/module/os/linux/zfs/vdev_disk.c
|
|
||||||
index 08c33313407..aaaf4105979 100644
|
|
||||||
--- a/module/os/linux/zfs/vdev_disk.c
|
|
||||||
+++ b/module/os/linux/zfs/vdev_disk.c
|
|
||||||
@@ -593,9 +593,14 @@ __vdev_disk_physio(struct block_device *bdev, zio_t *zio,
|
|
||||||
}
|
|
||||||
|
|
||||||
/* bio_alloc() with __GFP_WAIT never returns NULL */
|
|
||||||
+#ifdef HAVE_BIO_MAX_SEGS
|
|
||||||
+ dr->dr_bio[i] = bio_alloc(GFP_NOIO, bio_max_segs(
|
|
||||||
+ abd_nr_pages_off(zio->io_abd, bio_size, abd_offset)));
|
|
||||||
+#else
|
|
||||||
dr->dr_bio[i] = bio_alloc(GFP_NOIO,
|
|
||||||
MIN(abd_nr_pages_off(zio->io_abd, bio_size, abd_offset),
|
|
||||||
BIO_MAX_PAGES));
|
|
||||||
+#endif
|
|
||||||
if (unlikely(dr->dr_bio[i] == NULL)) {
|
|
||||||
vdev_disk_dio_free(dr);
|
|
||||||
return (SET_ERROR(ENOMEM));
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'zfs'
|
# Template file for 'zfs'
|
||||||
pkgname=zfs
|
pkgname=zfs
|
||||||
version=2.0.4
|
version=2.0.5
|
||||||
revision=3
|
revision=1
|
||||||
build_style=gnu-configure
|
build_style=gnu-configure
|
||||||
configure_args="--with-config=user --with-mounthelperdir=/usr/bin
|
configure_args="--with-config=user --with-mounthelperdir=/usr/bin
|
||||||
--with-udevdir=/usr/lib/udev --with-udevruledir=/usr/lib/udev/rules.d
|
--with-udevdir=/usr/lib/udev --with-udevruledir=/usr/lib/udev/rules.d
|
||||||
|
@ -15,7 +15,7 @@ maintainer="Toyam Cox <Vaelatern@voidlinux.org>"
|
||||||
license="CDDL-1.0"
|
license="CDDL-1.0"
|
||||||
homepage="https://openzfs.github.io/openzfs-docs/"
|
homepage="https://openzfs.github.io/openzfs-docs/"
|
||||||
distfiles="https://github.com/openzfs/zfs/releases/download/zfs-${version}/zfs-${version}.tar.gz"
|
distfiles="https://github.com/openzfs/zfs/releases/download/zfs-${version}/zfs-${version}.tar.gz"
|
||||||
checksum=7d1344c5433b91823f02c2e40b33d181fa6faf286bea5591f4b1965f23d45f6c
|
checksum=3a17498d704ebf4c5d7231660f6fb44ae07a1545519f567452a4270851a86ec9
|
||||||
# dkms must be before initramfs-regenerate to build modules before images
|
# dkms must be before initramfs-regenerate to build modules before images
|
||||||
triggers="dkms initramfs-regenerate"
|
triggers="dkms initramfs-regenerate"
|
||||||
dkms_modules="zfs ${version}"
|
dkms_modules="zfs ${version}"
|
||||||
|
|
Loading…
Reference in New Issue