For the 4.2 kernel bio_endio() is down to taking only
one argument. This patch handles this API change.
Change-Id: I22edc64e76d22241c8c809acf58cf64dd67bbb61
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: http://review.whamcloud.com/16278
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Tested-by: Jenkins
Reviewed-by: Frank Zago <fzago@cray.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
]) # LC_SYMLINK_OPS_USE_NAMEIDATA
#
]) # LC_SYMLINK_OPS_USE_NAMEIDATA
#
+# LC_BIO_ENDIO_USES_ONE_ARG
+#
+# 4.2 kernel bio_endio now only takes one argument
+#
+AC_DEFUN([LC_BIO_ENDIO_USES_ONE_ARG], [
+LB_CHECK_COMPILE([if 'bio_endio' with one argument exist],
+bio_endio, [
+ #include <linux/bio.h>
+],[
+ bio_endio(NULL);
+],[
+ AC_DEFINE(HAVE_BIO_ENDIO_USES_ONE_ARG, 1,
+ [bio_endio takes only one argument])
+])
+]) # LC_BIO_ENDIO_USES_ONE_ARG
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 4.2
LC_NEW_CANCEL_DIRTY_PAGE
# 4.2
LC_NEW_CANCEL_DIRTY_PAGE
+ LC_BIO_ENDIO_USES_ONE_ARG
LC_SYMLINK_OPS_USE_NAMEIDATA
#
LC_SYMLINK_OPS_USE_NAMEIDATA
#
static inline void loop_handle_bio(struct lloop_device *lo, struct bio *bio)
{
static inline void loop_handle_bio(struct lloop_device *lo, struct bio *bio)
{
- int ret;
- ret = do_bio_lustrebacked(lo, bio);
- while (bio) {
- struct bio *tmp = bio->bi_next;
- bio->bi_next = NULL;
+ int ret;
+
+ ret = do_bio_lustrebacked(lo, bio);
+ while (bio) {
+ struct bio *tmp = bio->bi_next;
+
+ bio->bi_next = NULL;
+#ifdef HAVE_BIO_ENDIO_USES_ONE_ARG
+ bio->bi_error = ret;
+ bio_endio(bio);
+#else
}
static inline int loop_active(struct lloop_device *lo)
}
static inline int loop_active(struct lloop_device *lo)