#define F_INPROGRESS   64
 
-struct flock {
-       short l_type;
-       short l_whence;
-       __kernel_off_t l_start;
-       __kernel_off_t l_len;
-       __kernel_pid_t l_pid;
-};
-
 #include <asm-generic/fcntl.h>
 
 #endif
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #ifndef _ASM_GENERIC_FCNTL_H
 #define _ASM_GENERIC_FCNTL_H
 
+#include <linux/types.h>
+
 /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
    located on an ext2 file system */
 #define O_ACCMODE      00000003
 
 #define F_LINUX_SPECIFIC_BASE  1024
 
+#ifndef HAVE_ARCH_STRUCT_FLOCK
+#ifndef __ARCH_FLOCK_PAD
+#define __ARCH_FLOCK_PAD
+#endif
+
+struct flock {
+       short   l_type;
+       short   l_whence;
+       off_t   l_start;
+       off_t   l_len;
+       pid_t   l_pid;
+       __ARCH_FLOCK_PAD
+};
+#endif
+
 #endif /* _ASM_GENERIC_FCNTL_H */
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
  *     David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co.
  */
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 #define force_o_largefile()    \
                (personality(current->personality) != PER_LINUX32)
 
 
 #ifndef _ASM_M32R_FCNTL_H
 #define _ASM_M32R_FCNTL_H
 
-/* $Id$ */
-
-/* orig : i386 2.4.18 */
-
 #define F_GETLK64      12      /*  using 'struct flock64' */
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
        long    l_sysid;
        __kernel_pid_t l_pid;
        long    pad[4];
-} flock_t;
+};
 
 typedef struct flock64 {
        short   l_type;
        pid_t   l_pid;
 } flock64_t;
 
-#else /* 64-bit definitions */
 
-typedef struct flock {
-       short   l_type;
-       short   l_whence;
-       __kernel_off_t l_start;
-       __kernel_off_t l_len;
-       __kernel_pid_t l_pid;
-} flock_t;
-
-#ifdef __KERNEL__
-#define flock64                flock
-#endif
+#define HAVE_ARCH_STRUCT_FLOCK
 
 #endif
 
 #include <asm-generic/fcntl.h>
 
+typedef struct flock flock_t;
+
 #endif /* _ASM_FCNTL_H */
 
 #define F_WRLCK                02
 #define F_UNLCK                03
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short l_type;
        short l_whence;
 
 #define F_GETLK64      12      /*  using 'struct flock64' */
 #define F_SETLK64      13
 #define F_SETLKW64     14
-#endif
-
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
 
-#ifndef __powerpc64__
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_GETLK64      12      /*  using 'struct flock64' */
 #define F_SETLK64      13
 #define F_SETLKW64     14
-#endif /* ! __s390x__ */
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
-#ifndef __s390x__
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
 #define F_WRLCK                2
 #define F_UNLCK                3
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-       short __unused;
-};
-
 struct flock64 {
        short l_type;
        short l_whence;
        short __unused;
 };
 
+#define __ARCH_FLOCK_PAD       short __unused;
+
 #include <asm-generic/fcntl.h>
 
 #endif
 
 #define F_WRLCK                2
 #define F_UNLCK                3
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-       short __unused;
-};
+#define __ARCH_FLOCK_PAD       short __unused;
 
 #include <asm-generic/fcntl.h>
 
 
 #define F_SETLK64      13
 #define F_SETLKW64     14
 
-struct flock {
-       short l_type;
-       short l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t l_pid;
-};
-
 struct flock64 {
        short  l_type;
        short  l_whence;
 
-#ifndef _X86_64_FCNTL_H
-#define _X86_64_FCNTL_H
-
-struct flock {
-       short  l_type;
-       short  l_whence;
-       off_t l_start;
-       off_t l_len;
-       pid_t  l_pid;
-};
-
 #include <asm-generic/fcntl.h>
-
-#endif /* !_X86_64_FCNTL_H */
 
        pid_t  l_pid;
 };
 
+#define HAVE_ARCH_STRUCT_FLOCK
+
 #include <asm-generic/fcntl.h>
 
 #endif /* _XTENSA_FCNTL_H */