Whamcloud - gitweb
LU-1994 llite: kernel 3.5 renames end_writeback to clear_inode
authoryang sheng <ys@whamcloud.com>
Wed, 5 Dec 2012 19:38:15 +0000 (03:38 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 17 Dec 2012 06:51:21 +0000 (01:51 -0500)
kernel commit dbd5768f8 renames end_writeback to clear_inode,
which used to exist for ~2.6.36 kernels.

Signed-off-by: Peng Tao <tao.peng@emc.com>
Signed-off-by: yang sheng <ys@whamcloud.com>
Change-Id: I2435e820092085c0fb55539818f4bad9e48ff386
Reviewed-on: http://review.whamcloud.com/3756
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
lustre/autoconf/lustre-core.m4
lustre/include/linux/lustre_compat25.h
lustre/llite/llite_lib.c

index ba2571d..c47dbc4 100644 (file)
@@ -2066,6 +2066,25 @@ LB_LINUX_TRY_COMPILE([
 ])
 
 #
 ])
 
 #
+# 3.5 renames end_writeback() back to clear_inode()...
+# see kernel commit dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430
+#
+AC_DEFUN([LC_HAVE_CLEAR_INODE],
+[AC_MSG_CHECKING([if have clear_inode])
+LB_LINUX_TRY_COMPILE([
+       #include <linux/fs.h>
+],[
+       clear_inode((struct inode *)NULL);
+],[
+       AC_DEFINE(HAVE_CLEAR_INODE, 1,
+                 [have clear_inode])
+       AC_MSG_RESULT([yes])
+],[
+       AC_MSG_RESULT([no])
+])
+])
+
+#
 # LC_PROG_LINUX
 #
 # Lustre linux kernel checks
 # LC_PROG_LINUX
 #
 # Lustre linux kernel checks
@@ -2230,6 +2249,9 @@ AC_DEFUN([LC_PROG_LINUX],
         LC_HAVE_D_MAKE_ROOT
         LC_KMAP_ATOMIC_HAS_1ARG
 
         LC_HAVE_D_MAKE_ROOT
         LC_KMAP_ATOMIC_HAS_1ARG
 
+        # 3.5
+        LC_HAVE_CLEAR_INODE
+
         #
         if test x$enable_server = xyes ; then
                AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
         #
         if test x$enable_server = xyes ; then
                AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
index e5d6622..7cba933 100644 (file)
@@ -619,6 +619,10 @@ static inline int ll_quota_off(struct super_block *sb, int off, int remount)
 #define ll_kunmap_atomic(a, b) kunmap_atomic(a, b)
 #endif
 
 #define ll_kunmap_atomic(a, b) kunmap_atomic(a, b)
 #endif
 
+#ifndef HAVE_CLEAR_INODE
+#define clear_inode(i)         end_writeback(i)
+#endif
+
 
 #ifndef HAVE_BI_HW_SEGMENTS
 #define bio_hw_segments(q, bio) 0
 
 #ifndef HAVE_BI_HW_SEGMENTS
 #define bio_hw_segments(q, bio) 0
index e91259c..acdec48 100644 (file)
@@ -1895,11 +1895,9 @@ void ll_delete_inode(struct inode *inode)
         /* Workaround end */
 
 #ifdef HAVE_SBOPS_EVICT_INODE
         /* Workaround end */
 
 #ifdef HAVE_SBOPS_EVICT_INODE
-        ll_clear_inode(inode);
-        end_writeback(inode);
-#else
-        clear_inode(inode);
+       ll_clear_inode(inode);
 #endif
 #endif
+       clear_inode(inode);
 
         EXIT;
 }
 
         EXIT;
 }