The field virtual_address of struct vma_area_struct was
removed since it provided no better benefit than just
using the address field directly.
Linux-commit:
1a29d85eb0f19b7d8271923d8917d7b4f5540b3e
Change-Id: I05068cdf27c93c5b3201c76ec043bc6c0e66df1f
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/27281
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
]) # LC_IOP_GENERIC_READLINK
#
]) # LC_IOP_GENERIC_READLINK
#
+# LC_HAVE_VM_FAULT_ADDRESS
+#
+# Kernel version 4.10 commit 1a29d85eb0f19b7d8271923d8917d7b4f5540b3e
+# removed virtual_address field. Need to use address field instead
+#
+AC_DEFUN([LC_HAVE_VM_FAULT_ADDRESS], [
+LB_CHECK_COMPILE([if 'struct vm_fault' replaced virtual_address with address field],
+vm_fault_address, [
+ #include <linux/mm.h>
+],[
+ struct vm_fault vmf;
+ vmf.address = NULL;
+],[
+ AC_DEFINE(HAVE_VM_FAULT_ADDRESS, 1,
+ [virtual_address has been replaced by address field])
+])
+]) # LC_HAVE_VM_FAULT_ADDRESS
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 4.10
LC_IOP_GENERIC_READLINK
# 4.10
LC_IOP_GENERIC_READLINK
+ LC_HAVE_VM_FAULT_ADDRESS
#
AS_IF([test "x$enable_server" != xno], [
#
AS_IF([test "x$enable_server" != xno], [
}
#endif /* HAVE_FILE_OPERATIONS_READ_WRITE_ITER */
}
#endif /* HAVE_FILE_OPERATIONS_READ_WRITE_ITER */
+static inline void __user *get_vmf_address(struct vm_fault *vmf)
+{
+#ifdef HAVE_VM_FAULT_ADDRESS
+ return (void __user *)vmf->address;
+#else
+ return vmf->virtual_address;
+#endif
+}
+
#endif /* _LUSTRE_COMPAT_H */
#endif /* _LUSTRE_COMPAT_H */
if (vmf->page) {
LL_CDEBUG_PAGE(D_PAGE, vmf->page, "got addr %p type NOPAGE\n",
if (vmf->page) {
LL_CDEBUG_PAGE(D_PAGE, vmf->page, "got addr %p type NOPAGE\n",
if (unlikely(!(cfio->ft_flags & VM_FAULT_LOCKED))) {
lock_page(vmf->page);
cfio->ft_flags |= VM_FAULT_LOCKED;
if (unlikely(!(cfio->ft_flags & VM_FAULT_LOCKED))) {
lock_page(vmf->page);
cfio->ft_flags |= VM_FAULT_LOCKED;
}
if (cfio->ft_flags & VM_FAULT_SIGBUS) {
}
if (cfio->ft_flags & VM_FAULT_SIGBUS) {
- CDEBUG(D_PAGE, "got addr %p - SIGBUS\n", vmf->virtual_address);
+ CDEBUG(D_PAGE, "got addr %p - SIGBUS\n", get_vmf_address(vmf));
return -EFAULT;
}
if (cfio->ft_flags & VM_FAULT_OOM) {
return -EFAULT;
}
if (cfio->ft_flags & VM_FAULT_OOM) {
- CDEBUG(D_PAGE, "got addr %p - OOM\n", vmf->virtual_address);
+ CDEBUG(D_PAGE, "got addr %p - OOM\n", get_vmf_address(vmf));