]) # LC_HAVE_CACHE_HEAD_HLIST
#
+# LC_HAVE_LOCKS_LOCK_FILE_WAIT
+#
+# 4.4 kernel have moved locks API users to
+# locks_lock_inode_wait()
+#
+AC_DEFUN([LC_HAVE_LOCKS_LOCK_FILE_WAIT], [
+LB_CHECK_COMPILE([if 'locks_lock_file_wait' exists],
+locks_lock_file_wait, [
+ #include <linux/fs.h>
+],[
+ locks_lock_file_wait(NULL, NULL);
+],[
+ AC_DEFINE(HAVE_LOCKS_LOCK_FILE_WAIT, 1,
+ [kernel has locks_lock_file_wait])
+])
+]) # LC_HAVE_LOCKS_LOCK_FILE_WAIT
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 4.3
LC_HAVE_CACHE_HEAD_HLIST
+ # 4.4
+ LC_HAVE_LOCKS_LOCK_FILE_WAIT
+
#
AS_IF([test "x$enable_server" != xno], [
LC_FUNC_DEV_SET_RDONLY
if (!(flags & LDLM_FL_TEST_LOCK))
file_lock->fl_type = fl_type;
+#ifdef HAVE_LOCKS_LOCK_FILE_WAIT
+ if ((rc == 0 || file_lock->fl_type == F_UNLCK) &&
+ !(flags & LDLM_FL_TEST_LOCK))
+ rc2 = locks_lock_file_wait(file, file_lock);
+#else
if ((file_lock->fl_flags & FL_FLOCK) &&
(rc == 0 || file_lock->fl_type == F_UNLCK))
rc2 = flock_lock_file_wait(file, file_lock);
(rc == 0 || file_lock->fl_type == F_UNLCK) &&
!(flags & LDLM_FL_TEST_LOCK))
rc2 = posix_lock_file_wait(file, file_lock);
+#endif /* HAVE_LOCKS_LOCK_FILE_WAIT */
if (rc2 && file_lock->fl_type != F_UNLCK) {
einfo.ei_mode = LCK_NL;