3.2 request_queue.make_request_fn defined as function returns void.
(kernel commit
5a7bbad27a410350e64a2d7f5ec18fc73836c14f)
Add LC_HAVE_VOID_MAKE_REQUEST_FN/HAVE_VOID_MAKE_REQUEST_FN for check.
Signed-off-by: Liu Xuezhao <xuezhao.liu@emc.com>
Change-Id: I49a27873c1754addc9fef7c5f50cbf84592adf05
Reviewed-on: http://review.whamcloud.com/3576
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
])
#
+# 3.2 request_queue.make_request_fn defined as function returns with void
+# see kernel commit 5a7bbad27a410350e64a2d7f5ec18fc73836c14f
+#
+AC_DEFUN([LC_HAVE_VOID_MAKE_REQUEST_FN],
+[AC_MSG_CHECKING([if request_queue.make_request_fn returns void but not int])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/blkdev.h>
+],[
+ int ret;
+ make_request_fn *mrf;
+ ret = mrf(NULL, NULL);
+],[
+ AC_MSG_RESULT([no])
+],[
+ AC_DEFINE(HAVE_VOID_MAKE_REQUEST_FN, 1,
+ [request_queue.make_request_fn returns void but not int])
+ AC_MSG_RESULT([yes])
+])
+])
+
+#
# 3.3 introduces migrate_mode.h and migratepage has 4 args
#
AC_DEFUN([LC_HAVE_MIGRATE_HEADER],
# 3.1.1
LC_BLOCKS_FOR_TRUNCATE
+ # 3.2
+ LC_HAVE_VOID_MAKE_REQUEST_FN
+
# 3.3
LC_HAVE_MIGRATE_HEADER
LC_MIGRATEPAGE_4ARGS
return flag;
}
+#ifdef HAVE_VOID_MAKE_REQUEST_FN
+# define ll_mrf_ret void
+# define LL_MRF_RETURN(rc)
+#else
+# define ll_mrf_ret int
+# define LL_MRF_RETURN(rc) RETURN(rc)
+#endif
+
#endif /* _COMPAT25_H */
return count;
}
-static int loop_make_request(struct request_queue *q, struct bio *old_bio)
+static ll_mrf_ret
+loop_make_request(struct request_queue *q, struct bio *old_bio)
{
struct lloop_device *lo = q->queuedata;
int rw = bio_rw(old_bio);
goto err;
}
loop_add_bio(lo, old_bio);
- return 0;
+ LL_MRF_RETURN(0);
err:
- cfs_bio_io_error(old_bio, old_bio->bi_size);
- return 0;
+ cfs_bio_io_error(old_bio, old_bio->bi_size);
+ LL_MRF_RETURN(0);
}
#ifdef HAVE_REQUEST_QUEUE_UNPLUG_FN