cherry-pick e063ff177 ("linux 6.3 compat: add another bdev_io_acct case")
As among possibly other things, it addresses a patch that got backported to kernel 6.2.8 too. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
5ea8a38968
commit
4584ec1155
195
debian/patches/0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch
vendored
Normal file
195
debian/patches/0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch
vendored
Normal file
@ -0,0 +1,195 @@
|
||||
From 0000000000000000000000000000000000000000 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 <behlendorf1@llnl.gov>
|
||||
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
|
||||
Closes #14658
|
||||
Closes #14668
|
||||
(cherry picked from commit 59f187563937aa0d6c74a9854eb1cab6632866f9)
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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 a8a448c6f..a6a109004 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 <linux/blkdev.h>
|
||||
+ ], [
|
||||
+ 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 <linux/blkdev.h>
|
||||
], [
|
||||
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 bac5c2279..3a3f264d7 100644
|
||||
--- a/include/os/linux/kernel/linux/blkdev_compat.h
|
||||
+++ b/include/os/linux/kernel/linux/blkdev_compat.h
|
||||
@@ -555,7 +555,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)
|
||||
@@ -581,7 +584,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);
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -9,3 +9,4 @@
|
||||
0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
|
||||
0010-arcstat-Fix-integer-division-with-python3.patch
|
||||
0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
|
||||
0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch
|
||||
|
Loading…
Reference in New Issue
Block a user