diff options
Diffstat (limited to 'sys-cluster/lustre/files/2.4/0001-LU-1337-vfs-kernel-3.1-renames-lock-manager-ops.patch')
-rw-r--r-- | sys-cluster/lustre/files/2.4/0001-LU-1337-vfs-kernel-3.1-renames-lock-manager-ops.patch | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/sys-cluster/lustre/files/2.4/0001-LU-1337-vfs-kernel-3.1-renames-lock-manager-ops.patch b/sys-cluster/lustre/files/2.4/0001-LU-1337-vfs-kernel-3.1-renames-lock-manager-ops.patch new file mode 100644 index 000000000..5cc32197d --- /dev/null +++ b/sys-cluster/lustre/files/2.4/0001-LU-1337-vfs-kernel-3.1-renames-lock-manager-ops.patch @@ -0,0 +1,190 @@ +From 384e48e3f72883df9ea12649a4d8e76f78e8c70a Mon Sep 17 00:00:00 2001 +From: Liu Xuezhao <xuezhao.liu@emc.com> +Date: Thu, 9 Aug 2012 10:37:39 +0800 +Subject: [PATCH 01/13] LU-1337 vfs: kernel 3.1 renames lock-manager ops + +Kernel 3.1 renames lock-manager ops(lock_manager_operations) from +fl_xxx to lm_xxx (commit 8fb47a4fbf858a164e973b8ea8ef5e83e61f2e50). + +Add LC_LM_XXX_LOCK_MANAGER_OPS/HAVE_LM_XXX_LOCK_MANAGER_OPS to check. + +Re-arrange several macro definitions in lustre-core.m4 as kernel +version sequence. + +Signed-off-by: Liu Xuezhao <xuezhao.liu@emc.com> +Change-Id: Ic86ec9db2f8262ef7ab9f5f2fb51ca79591120a4 +--- + lustre/autoconf/lustre-core.m4 | 85 +++++++++++++++++++++------------- + lustre/include/linux/lustre_compat25.h | 4 ++ + lustre/llite/file.c | 18 +++---- + 3 files changed, 67 insertions(+), 40 deletions(-) + +diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 +index c8cc45f..3762784 100644 +--- a/lustre/autoconf/lustre-core.m4 ++++ b/lustre/autoconf/lustre-core.m4 +@@ -1713,6 +1713,18 @@ EXTRA_KCFLAGS="$tmp_flags" + ]) + + # ++# 2.6.38 export simple_setattr ++# ++AC_DEFUN([LC_EXPORT_SIMPLE_SETATTR], ++[LB_CHECK_SYMBOL_EXPORT([simple_setattr], ++[fs/libfs.c],[ ++AC_DEFINE(HAVE_SIMPLE_SETATTR, 1, ++ [simple_setattr is exported by the kernel]) ++],[ ++]) ++]) ++ ++# + # 2.6.39 remove unplug_fn from request_queue. + # + AC_DEFUN([LC_REQUEST_QUEUE_UNPLUG_FN], +@@ -1782,14 +1794,42 @@ LB_LINUX_TRY_COMPILE([ + ]) + + # +-# 2.6.38 export simple_setattr ++# 3.1.1 has ext4_blocks_for_truncate + # +-AC_DEFUN([LC_EXPORT_SIMPLE_SETATTR], +-[LB_CHECK_SYMBOL_EXPORT([simple_setattr], +-[fs/libfs.c],[ +-AC_DEFINE(HAVE_SIMPLE_SETATTR, 1, +- [simple_setattr is exported by the kernel]) ++AC_DEFUN([LC_BLOCKS_FOR_TRUNCATE], ++[AC_MSG_CHECKING([if kernel has ext4_blocks_for_truncate]) ++LB_LINUX_TRY_COMPILE([ ++ #include <linux/fs.h> ++ #include "$LINUX/fs/ext4/ext4_jbd2.h" ++ #include "$LINUX/fs/ext4/truncate.h" + ],[ ++ ext4_blocks_for_truncate(NULL); ++],[ ++ AC_MSG_RESULT([yes]) ++ AC_DEFINE(HAVE_BLOCKS_FOR_TRUNCATE, 1, ++ [kernel has ext4_blocks_for_truncate]) ++],[ ++ AC_MSG_RESULT([no]) ++]) ++]) ++ ++# ++# 3.1 renames lock-manager ops(lock_manager_operations) from fl_xxx to lm_xxx ++# see kernel commit 8fb47a4fbf858a164e973b8ea8ef5e83e61f2e50 ++# ++AC_DEFUN([LC_LM_XXX_LOCK_MANAGER_OPS], ++[AC_MSG_CHECKING([if lock-manager ops renamed to lm_xxx]) ++LB_LINUX_TRY_COMPILE([ ++ #include <linux/fs.h> ++],[ ++ struct lock_manager_operations lm_ops; ++ lm_ops.lm_compare_owner = NULL; ++],[ ++ AC_DEFINE(HAVE_LM_XXX_LOCK_MANAGER_OPS, 1, ++ [lock-manager ops renamed to lm_xxx]) ++ AC_MSG_RESULT([yes]) ++],[ ++ AC_MSG_RESULT([no]) + ]) + ]) + +@@ -1832,26 +1872,6 @@ LB_LINUX_TRY_COMPILE([ + ]) + + # +-# 3.1.1 has ext4_blocks_for_truncate +-# +-AC_DEFUN([LC_BLOCKS_FOR_TRUNCATE], +-[AC_MSG_CHECKING([if kernel has ext4_blocks_for_truncate]) +-LB_LINUX_TRY_COMPILE([ +- #include <linux/fs.h> +- #include "$LINUX/fs/ext4/ext4_jbd2.h" +- #include "$LINUX/fs/ext4/truncate.h" +-],[ +- ext4_blocks_for_truncate(NULL); +-],[ +- AC_MSG_RESULT([yes]) +- AC_DEFINE(HAVE_BLOCKS_FOR_TRUNCATE, 1, +- [kernel has ext4_blocks_for_truncate]) +-],[ +- AC_MSG_RESULT([no]) +-]) +-]) +- +-# + # LC_PROG_LINUX + # + # Lustre linux kernel checks +@@ -1991,15 +2011,18 @@ AC_DEFUN([LC_PROG_LINUX], + + # 2.6.39 + LC_REQUEST_QUEUE_UNPLUG_FN +- LC_HAVE_FSTYPE_MOUNT +- +- # 3.3 +- LC_HAVE_MIGRATE_HEADER +- LC_MIGRATEPAGE_4ARGS ++ LC_HAVE_FSTYPE_MOUNT + + # 3.1.1 + LC_BLOCKS_FOR_TRUNCATE + ++ # 3.1 ++ LC_LM_XXX_LOCK_MANAGER_OPS ++ ++ # 3.3 ++ LC_HAVE_MIGRATE_HEADER ++ LC_MIGRATEPAGE_4ARGS ++ + # + if test x$enable_server = xyes ; then + AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server]) +diff --git a/lustre/include/linux/lustre_compat25.h b/lustre/include/linux/lustre_compat25.h +index 6a9c060..6b8d155 100644 +--- a/lustre/include/linux/lustre_compat25.h ++++ b/lustre/include/linux/lustre_compat25.h +@@ -758,5 +758,9 @@ static inline bool selinux_is_enabled(void) + } + #endif + ++#ifndef HAVE_LM_XXX_LOCK_MANAGER_OPS ++# define lm_compare_owner fl_compare_owner ++#endif ++ + #endif /* __KERNEL__ */ + #endif /* _COMPAT25_H */ +diff --git a/lustre/llite/file.c b/lustre/llite/file.c +index f793d52..d03ec76 100644 +--- a/lustre/llite/file.c ++++ b/lustre/llite/file.c +@@ -2155,15 +2155,15 @@ int ll_file_flock(struct file *file, int cmd, struct file_lock *file_lock) + } + flock.l_flock.pid = file_lock->fl_pid; + +- /* Somewhat ugly workaround for svc lockd. +- * lockd installs custom fl_lmops->fl_compare_owner that checks +- * for the fl_owner to be the same (which it always is on local node +- * I guess between lockd processes) and then compares pid. +- * As such we assign pid to the owner field to make it all work, +- * conflict with normal locks is unlikely since pid space and +- * pointer space for current->files are not intersecting */ +- if (file_lock->fl_lmops && file_lock->fl_lmops->fl_compare_owner) +- flock.l_flock.owner = (unsigned long)file_lock->fl_pid; ++ /* Somewhat ugly workaround for svc lockd. ++ * lockd installs custom fl_lmops->lm_compare_owner that checks ++ * for the fl_owner to be the same (which it always is on local node ++ * I guess between lockd processes) and then compares pid. ++ * As such we assign pid to the owner field to make it all work, ++ * conflict with normal locks is unlikely since pid space and ++ * pointer space for current->files are not intersecting */ ++ if (file_lock->fl_lmops && file_lock->fl_lmops->lm_compare_owner) ++ flock.l_flock.owner = (unsigned long)file_lock->fl_pid; + + switch (file_lock->fl_type) { + case F_RDLCK: +-- +1.7.12 + |