Starting in kernel version 3.19 the ki_nbytes field was
removed from struct kiocb since now that data can be
extracted from the struct bio_iter data.
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Change-Id: Iaaf0c6dac19cffb4f4b6fc7a55cbc98cd09678a5
Reviewed-on: http://review.whamcloud.com/14683
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: frank zago <fzago@cray.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
]) # LC_DIRECTIO_USE_ITER
#
]) # LC_DIRECTIO_USE_ITER
#
+# LC_KIOCB_HAS_NBYTES
+#
+# 3.19 kernel removed ki_nbytes from struct kiocb
+#
+AC_DEFUN([LC_KIOCB_HAS_NBYTES], [
+LB_CHECK_COMPILE([if struct kiocb has ki_nbytes field],
+ki_nbytes, [
+ #include <linux/fs.h>
+],[
+ struct kiocb iocb;
+
+ iocb.ki_nbytes = 0;
+],[
+ AC_DEFINE(HAVE_KI_NBYTES, 1, [ki_nbytes field exist])
+])
+]) # LC_KIOCB_HAS_NBYTES
+
+#
# LC_CANCEL_DIRTY_PAGE
#
# 4.0.0 kernel removed cancle_dirty_page
# LC_CANCEL_DIRTY_PAGE
#
# 4.0.0 kernel removed cancle_dirty_page
# 3.16
LC_DIRECTIO_USE_ITER
# 3.16
LC_DIRECTIO_USE_ITER
+ # 3.19
+ LC_KIOCB_HAS_NBYTES
+
# 4.0.0
LC_CANCEL_DIRTY_PAGE
# 4.0.0
LC_CANCEL_DIRTY_PAGE
init_sync_kiocb(kiocb, file);
kiocb->ki_pos = *ppos;
#ifdef HAVE_KIOCB_KI_LEFT
init_sync_kiocb(kiocb, file);
kiocb->ki_pos = *ppos;
#ifdef HAVE_KIOCB_KI_LEFT
- kiocb->ki_left = count;
-#else
- kiocb->ki_nbytes = count;
+ kiocb->ki_left = count;
+#elif defined(HAVE_KI_NBYTES)
+ kiocb->ki_nbytes = count;
#endif
result = ll_file_aio_read(kiocb, &iov, 1, kiocb->ki_pos);
#endif
result = ll_file_aio_read(kiocb, &iov, 1, kiocb->ki_pos);
init_sync_kiocb(kiocb, file);
kiocb->ki_pos = *ppos;
#ifdef HAVE_KIOCB_KI_LEFT
init_sync_kiocb(kiocb, file);
kiocb->ki_pos = *ppos;
#ifdef HAVE_KIOCB_KI_LEFT
- kiocb->ki_left = count;
-#else
- kiocb->ki_nbytes = count;
+ kiocb->ki_left = count;
+#elif defined(HAVE_KI_NBYTES)
+ kiocb->ki_nbytes = count;
#endif
result = ll_file_aio_write(kiocb, &iov, 1, kiocb->ki_pos);
#endif
result = ll_file_aio_write(kiocb, &iov, 1, kiocb->ki_pos);