])
])
+# 2.6.34 has quotactl_ops->[sg]et_dqblk that take struct fs_disk_quota
+AC_DEFUN([LC_HAVE_DQUOT_FS_DISK_QUOTA],
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+[AC_MSG_CHECKING([if quotactl_ops.set_dqblk takes struct fs_disk_quota])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+ #include <linux/quota.h>
+],[
+ struct quotactl_ops qops = {};
+ struct fs_disk_quota fdq;
+ qops.set_dqblk(NULL, 0, 0, &fdq);
+],[
+ AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1, [quotactl_ops.set_dqblk takes struct fs_disk_quota])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+])
+
+# 2.6.34 has renamed dquot options to dquot_*, check for dquot_suspend
+AC_DEFUN([LC_HAVE_DQUOT_SUSPEND],
+[AC_MSG_CHECKING([if dquot_suspend is defined])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/quotaops.h>
+],[
+ dquot_suspend(NULL, -1);
+],[
+ AC_DEFINE(HAVE_DQUOT_SUSPEND, 1, [dquot_suspend is defined])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
# LC_LOCK_MAP_ACQUIRE
# after 2.6.27 lock_map_acquire replaces lock_acquire
AC_DEFUN([LC_LOCK_MAP_ACQUIRE],
the kernel])]) # x86_64
])
+
# 2.6.31 replaces blk_queue_hardsect_size by blk_queue_logical_block_size function
AC_DEFUN([LC_BLK_QUEUE_LOG_BLK_SIZE],
[AC_MSG_CHECKING([if blk_queue_logical_block_size is defined])
],[
AC_MSG_RESULT(no)
])
-])
+])
# 2.6.32 removes blk_queue_max_sectors and add blk_queue_max_hw_sectors
# check blk_queue_max_sectors and use it until disappear.
])
#
-# 2.6.38 vfsmount.mnt_count doesn't use atomic_t
-#
-# 3.3 starts hiding vfsmount guts series (move from include/linux/mount.h to
-# fs/mount.h, see kernel commit 7d6fec45a5131918b51dcd76da52f2ec86a85be6)
-#
-AC_DEFUN([LC_ATOMIC_MNT_COUNT],
-[AC_MSG_CHECKING([if vfsmount guts is hidden, or vfsmount.mnt_count is atomic_t.])
-LB_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- #include <../fs/mount.h>
-],[
- struct mount *mnt = real_mount((struct vfsmount *)0);
-],[
- AC_DEFINE(HAVE_HIDE_VFSMOUNT_GUTS, 1,
- [hide vfsmount guts in fs/mount.h])
- AC_MSG_RESULT([yes, hide vfsmount guts in fs/mount.h])
-],[
- LB_LINUX_TRY_COMPILE([
- #include <asm/atomic.h>
- #include <linux/fs.h>
- #include <linux/mount.h>
- ],[
- ((struct vfsmount *)0)->mnt_count = ((atomic_t) { 0 });
- ],[
- AC_DEFINE(HAVE_ATOMIC_MNT_COUNT, 1,
- [vfsmount.mnt_count is atomic_t])
- AC_MSG_RESULT([yes, vfsmount.mnt_count is atomic_t])
- ],[
- AC_MSG_RESULT([no])
- ])
-])
-])
-
-#
# 2.6.38 use path as 4th parameter in quota_on.
#
AC_DEFUN([LC_QUOTA_ON_USE_PATH],
])
#
+# 3.0 dirty_inode() has a flag parameter
+# see kernel commit aa38572954ade525817fe88c54faebf85e5a61c0
+#
+AC_DEFUN([LC_DIRTY_INODE_WITH_FLAG],
+[AC_MSG_CHECKING([if dirty_inode super_operation takes flag])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ struct inode *inode;
+ inode->i_sb->s_op->dirty_inode(NULL, 0);
+],[
+ AC_DEFINE(HAVE_DIRTY_INODE_HAS_FLAG, 1,
+ [dirty_inode super_operation takes flag])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+#
# 2.6.38 generic_permission taken 4 parameters.
# in fact, it means rcu-walk aware permission bring.
#
])
#
+# 3.1 introduced generic_file_llseek_size()
+#
+AC_DEFUN([LC_FILE_LLSEEK_SIZE],
+ [LB_CHECK_SYMBOL_EXPORT([generic_file_llseek_size],
+ [fs/read_write.c],
+ [AC_DEFINE(HAVE_FILE_LLSEEK_SIZE, 1,
+ [generic_file_llseek_size is exported by the kernel])])
+])
+
+#
# 3.2 request_queue.make_request_fn defined as function returns with void
# see kernel commit 5a7bbad27a410350e64a2d7f5ec18fc73836c14f
#
EXTRA_KCFLAGS="$tmp_flags"
])
+# 3.5 has generic_file_llseek_size with 5 args
+AC_DEFUN([LC_FILE_LLSEEK_SIZE_5ARG],
+[AC_MSG_CHECKING([if kernel has generic_file_llseek_size with 5 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ generic_file_llseek_size(NULL, 0, 0, 0, 0);
+], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_FILE_LLSEEK_SIZE_5ARGS, 1,
+ [kernel has generic_file_llseek_size with 5 args])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
#
# 3.6 switch i_dentry/d_alias from list to hlist
#
])
#
+# 3.6 vfs adds iop->atomic_open
+#
+AC_DEFUN([LC_HAVE_IOP_ATOMIC_OPEN],
+[AC_MSG_CHECKING([if iop has atomic_open])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ struct inode_operations iop;
+ iop.atomic_open = NULL;
+],[
+ AC_DEFINE(HAVE_IOP_ATOMIC_OPEN, 1,
+ [have iop atomic_open])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 2.6.29
LC_SB_ANY_QUOTA_LOADED
- # 2.6.30
- LC_EXPORT_CPUMASK_OF_NODE
+ # 2.6.30
+ LC_EXPORT_CPUMASK_OF_NODE
# 2.6.31
LC_BLK_QUEUE_LOG_BLK_SIZE
LC_EXPORT_ACCESS_PROCESS_VM
LC_VFS_INODE_NEWSIZE_OK
+ # 2.6.34
+ LC_HAVE_DQUOT_FS_DISK_QUOTA
+ LC_HAVE_DQUOT_SUSPEND
+
# 2.6.35, 3.0.0
LC_FILE_FSYNC
LC_EXPORT_SIMPLE_SETATTR
LC_KERNEL_LOCKED
# 2.6.38
- LC_ATOMIC_MNT_COUNT
LC_BLKDEV_GET_BY_DEV
LC_GENERIC_PERMISSION
LC_QUOTA_ON_USE_PATH
LC_REQUEST_QUEUE_UNPLUG_FN
LC_HAVE_FSTYPE_MOUNT
+ # 3.0
+ LC_DIRTY_INODE_WITH_FLAG
+
# 3.1
LC_LM_XXX_LOCK_MANAGER_OPS
LC_INODE_DIO_WAIT
LC_IOP_GET_ACL
+ LC_FILE_LLSEEK_SIZE
# 3.1.1
LC_BLOCKS_FOR_TRUNCATE
# 3.5
LC_HAVE_CLEAR_INODE
LC_HAVE_ENCODE_FH_PARENT
+ LC_FILE_LLSEEK_SIZE_5ARG
# 3.6
LC_HAVE_DENTRY_D_ALIAS_HLIST
LC_DENTRY_OPEN_USE_PATH
+ LC_HAVE_IOP_ATOMIC_OPEN
#
if test x$enable_server = xyes ; then
lustre/kernel_patches/targets/2.6-fc11.target
lustre/kernel_patches/targets/2.6-fc12.target
lustre/kernel_patches/targets/2.6-fc15.target
+lustre/kernel_patches/targets/3.x-fc18.target
lustre/ldlm/Makefile
lustre/fid/Makefile
lustre/fid/autoMakefile