AC_DEFINE(HAVE_REGISTER_SHRINKER, 1,
[kernel exports register_shrinker])
],[
+ AC_MSG_CHECKING([if kernel using gfp_t for shrinker second paramter])
+ tmp_flags="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="-Werror"
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/mm.h>
+ ],[
+ struct shrinker *scb(int nts, gfp_t mask) {
+ return 0;
+ }
+ shrinter_t fp = scb;
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(SHRINKER_MASK_T, gfp_t,
+ [kernel using gfp_t for shrinker callback])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_DEFINE(SHRINKER_MASK_T, unsigned int,
+ [kernel using unsigned for shrinker callback])
+ ])
+ EXTRA_KCFLAGS="$tmp_flags"
])
])
#if !defined(HAVE_D_REHASH_COND) && defined(HAVE___D_REHASH)
#define d_rehash_cond(dentry, lock) __d_rehash(dentry, lock)
extern void __d_rehash(struct dentry *dentry, int lock);
+#else
+extern void d_rehash_cond(struct dentry*, int lock);
#endif
#if !defined(HAVE_D_MOVE_LOCKED) && defined(HAVE___D_MOVE)
#endif
#ifdef HAVE_REGISTER_SHRINKER
+
+#define SHRINKER_MASK_T gfp_t
+
typedef int (*shrinker_t)(int nr_to_scan, gfp_t gfp_mask);
static inline
/* scanf input parse format -- strip '[' first.
e.g. sscanf(fidstr, SFID, RFID(&fid)); */
-#define SFID "0x%llx:0x%x:0x%x"
+#define SFID "0x%"LPF64"x:0x%x:0x%x"
#define RFID(fid) \
&((fid)->f_seq), \
&((fid)->f_oid), \
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);
+int ll_shrink_cache(int nr_to_scan, SHRINKER_MASK_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);
EXIT;
} /* client_put_super */
-int ll_shrink_cache(int nr_to_scan, gfp_t gfp_mask)
+int ll_shrink_cache(int nr_to_scan, SHRINKER_MASK_T gfp_mask)
{
struct ll_sb_info *sbi;
int count = 0;
}
obd_ioctl_unpack(&data, buf, sizeof rawbuf);
- printf("0x%llx\n", version);
+ printf(LPX64"\n", version);
return 0;
}