]) # LC_SUPER_SETUP_BDI_NAME
#
+# LC_BI_STATUS
+#
+# 4.12 replace bi_error to bi_status
+#
+AC_DEFUN([LC_BI_STATUS], [
+LB_CHECK_COMPILE([if 'bi_status' exist],
+bi_status, [
+ #include <linux/blk_types.h>
+],[
+ ((struct bio *)0)->bi_status = 0;
+],[
+ AC_DEFINE(HAVE_BI_STATUS, 1,
+ ['bi_status' is available])
+])
+]) # LC_BI_STATUS
+
+#
+# LC_PAGEVEC_INIT_ONE_PARAM
+#
+# 4.14 pagevec_init takes one parameter
+#
+AC_DEFUN([LC_PAGEVEC_INIT_ONE_PARAM], [
+LB_CHECK_COMPILE([if 'pagevec_init' takes one parameter],
+pagevec_init, [
+ #include <linux/pagevec.h>
+],[
+ pagevec_init(NULL);
+],[
+ AC_DEFINE(HAVE_PAGEVEC_INIT_ONE_PARAM, 1,
+ ['pagevec_init' takes one parameter])
+])
+]) # LC_PAGEVEC_INIT_ONE_PARAM
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 4.12
LC_CURRENT_TIME
LC_SUPER_SETUP_BDI_NAME
+ LC_BI_STATUS
+
+ # 4.14
+ LC_PAGEVEC_INIT_ONE_PARAM
#
AS_IF([test "x$enable_server" != xno], [
#ifdef HAVE_BIO_ENDIO_USES_ONE_ARG
static void dio_complete_routine(struct bio *bio)
{
+# ifdef HAVE_BI_STATUS
+ int error = bio->bi_status;
+# else
int error = bio->bi_error;
+# endif
#else
static void dio_complete_routine(struct bio *bio, int error)
{
struct pagevec pvec;
int i;
+#ifdef HAVE_PAGEVEC_INIT_ONE_PARAM
+ pagevec_init(&pvec);
+#else
pagevec_init(&pvec, 0);
+#endif
for (i = 0; i < npages; i++) {
if (lnb[i].lnb_page == NULL)
if (end == 0)
break;
invalidate_mapping_pages(inode->i_mapping,
- start >> PAGE_CACHE_SHIFT,
- (end - 1) >> PAGE_CACHE_SHIFT);
+ start >> PAGE_SHIFT,
+ (end - 1) >> PAGE_SHIFT);
break;
default:
rc = -ENOTSUPP;