diff --git a/src/zfs-dkms/PKGBUILD.sh b/src/zfs-dkms/PKGBUILD.sh index ef19d12..4a5e6f9 100755 --- a/src/zfs-dkms/PKGBUILD.sh +++ b/src/zfs-dkms/PKGBUILD.sh @@ -10,10 +10,8 @@ pkgrel=${zfs_pkgrel} makedepends=(${zfs_makedepends}) arch=("x86_64") url="https://openzfs.org/" -source=("${zfs_src_target}" - "linux-6.3-compat-add-another-bdev_io_acct-case.patch") -sha256sums=("${zfs_src_hash}" - "14b099062abdb8923266f8f39c50d4b98755e6324ae6ce36d322c361b85387ee") +source=("${zfs_src_target}") +sha256sums=("${zfs_src_hash}") license=("CDDL") depends=("${zfs_utils_pkgname}" "lsb-release" "dkms") provides=("zfs" "zfs-headers" "spl" "spl-headers") @@ -39,8 +37,4 @@ package() { EOF -if [[ ! ${archzfs_package_group} =~ -git$ ]] && [[ ! ${archzfs_package_group} =~ -rc$ ]]; then - sed -E -i "/^build()/i prepare() {\n cd \"${zfs_workdir}\"\n patch -Np1 -i \${srcdir}/linux-6.3-compat-add-another-bdev_io_acct-case.patch\n}" ${zfs_dkms_pkgbuild_path}/PKGBUILD -fi - pkgbuild_cleanup "${zfs_dkms_pkgbuild_path}/PKGBUILD" diff --git a/src/zfs-dkms/linux-6.3-compat-add-another-bdev_io_acct-case.patch b/src/zfs-dkms/linux-6.3-compat-add-another-bdev_io_acct-case.patch deleted file mode 100644 index ff1a139..0000000 --- a/src/zfs-dkms/linux-6.3-compat-add-another-bdev_io_acct-case.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 1a951502f0b4200a13f23f0d2f5759ef60188c17 Mon Sep 17 00:00:00 2001 -From: Rich Ercolani <214141+rincebrain@users.noreply.github.com> -Date: Mon, 27 Mar 2023 14:29:19 -0400 -Subject: [PATCH] linux 6.3 compat: add another bdev_io_acct case - -Linux 6.3+, and backports from it (6.2.8+), changed the -signatures on bdev_io_{start,end}_acct. Add a case for it. - -Reviewed-by: Brian Behlendorf -Signed-off-by: Rich Ercolani -Closes #14658 -Closes #14668 ---- - config/kernel-generic_io_acct.m4 | 98 ++++++++++++------- - include/os/linux/kernel/linux/blkdev_compat.h | 10 +- - 2 files changed, 69 insertions(+), 39 deletions(-) - -diff --git a/config/kernel-generic_io_acct.m4 b/config/kernel-generic_io_acct.m4 -index a8a448c6fe9..a6a10900429 100644 ---- a/config/kernel-generic_io_acct.m4 -+++ b/config/kernel-generic_io_acct.m4 -@@ -2,7 +2,20 @@ dnl # - dnl # Check for generic io accounting interface. - dnl # - AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ -- ZFS_LINUX_TEST_SRC([bdev_io_acct], [ -+ ZFS_LINUX_TEST_SRC([bdev_io_acct_63], [ -+ #include -+ ], [ -+ struct block_device *bdev = NULL; -+ struct bio *bio = NULL; -+ unsigned long passed_time = 0; -+ unsigned long start_time; -+ -+ start_time = bdev_start_io_acct(bdev, bio_op(bio), -+ passed_time); -+ bdev_end_io_acct(bdev, bio_op(bio), bio_sectors(bio), start_time); -+ ]) -+ -+ ZFS_LINUX_TEST_SRC([bdev_io_acct_old], [ - #include - ], [ - struct block_device *bdev = NULL; -@@ -63,74 +76,85 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ - - AC_DEFUN([ZFS_AC_KERNEL_GENERIC_IO_ACCT], [ - dnl # -- dnl # 5.19 API, -+ dnl # Linux 6.3, and then backports thereof, changed -+ dnl # the signatures on bdev_start_io_acct/bdev_end_io_acct - dnl # -- dnl # disk_start_io_acct() and disk_end_io_acct() have been replaced by -- dnl # bdev_start_io_acct() and bdev_end_io_acct(). -- dnl # -- AC_MSG_CHECKING([whether generic bdev_*_io_acct() are available]) -- ZFS_LINUX_TEST_RESULT([bdev_io_acct], [ -+ AC_MSG_CHECKING([whether 6.3+ bdev_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([bdev_io_acct_63], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_BDEV_IO_ACCT, 1, [bdev_*_io_acct() available]) -+ AC_DEFINE(HAVE_BDEV_IO_ACCT_63, 1, [bdev_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) - - dnl # -- dnl # 5.12 API, -+ dnl # 5.19 API, - dnl # -- dnl # bio_start_io_acct() and bio_end_io_acct() became GPL-exported -- dnl # so use disk_start_io_acct() and disk_end_io_acct() instead -+ dnl # disk_start_io_acct() and disk_end_io_acct() have been replaced by -+ dnl # bdev_start_io_acct() and bdev_end_io_acct(). - dnl # -- AC_MSG_CHECKING([whether generic disk_*_io_acct() are available]) -- ZFS_LINUX_TEST_RESULT([disk_io_acct], [ -+ AC_MSG_CHECKING([whether pre-6.3 bdev_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([bdev_io_acct_old], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_DISK_IO_ACCT, 1, [disk_*_io_acct() available]) -+ AC_DEFINE(HAVE_BDEV_IO_ACCT_OLD, 1, [bdev_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) -- - dnl # -- dnl # 5.7 API, -+ dnl # 5.12 API, - dnl # -- dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers. -+ dnl # bio_start_io_acct() and bio_end_io_acct() became GPL-exported -+ dnl # so use disk_start_io_acct() and disk_end_io_acct() instead - dnl # -- AC_MSG_CHECKING([whether generic bio_*_io_acct() are available]) -- ZFS_LINUX_TEST_RESULT([bio_io_acct], [ -+ AC_MSG_CHECKING([whether generic disk_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([disk_io_acct], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available]) -+ AC_DEFINE(HAVE_DISK_IO_ACCT, 1, [disk_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) - - dnl # -- dnl # 4.14 API, -+ dnl # 5.7 API, - dnl # -- dnl # generic_start_io_acct/generic_end_io_acct now require -- dnl # request_queue to be provided. No functional changes, -- dnl # but preparation for inflight accounting. -+ dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers. - dnl # -- AC_MSG_CHECKING([whether generic_*_io_acct wants 4 args]) -- ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args], -- [generic_start_io_acct], [block/bio.c], [ -+ AC_MSG_CHECKING([whether generic bio_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([bio_io_acct], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1, -- [generic_*_io_acct() 4 arg available]) -+ AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) - - dnl # -- dnl # 3.19 API addition -+ dnl # 4.14 API, - dnl # -- dnl # torvalds/linux@394ffa50 allows us to increment -- dnl # iostat counters without generic_make_request(). -+ dnl # generic_start_io_acct/generic_end_io_acct now require -+ dnl # request_queue to be provided. No functional changes, -+ dnl # but preparation for inflight accounting. - dnl # -- AC_MSG_CHECKING( -- [whether generic_*_io_acct wants 3 args]) -- ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args], -+ AC_MSG_CHECKING([whether generic_*_io_acct wants 4 args]) -+ ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args], - [generic_start_io_acct], [block/bio.c], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1, -- [generic_*_io_acct() 3 arg available]) -+ AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1, -+ [generic_*_io_acct() 4 arg available]) - ], [ - AC_MSG_RESULT(no) -+ -+ dnl # -+ dnl # 3.19 API addition -+ dnl # -+ dnl # torvalds/linux@394ffa50 allows us to increment -+ dnl # iostat counters without generic_make_request(). -+ dnl # -+ AC_MSG_CHECKING( -+ [whether generic_*_io_acct wants 3 args]) -+ ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args], -+ [generic_start_io_acct], [block/bio.c], [ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1, -+ [generic_*_io_acct() 3 arg available]) -+ ], [ -+ AC_MSG_RESULT(no) -+ ]) - ]) - ]) - ]) -diff --git a/include/os/linux/kernel/linux/blkdev_compat.h b/include/os/linux/kernel/linux/blkdev_compat.h -index b1daa5ed9ce..11ecfd8caa3 100644 ---- a/include/os/linux/kernel/linux/blkdev_compat.h -+++ b/include/os/linux/kernel/linux/blkdev_compat.h -@@ -581,7 +581,10 @@ blk_generic_start_io_acct(struct request_queue *q __attribute__((unused)), - struct gendisk *disk __attribute__((unused)), - int rw __attribute__((unused)), struct bio *bio) - { --#if defined(HAVE_BDEV_IO_ACCT) -+#if defined(HAVE_BDEV_IO_ACCT_63) -+ return (bdev_start_io_acct(bio->bi_bdev, bio_op(bio), -+ jiffies)); -+#elif defined(HAVE_BDEV_IO_ACCT_OLD) - return (bdev_start_io_acct(bio->bi_bdev, bio_sectors(bio), - bio_op(bio), jiffies)); - #elif defined(HAVE_DISK_IO_ACCT) -@@ -607,7 +610,10 @@ blk_generic_end_io_acct(struct request_queue *q __attribute__((unused)), - struct gendisk *disk __attribute__((unused)), - int rw __attribute__((unused)), struct bio *bio, unsigned long start_time) - { --#if defined(HAVE_BDEV_IO_ACCT) -+#if defined(HAVE_BDEV_IO_ACCT_63) -+ bdev_end_io_acct(bio->bi_bdev, bio_op(bio), bio_sectors(bio), -+ start_time); -+#elif defined(HAVE_BDEV_IO_ACCT_OLD) - bdev_end_io_acct(bio->bi_bdev, bio_op(bio), start_time); - #elif defined(HAVE_DISK_IO_ACCT) - disk_end_io_acct(disk, bio_op(bio), start_time); diff --git a/src/zfs/PKGBUILD.sh b/src/zfs/PKGBUILD.sh index d094b84..0644023 100755 --- a/src/zfs/PKGBUILD.sh +++ b/src/zfs/PKGBUILD.sh @@ -16,10 +16,8 @@ pkgrel=${zfs_pkgrel} makedepends=(${linux_headers_depends} ${zfs_makedepends}) arch=("x86_64") url="https://openzfs.org/" -source=("${zfs_src_target}" - "linux-6.3-compat-add-another-bdev_io_acct-case.patch") -sha256sums=("${zfs_src_hash}" - "14b099062abdb8923266f8f39c50d4b98755e6324ae6ce36d322c361b85387ee") +source=("${zfs_src_target}") +sha256sums=("${zfs_src_hash}") license=("CDDL") depends=("kmod" "${zfs_utils_pkgname}" ${linux_depends}) @@ -64,8 +62,4 @@ package_${zfs_pkgname}-headers() { EOF -if [[ ! ${archzfs_package_group} =~ -git$ ]] && [[ ! ${archzfs_package_group} =~ -rc$ ]]; then - sed -E -i "/^build()/i prepare() {\n cd \"${zfs_workdir}\"\n patch -Np1 -i \${srcdir}/linux-6.3-compat-add-another-bdev_io_acct-case.patch\n}" ${zfs_pkgbuild_path}/PKGBUILD -fi - pkgbuild_cleanup "${zfs_pkgbuild_path}/PKGBUILD" diff --git a/src/zfs/linux-6.3-compat-add-another-bdev_io_acct-case.patch b/src/zfs/linux-6.3-compat-add-another-bdev_io_acct-case.patch deleted file mode 100644 index ff1a139..0000000 --- a/src/zfs/linux-6.3-compat-add-another-bdev_io_acct-case.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 1a951502f0b4200a13f23f0d2f5759ef60188c17 Mon Sep 17 00:00:00 2001 -From: Rich Ercolani <214141+rincebrain@users.noreply.github.com> -Date: Mon, 27 Mar 2023 14:29:19 -0400 -Subject: [PATCH] linux 6.3 compat: add another bdev_io_acct case - -Linux 6.3+, and backports from it (6.2.8+), changed the -signatures on bdev_io_{start,end}_acct. Add a case for it. - -Reviewed-by: Brian Behlendorf -Signed-off-by: Rich Ercolani -Closes #14658 -Closes #14668 ---- - config/kernel-generic_io_acct.m4 | 98 ++++++++++++------- - include/os/linux/kernel/linux/blkdev_compat.h | 10 +- - 2 files changed, 69 insertions(+), 39 deletions(-) - -diff --git a/config/kernel-generic_io_acct.m4 b/config/kernel-generic_io_acct.m4 -index a8a448c6fe9..a6a10900429 100644 ---- a/config/kernel-generic_io_acct.m4 -+++ b/config/kernel-generic_io_acct.m4 -@@ -2,7 +2,20 @@ dnl # - dnl # Check for generic io accounting interface. - dnl # - AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ -- ZFS_LINUX_TEST_SRC([bdev_io_acct], [ -+ ZFS_LINUX_TEST_SRC([bdev_io_acct_63], [ -+ #include -+ ], [ -+ struct block_device *bdev = NULL; -+ struct bio *bio = NULL; -+ unsigned long passed_time = 0; -+ unsigned long start_time; -+ -+ start_time = bdev_start_io_acct(bdev, bio_op(bio), -+ passed_time); -+ bdev_end_io_acct(bdev, bio_op(bio), bio_sectors(bio), start_time); -+ ]) -+ -+ ZFS_LINUX_TEST_SRC([bdev_io_acct_old], [ - #include - ], [ - struct block_device *bdev = NULL; -@@ -63,74 +76,85 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ - - AC_DEFUN([ZFS_AC_KERNEL_GENERIC_IO_ACCT], [ - dnl # -- dnl # 5.19 API, -+ dnl # Linux 6.3, and then backports thereof, changed -+ dnl # the signatures on bdev_start_io_acct/bdev_end_io_acct - dnl # -- dnl # disk_start_io_acct() and disk_end_io_acct() have been replaced by -- dnl # bdev_start_io_acct() and bdev_end_io_acct(). -- dnl # -- AC_MSG_CHECKING([whether generic bdev_*_io_acct() are available]) -- ZFS_LINUX_TEST_RESULT([bdev_io_acct], [ -+ AC_MSG_CHECKING([whether 6.3+ bdev_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([bdev_io_acct_63], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_BDEV_IO_ACCT, 1, [bdev_*_io_acct() available]) -+ AC_DEFINE(HAVE_BDEV_IO_ACCT_63, 1, [bdev_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) - - dnl # -- dnl # 5.12 API, -+ dnl # 5.19 API, - dnl # -- dnl # bio_start_io_acct() and bio_end_io_acct() became GPL-exported -- dnl # so use disk_start_io_acct() and disk_end_io_acct() instead -+ dnl # disk_start_io_acct() and disk_end_io_acct() have been replaced by -+ dnl # bdev_start_io_acct() and bdev_end_io_acct(). - dnl # -- AC_MSG_CHECKING([whether generic disk_*_io_acct() are available]) -- ZFS_LINUX_TEST_RESULT([disk_io_acct], [ -+ AC_MSG_CHECKING([whether pre-6.3 bdev_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([bdev_io_acct_old], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_DISK_IO_ACCT, 1, [disk_*_io_acct() available]) -+ AC_DEFINE(HAVE_BDEV_IO_ACCT_OLD, 1, [bdev_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) -- - dnl # -- dnl # 5.7 API, -+ dnl # 5.12 API, - dnl # -- dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers. -+ dnl # bio_start_io_acct() and bio_end_io_acct() became GPL-exported -+ dnl # so use disk_start_io_acct() and disk_end_io_acct() instead - dnl # -- AC_MSG_CHECKING([whether generic bio_*_io_acct() are available]) -- ZFS_LINUX_TEST_RESULT([bio_io_acct], [ -+ AC_MSG_CHECKING([whether generic disk_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([disk_io_acct], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available]) -+ AC_DEFINE(HAVE_DISK_IO_ACCT, 1, [disk_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) - - dnl # -- dnl # 4.14 API, -+ dnl # 5.7 API, - dnl # -- dnl # generic_start_io_acct/generic_end_io_acct now require -- dnl # request_queue to be provided. No functional changes, -- dnl # but preparation for inflight accounting. -+ dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers. - dnl # -- AC_MSG_CHECKING([whether generic_*_io_acct wants 4 args]) -- ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args], -- [generic_start_io_acct], [block/bio.c], [ -+ AC_MSG_CHECKING([whether generic bio_*_io_acct() are available]) -+ ZFS_LINUX_TEST_RESULT([bio_io_acct], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1, -- [generic_*_io_acct() 4 arg available]) -+ AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available]) - ], [ - AC_MSG_RESULT(no) - - dnl # -- dnl # 3.19 API addition -+ dnl # 4.14 API, - dnl # -- dnl # torvalds/linux@394ffa50 allows us to increment -- dnl # iostat counters without generic_make_request(). -+ dnl # generic_start_io_acct/generic_end_io_acct now require -+ dnl # request_queue to be provided. No functional changes, -+ dnl # but preparation for inflight accounting. - dnl # -- AC_MSG_CHECKING( -- [whether generic_*_io_acct wants 3 args]) -- ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args], -+ AC_MSG_CHECKING([whether generic_*_io_acct wants 4 args]) -+ ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args], - [generic_start_io_acct], [block/bio.c], [ - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1, -- [generic_*_io_acct() 3 arg available]) -+ AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1, -+ [generic_*_io_acct() 4 arg available]) - ], [ - AC_MSG_RESULT(no) -+ -+ dnl # -+ dnl # 3.19 API addition -+ dnl # -+ dnl # torvalds/linux@394ffa50 allows us to increment -+ dnl # iostat counters without generic_make_request(). -+ dnl # -+ AC_MSG_CHECKING( -+ [whether generic_*_io_acct wants 3 args]) -+ ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args], -+ [generic_start_io_acct], [block/bio.c], [ -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1, -+ [generic_*_io_acct() 3 arg available]) -+ ], [ -+ AC_MSG_RESULT(no) -+ ]) - ]) - ]) - ]) -diff --git a/include/os/linux/kernel/linux/blkdev_compat.h b/include/os/linux/kernel/linux/blkdev_compat.h -index b1daa5ed9ce..11ecfd8caa3 100644 ---- a/include/os/linux/kernel/linux/blkdev_compat.h -+++ b/include/os/linux/kernel/linux/blkdev_compat.h -@@ -581,7 +581,10 @@ blk_generic_start_io_acct(struct request_queue *q __attribute__((unused)), - struct gendisk *disk __attribute__((unused)), - int rw __attribute__((unused)), struct bio *bio) - { --#if defined(HAVE_BDEV_IO_ACCT) -+#if defined(HAVE_BDEV_IO_ACCT_63) -+ return (bdev_start_io_acct(bio->bi_bdev, bio_op(bio), -+ jiffies)); -+#elif defined(HAVE_BDEV_IO_ACCT_OLD) - return (bdev_start_io_acct(bio->bi_bdev, bio_sectors(bio), - bio_op(bio), jiffies)); - #elif defined(HAVE_DISK_IO_ACCT) -@@ -607,7 +610,10 @@ blk_generic_end_io_acct(struct request_queue *q __attribute__((unused)), - struct gendisk *disk __attribute__((unused)), - int rw __attribute__((unused)), struct bio *bio, unsigned long start_time) - { --#if defined(HAVE_BDEV_IO_ACCT) -+#if defined(HAVE_BDEV_IO_ACCT_63) -+ bdev_end_io_acct(bio->bi_bdev, bio_op(bio), bio_sectors(bio), -+ start_time); -+#elif defined(HAVE_BDEV_IO_ACCT_OLD) - bdev_end_io_acct(bio->bi_bdev, bio_op(bio), start_time); - #elif defined(HAVE_DISK_IO_ACCT) - disk_end_io_acct(disk, bio_op(bio), start_time);