diff --git a/lustre/include/ioctl.h b/lustre/include/ioctl.h
index a4ec8a556e65cbab54169e8280efe168df448805..fc2207bb9aa685573925908ac7f9c93d341b25d8 100644
--- a/lustre/include/ioctl.h
+++ b/lustre/include/ioctl.h
@@ -1,5 +1,13 @@
-#ifndef _ASMI386_IOCTL_H
+#ifndef _IOWR
+
+/* On i386 and x86_64, _ASM_I386_IOCTL_H is defined by the kernel's ioctl.h,
+ * and on newer kernels this header is shared as _ASM_GENERIC_IOCTL_H.
+ *
+ * We can avoid any problems with the kernel header being included again by
+ * defining _ASM_I386_IOCTL_H here so that a later occurence of <asm/ioctl.h>
+ * does not include the kernel's ioctl.h after this one. b=14746 */
 #define _ASMI386_IOCTL_H
+#define _ASM_GENERIC_IOCTL_H
 
 /* ioctl command encoding: 32 bits total, command in lower 16 bits,
  * size of the parameter structure in the lower 14 bits of the