Whamcloud - gitweb
LU-4416 llite: struct kiocb ki_left removed 01/8801/2
authoryangsheng <yang.sheng@intel.com>
Wed, 1 Jan 2014 15:53:38 +0000 (23:53 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 23 Jan 2014 05:09:55 +0000 (05:09 +0000)
struct kiocb without ki_left memeber since 3.12.

Signed-off-by: yang sheng <yang.sheng@intel.com>
Change-Id: Iea1fb67ebb03430b5dc8f71ed2652967ff60b84d
Reviewed-on: http://review.whamcloud.com/8801
Tested-by: Jenkins
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/autoconf/lustre-core.m4
lustre/llite/file.c

index db0f02a..1904bcd 100644 (file)
@@ -1379,6 +1379,23 @@ LB_LINUX_TRY_COMPILE([
 ])
 
 #
+# 3.12 ki_left removed from struct kiocb
+#
+AC_DEFUN([LC_KIOCB_KI_LEFT],
+[AC_MSG_CHECKING([if struct kiocb with ki_left member])
+LB_LINUX_TRY_COMPILE([
+       #include <linux/aio.h>
+],[
+       ((struct kiocb*)0)->ki_left = 0;
+],[
+       AC_DEFINE(HAVE_KIOCB_KI_LEFT, 1, [ki_left exist])
+       AC_MSG_RESULT([yes])
+],[
+       AC_MSG_RESULT([no])
+])
+])
+
+#
 # LC_PROG_LINUX
 #
 # Lustre linux kernel checks
@@ -1485,6 +1502,7 @@ AC_DEFUN([LC_PROG_LINUX],
 
         # 3.12
         LC_OLDSIZE_TRUNCATE_PAGECACHE
+        LC_KIOCB_KI_LEFT
 
         #
         if test x$enable_server != xno ; then
index f726ff2..f57b204 100644 (file)
@@ -1302,7 +1302,11 @@ static ssize_t ll_file_read(struct file *file, char *buf, size_t count,
         local_iov->iov_len = count;
         init_sync_kiocb(kiocb, file);
         kiocb->ki_pos = *ppos;
+#ifdef HAVE_KIOCB_KI_LEFT
         kiocb->ki_left = count;
+#else
+        kiocb->ki_nbytes = count;
+#endif
 
         result = ll_file_aio_read(kiocb, local_iov, 1, kiocb->ki_pos);
         *ppos = kiocb->ki_pos;
@@ -1364,7 +1368,11 @@ static ssize_t ll_file_write(struct file *file, const char *buf, size_t count,
         local_iov->iov_len = count;
         init_sync_kiocb(kiocb, file);
         kiocb->ki_pos = *ppos;
+#ifdef HAVE_KIOCB_KI_LEFT
         kiocb->ki_left = count;
+#else
+        kiocb->ki_nbytes = count;
+#endif
 
         result = ll_file_aio_write(kiocb, local_iov, 1, kiocb->ki_pos);
         *ppos = kiocb->ki_pos;