From d5d802382080e22bd7b7a01f735be9bacace423b Mon Sep 17 00:00:00 2001 From: Archzfs Buildbot <34833957+archzfs-bot@users.noreply.github.com> Date: Tue, 4 Apr 2023 02:29:29 +0000 Subject: [PATCH] Semi-automated update for zfs 2.1.9 --- .SRCINFO | 4 +- PKGBUILD | 12 +- ...compat-add-another-bdev_io_acct-case.patch | 193 ++++++++++++++++++ 3 files changed, 205 insertions(+), 4 deletions(-) create mode 100644 linux-6.3-compat-add-another-bdev_io_acct-case.patch diff --git a/.SRCINFO b/.SRCINFO index 7eeb28c..096e3c1 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = zfs-dkms pkgdesc = Kernel modules for the Zettabyte File System. pkgver = 2.1.9 - pkgrel = 1 + pkgrel = 2 url = https://openzfs.org/ arch = x86_64 groups = archzfs-dkms @@ -19,6 +19,8 @@ pkgbase = zfs-dkms conflicts = spl-headers replaces = spl-dkms source = https://github.com/openzfs/zfs/releases/download/zfs-2.1.9/zfs-2.1.9.tar.gz + source = linux-6.3-compat-add-another-bdev_io_acct-case.patch sha256sums = 6b172cdf2eb54e17fcd68f900fab33c1430c5c59848fa46fab83614922fe50f6 + sha256sums = 14b099062abdb8923266f8f39c50d4b98755e6324ae6ce36d322c361b85387ee pkgname = zfs-dkms diff --git a/PKGBUILD b/PKGBUILD index 7cea068..ea1250a 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -9,18 +9,24 @@ pkgname="zfs-dkms" pkgdesc="Kernel modules for the Zettabyte File System." pkgver=2.1.9 -pkgrel=1 +pkgrel=2 makedepends=() arch=("x86_64") url="https://openzfs.org/" -source=("https://github.com/openzfs/zfs/releases/download/zfs-${pkgver}/zfs-${pkgver}.tar.gz") -sha256sums=("6b172cdf2eb54e17fcd68f900fab33c1430c5c59848fa46fab83614922fe50f6") +source=("https://github.com/openzfs/zfs/releases/download/zfs-${pkgver}/zfs-${pkgver}.tar.gz" + "linux-6.3-compat-add-another-bdev_io_acct-case.patch") +sha256sums=("6b172cdf2eb54e17fcd68f900fab33c1430c5c59848fa46fab83614922fe50f6" + "14b099062abdb8923266f8f39c50d4b98755e6324ae6ce36d322c361b85387ee") license=("CDDL") depends=("zfs-utils=${pkgver}" "lsb-release" "dkms") provides=("zfs" "zfs-headers" "spl" "spl-headers") groups=("archzfs-dkms") conflicts=("zfs" "zfs-headers" "spl" "spl-headers") replaces=("spl-dkms") +prepare() { + cd "${srcdir}/zfs-${pkgver}" + patch -Np1 -i ${srcdir}/linux-6.3-compat-add-another-bdev_io_acct-case.patch +} build() { cd "${srcdir}/zfs-${pkgver}" diff --git a/linux-6.3-compat-add-another-bdev_io_acct-case.patch b/linux-6.3-compat-add-another-bdev_io_acct-case.patch new file mode 100644 index 0000000..ff1a139 --- /dev/null +++ b/linux-6.3-compat-add-another-bdev_io_acct-case.patch @@ -0,0 +1,193 @@ +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);