]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-linux-posix-lock-file-has-wait-arg-now-20070517
authorDerrick Brashear <shadow@dementia.org>
Thu, 17 May 2007 07:36:42 +0000 (07:36 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 17 May 2007 07:36:42 +0000 (07:36 +0000)
FIXES 58590

hopefully this works, i can't actually try it now

(cherry picked from commit 59eb3de5ea3bc9588c91d3f2dbb6a598fa56ad43)

acinclude.m4
src/afs/LINUX/osi_vnodeops.c
src/cf/linux-test4.m4

index bbcc6d8c0a3b7ea37f092fd77fb3e1a67842494e..68f3d454d098b6e0ff1f4cac801c3ca098bba0c8 100644 (file)
@@ -627,6 +627,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_FS_STRUCT_FOP_HAS_FLOCK
                 LINUX_KERNEL_LINUX_SYSCALL_H
                 LINUX_KERNEL_LINUX_SEQ_FILE_H
+                LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
                 LINUX_KERNEL_SELINUX
                 LINUX_KERNEL_SOCK_CREATE
                 LINUX_KERNEL_PAGE_FOLLOW_LINK
@@ -783,6 +784,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then 
                  AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void])
                 fi
+                if test "x$ac_cv_linux_kernel_posix_lock_file_wait_arg" = "xyes" ; then
+                 AC_DEFINE(LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG, 1, [define if your linux kernel uses 3 arguments for posix_lock_file])
+                fi
                 if test "x$ac_cv_linux_kernel_is_selinux" = "xyes" ; then
                  AC_DEFINE(LINUX_KERNEL_IS_SELINUX, 1, [define if your linux kernel uses SELinux features])
                 fi
index 1f61908549b38bae6c4d7c0ebe0dfe9dd21b9c39..466a4e0960e5c4499e921f6a613f37d044ffb73a 100644 (file)
@@ -491,11 +491,11 @@ afs_linux_lock(struct file *fp, int cmd, struct file_lock *flp)
 #ifdef AFS_LINUX24_ENV
     if ((code == 0 || flp->fl_type == F_UNLCK) && 
        (cmd == F_SETLK || cmd == F_SETLKW)) {
-#ifdef AFS_LINUX26_ENV
-       flp->fl_flags &=~ FL_SLEEP;
-       code = posix_lock_file(fp, flp);
+#ifdef LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
+        code = posix_lock_file(fp, flp, 0);
 #else
-       code = posix_lock_file(fp, flp, 0);
+        flp->fl_flags &=~ FL_SLEEP;
+        code = posix_lock_file(fp, flp);
 #endif
        if (code && flp->fl_type != F_UNLCK) {
            struct AFS_FLOCK flock2;
index 518623143f447bc0a397737baed81fbdcdd855ee..44a36796cb167737b847a3aad1b2194a07eceda3 100644 (file)
@@ -456,6 +456,17 @@ printk("%p\n", _super.alloc_inode);],
   AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)])
 
 
+AC_DEFUN([LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG], [
+  AC_MSG_CHECKING([for 3rd argument in posix_lock_file found in new kernels])
+  AC_CACHE_VAL([ac_cv_linux_kernel_posix_lock_file_wait_arg], [
+    AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[posix_lock_file(0,0,0);],
+      ac_cv_linux_kernel_posix_lock_file_wait_arg=yes,
+      ac_cv_linux_kernel_posix_lock_file_wait_arg=no)])
+  AC_MSG_RESULT($ac_cv_linux_kernel_posix_lock_file_wait_arg)])
+
+
 AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
   AC_MSG_CHECKING([for 5th argument in sock_create found in some SELinux kernels])
   AC_CACHE_VAL([ac_cv_linux_kernel_sock_create_v], [