diff options
author | Chunwei Chen <[email protected]> | 2015-11-23 14:47:29 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-12-01 16:48:08 -0800 |
commit | 1a093716788a08b5d038c49ab99a6e9363c97a64 (patch) | |
tree | bf576b9d99bff11be26ffd48bf30acf281126767 | |
parent | 43518d92fd9200aa07a871604a682e0dc7dff981 (diff) |
Linux 4.4 compat: make_request_fn returns blk_qc_t
As part of block polling support in Linux 4.4, make_request_fn should
return a cookie value of type blk_qc_t. For now, we make zvol_request
always return BLK_QC_T_NONE until we assess whether and how we want
to support block polling.
Signed-off-by: Chunwei Chen <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #4021
-rw-r--r-- | config/kernel-mk-request-fn.m4 | 26 | ||||
-rw-r--r-- | module/zfs/zvol.c | 2 |
2 files changed, 26 insertions, 2 deletions
diff --git a/config/kernel-mk-request-fn.m4 b/config/kernel-mk-request-fn.m4 index 88ee2ebb3..57eebe23d 100644 --- a/config/kernel-mk-request-fn.m4 +++ b/config/kernel-mk-request-fn.m4 @@ -2,6 +2,9 @@ dnl # dnl # Linux 3.2 API Change dnl # make_request_fn returns void instead of int. dnl # +dnl # Linux 4.4 API Change +dnl # make_request_fn returns blk_qc_t. +dnl # AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [ AC_MSG_CHECKING([whether make_request_fn() returns int]) ZFS_LINUX_TRY_COMPILE([ @@ -36,8 +39,27 @@ AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [ AC_DEFINE(MAKE_REQUEST_FN_RET, void, [make_request_fn() returns void]) ],[ - AC_MSG_ERROR(no - Please file a bug report at - https://github.com/zfsonlinux/zfs/issues/new) + AC_MSG_RESULT(no) + AC_MSG_CHECKING([whether make_request_fn() returns blk_qc_t]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/blkdev.h> + + blk_qc_t make_request(struct request_queue *q, struct bio *bio) + { + return (BLK_QC_T_NONE); + } + ],[ + blk_queue_make_request(NULL, &make_request); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(MAKE_REQUEST_FN_RET, blk_qc_t, + [make_request_fn() returns blk_qc_t]) + AC_DEFINE(HAVE_MAKE_REQUEST_FN_RET_QC, 1, + [Noting that make_request_fn() returns blk_qc_t]) + ],[ + AC_MSG_ERROR(no - Please file a bug report at + https://github.com/zfsonlinux/zfs/issues/new) + ]) ]) ]) ]) diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index cdaa838d2..574d3c306 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -755,6 +755,8 @@ out1: spl_fstrans_unmark(cookie); #ifdef HAVE_MAKE_REQUEST_FN_RET_INT return (0); +#elif defined(HAVE_MAKE_REQUEST_FN_RET_QC) + return (BLK_QC_T_NONE); #endif } |