Whamcloud - gitweb
LU-73 Make register_shrinker argument more visible. 2.0.59-llnl3-base
authorBobi Jam <bobijam@whamcloud.com>
Thu, 31 Mar 2011 04:06:14 +0000 (12:06 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 31 Mar 2011 21:30:55 +0000 (14:30 -0700)
Change-Id: I0e1e9331b250bb31ae1e545e5705243e3a26c75a
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Reviewed-on: http://review.whamcloud.com/377
Tested-by: Hudson
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: wangdi <di.wang@whamcloud.com>
lustre/autoconf/lustre-core.m4
lustre/include/linux/lustre_compat25.h
lustre/ldlm/ldlm_pool.c
lustre/llite/llite_internal.h
lustre/obdclass/lu_object.c
lustre/ptlrpc/sec_bulk.c

index f4e0e1f..5f020d5 100644 (file)
@@ -1598,7 +1598,29 @@ AC_DEFUN([LC_REGISTER_SHRINKER],
 [mm/vmscan.c],[
         AC_DEFINE(HAVE_REGISTER_SHRINKER, 1,
                   [kernel exports register_shrinker])
+# 2.6.32 added another argument to struct shrinker->shrink
+        AC_MSG_CHECKING([if passing shrinker as first argument])
+        tmp_flags="$EXTRA_KCFLAGS"
+        EXTRA_KCFLAGS="-Werror"
+        LB_LINUX_TRY_COMPILE([
+                #include <linux/mm.h>
+                int test_shrink(struct shrinker *, int, gfp_t);
+        ],[
+                struct shrinker *shr = NULL;
+                shr->shrink = test_shrink;
+        ],[
+                AC_MSG_RESULT([yes])
+                AC_DEFINE(SHRINKER_FIRST_ARG, [struct shrinker *shrinker,],
+                        [kernel is passing shrinker as first argument])
+        ],[
+                AC_DEFINE(SHRINKER_FIRST_ARG, ,
+                        [kernel is not passing shrinker as first argument])
+        ])
+        EXTRA_KCFLAGS="$tmp_flags"
 ],[
+       AC_DEFINE(SHRINKER_FIRST_ARG, ,
+                  [kernel does not exports register_shrinker,
+                  so SHRINKER_FIRST_ARG is empty])
 ])
 ])
 
@@ -2083,23 +2105,6 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
-# 2.6.32-71 adds an argument to shrink callback
-AC_DEFUN([LC_SHRINK_3ARGS],
-[AC_MSG_CHECKING([if shrink has 3 arguments])
-LB_LINUX_TRY_COMPILE([
-        #include <linux/mm.h>
-],[
-        struct shrinker s;
-        return s.shrink(NULL, 0, 0);
-],[
-        AC_MSG_RESULT(yes)
-        AC_DEFINE(HAVE_SHRINK_3ARGS, 1,
-                  [shrink has 3 arguments])
-],[
-        AC_MSG_RESULT(no)
-])
-])
-
 #
 # LC_EXT4_SINGLEDATA_TRANS_BLOCKS_SB
 #
@@ -2346,7 +2351,6 @@ AC_DEFUN([LC_PROG_LINUX],
          LC_SB_BDI
          LC_BLK_QUEUE_MAX_SECTORS
          LC_BLK_QUEUE_MAX_SEGMENTS
-         LC_SHRINK_3ARGS
          LC_EXT4_SINGLEDATA_TRANS_BLOCKS_SB
 
          #
index cc504e5..f651958 100644 (file)
@@ -690,16 +690,8 @@ static inline int ll_crypto_hmac(struct crypto_tfm *tfm,
 #define cpu_to_node(cpu)         0
 #endif
 
-#ifndef HAVE_REGISTER_SHRINKER
-#define KERN_SHRINKER(name) name(int nr_to_scan, gfp_t gfp_mask)
-#else
-#ifdef HAVE_SHRINK_3ARGS
-typedef int (*cfs_shrinker_t)(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask);
-#define KERN_SHRINKER(name) name(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask)
-#else
-typedef int (*cfs_shrinker_t)(int nr_to_scan, gfp_t gfp_mask);
-#define KERN_SHRINKER(name) name(int nr_to_scan, gfp_t gfp_mask)
-#endif
+#ifdef HAVE_REGISTER_SHRINKER
+typedef int (*cfs_shrinker_t)(SHRINKER_FIRST_ARG int nr_to_scan, gfp_t gfp_mask);
 
 static inline
 struct shrinker *cfs_set_shrinker(int seek, cfs_shrinker_t func)
index fa55e42..6d3cf0d 100644 (file)
@@ -1151,12 +1151,14 @@ static int ldlm_pools_shrink(ldlm_side_t client, int nr,
         return cached;
 }
 
-static int KERN_SHRINKER(ldlm_pools_srv_shrink)
+static int ldlm_pools_srv_shrink(SHRINKER_FIRST_ARG int nr_to_scan,
+                                 unsigned int gfp_mask)
 {
         return ldlm_pools_shrink(LDLM_NAMESPACE_SERVER, nr_to_scan, gfp_mask);
 }
 
-static int KERN_SHRINKER(ldlm_pools_cli_shrink)
+static int ldlm_pools_cli_shrink(SHRINKER_FIRST_ARG int nr_to_scan,
+                                 unsigned int gfp_mask)
 {
         return ldlm_pools_shrink(LDLM_NAMESPACE_CLIENT, nr_to_scan, gfp_mask);
 }
index 3299464..43186e9 100644 (file)
@@ -701,7 +701,6 @@ void ll_lli_init(struct ll_inode_info *lli);
 int ll_fill_super(struct super_block *sb);
 void ll_put_super(struct super_block *sb);
 void ll_kill_super(struct super_block *sb);
-int ll_shrink_cache(int nr_to_scan, gfp_t gfp_mask);
 struct inode *ll_inode_from_lock(struct ldlm_lock *lock);
 void ll_clear_inode(struct inode *inode);
 int ll_setattr_raw(struct inode *inode, struct iattr *attr);
index 69aa691..3023736 100644 (file)
@@ -1626,7 +1626,8 @@ static void lu_site_stats_get(cfs_hash_t *hs,
 }
 
 #ifdef __KERNEL__
-static int KERN_SHRINKER(lu_cache_shrink)
+static int lu_cache_shrink(SHRINKER_FIRST_ARG int nr_to_scan,
+                           unsigned int gfp_mask)
 {
         lu_site_stats_t stats;
         struct lu_site *s;
index a42dacb..7243e8f 100644 (file)
@@ -239,7 +239,8 @@ static void enc_pools_release_free_pages(long npages)
  * could be called frequently for query (@nr_to_scan == 0).
  * we try to keep at least PTLRPC_MAX_BRW_PAGES pages in the pool.
  */
-static int KERN_SHRINKER(enc_pools_shrink)
+static int enc_pools_shrink(SHRINKER_FIRST_ARG int nr_to_scan,
+                            unsigned int gfp_mask)
 {
         if (unlikely(nr_to_scan != 0)) {
                 cfs_spin_lock(&page_pools.epp_lock);