diff options
author | Brian Behlendorf <[email protected]> | 2020-12-22 12:17:13 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-12-27 16:20:24 -0800 |
commit | a970f0594e9f67363dece8e0ed066e3eb7725bb4 (patch) | |
tree | 4c4c9df0627b2f4dbcb09e819ce02d5313d06d05 /config/kernel-generic_io_acct.m4 | |
parent | b7281c88bcbba0525e8b55607145956320d103f0 (diff) |
Linux 5.11 compat: bio_start_io_acct() / bio_end_io_acct()
The generic IO accounting functions have been removed in favor of the
bio_start_io_acct() and bio_end_io_acct() functions which provide a
better interface. These new functions were introduced in the 5.8
kernels but it wasn't until the 5.11 kernel that the previous generic
IO accounting interfaces were removed.
This commit updates the blk_generic_*_io_acct() wrappers to provide
and interface similar to the updated kernel interface. It's slightly
different because for older kernels we need to pass the request queue
as well as the bio.
Reviewed-by: Rafael Kitover <[email protected]>
Reviewed-by: Coleman Kane <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #11387
Closes #11390
Diffstat (limited to 'config/kernel-generic_io_acct.m4')
-rw-r--r-- | config/kernel-generic_io_acct.m4 | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/config/kernel-generic_io_acct.m4 b/config/kernel-generic_io_acct.m4 index 423b3e5a3..e4ab503d5 100644 --- a/config/kernel-generic_io_acct.m4 +++ b/config/kernel-generic_io_acct.m4 @@ -2,6 +2,16 @@ dnl # dnl # Check for generic io accounting interface. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ + ZFS_LINUX_TEST_SRC([bio_io_acct], [ + #include <linux/blkdev.h> + ], [ + struct bio *bio = NULL; + unsigned long start_time; + + start_time = bio_start_io_acct(bio); + bio_end_io_acct(bio, start_time); + ]) + ZFS_LINUX_TEST_SRC([generic_acct_3args], [ #include <linux/bio.h> @@ -29,36 +39,49 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ AC_DEFUN([ZFS_AC_KERNEL_GENERIC_IO_ACCT], [ dnl # - dnl # 3.19 API addition + dnl # 5.7 API, dnl # - dnl # torvalds/linux@394ffa50 allows us to increment iostat - dnl # counters without generic_make_request(). + dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers. dnl # - AC_MSG_CHECKING([whether generic IO accounting wants 3 args]) - ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args], - [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_3ARG, 1, - [generic_start_io_acct()/generic_end_io_acct() available]) + AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available]) ], [ AC_MSG_RESULT(no) dnl # - dnl # Linux 4.14 API, + dnl # 4.14 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 # - AC_MSG_CHECKING([whether generic IO accounting wants 4 args]) + 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_4ARG, 1, - [generic_start_io_acct()/generic_end_io_acct() ] - [4 arg available]) + [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) + ]) ]) ]) ]) |