diff --git a/config/kernel-mk-request-fn.m4 b/config/kernel-mk-request-fn.m4 index 88ee2ebb3d..57eebe23de 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 + + 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 c81f02a390..613b47ef92 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -756,6 +756,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 }