From 784a7fe5d9a0c02e96f3ae019a08ecebee2a7018 Mon Sep 17 00:00:00 2001 From: Lukas Wunner Date: Wed, 23 Sep 2015 17:55:15 +0200 Subject: Linux 4.3 compat: bio_end_io_t / BIO_UPTODATE Commit torvalds/linux@4246a0b63bd8f56a1469b12eafeb875b1041a451 ("block: add a bi_error field to struct bio") dropped the error argument from bio_endio in favor of newly introduced bio->bi_error. This also replaces bio->bi_flags value BIO_UPTODATE. bio_endio was a 3 argument function until Linux 2.6.24, which made it a 2 argument function, and now the prototype has changed yet again to a 1 argument function. Support for pre 2.6.24 kernels was already dropped with 37f9dac592bf ("zvol processing should use struct bio") which assumed the 2 argument version in zvol_request(). Remaining code to support the 3 argument version is hereby removed. Signed-off-by: Brian Behlendorf Signed-off-by: Lukas Wunner Issue #3799 --- config/kernel-bio-end-io-t-args.m4 | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'config/kernel-bio-end-io-t-args.m4') diff --git a/config/kernel-bio-end-io-t-args.m4 b/config/kernel-bio-end-io-t-args.m4 index 407e55cd0..c8c520f1b 100644 --- a/config/kernel-bio-end-io-t-args.m4 +++ b/config/kernel-bio-end-io-t-args.m4 @@ -1,25 +1,23 @@ dnl # -dnl # 2.6.24 API change -dnl # Size argument dropped from bio_endio and bi_end_io, because the -dnl # bi_end_io is only called once now when the request is complete. -dnl # There is no longer any need for a size argument. This also means -dnl # that partial IO's are no longer possibe and the end_io callback -dnl # should not check bi->bi_size. Finally, the return type was updated -dnl # to void. +dnl # 4.3 API change +dnl # Error argument dropped from bio_endio in favor of newly introduced +dnl # bio->bi_error. This also replaces bio->bi_flags value BIO_UPTODATE. +dnl # Introduced by torvalds/linux@4246a0b63bd8f56a1469b12eafeb875b1041a451 +dnl # ("block: add a bi_error field to struct bio"). dnl # AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [ - AC_MSG_CHECKING([whether bio_end_io_t wants 2 args]) + AC_MSG_CHECKING([whether bio_end_io_t wants 1 arg]) ZFS_LINUX_TRY_COMPILE([ #include - void wanted_end_io(struct bio *bio, int x) { return; } + void wanted_end_io(struct bio *bio) { return; } bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; ],[ ],[ AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_2ARGS_BIO_END_IO_T, 1, - [bio_end_io_t wants 2 args]) + AC_DEFINE(HAVE_1ARG_BIO_END_IO_T, 1, + [bio_end_io_t wants 1 arg]) ],[ AC_MSG_RESULT(no) ]) -- cgit v1.2.3