Whamcloud - gitweb
LU-7704 utils: check LOOP_CTL_GET_FREE aginst target kernel 21/18121/8
authorAlex Zhuravlev <alexey.zhuravlev@intel.com>
Mon, 25 Jan 2016 12:17:26 +0000 (15:17 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Sat, 20 Feb 2016 05:40:47 +0000 (05:40 +0000)
instead of a building host.

Change-Id: I838d4c6a8ed076013aaba7bc0aa8eb434fa10be8
Signed-off-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-on: http://review.whamcloud.com/18121
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/autoconf/lustre-core.m4
lustre/utils/mount_utils.c

index b8285d0..6ccbfc7 100644 (file)
@@ -1948,6 +1948,32 @@ bio_endio, [
 ]) # LC_BIO_ENDIO_USES_ONE_ARG
 
 #
+# LC_HAVE_LOOP_CTL_GET_FREE
+#
+# 4.x kernel have moved userspace APIs to
+# the separate directory and all of them
+# support LOOP_CTL_GET_FREE
+#
+AC_DEFUN([LC_HAVE_LOOP_CTL_GET_FREE], [
+LB_CHECK_FILE([$LINUX/include/linux/loop.h], [
+       LB_CHECK_COMPILE([if have 'HAVE_LOOP_CTL_GET_FREE'],
+       LOOP_CTL_GET_FREE, [
+               #include <linux/loop.h>
+       ],[
+               int i;
+
+               i = LOOP_CTL_GET_FREE;
+       ],[
+               AC_DEFINE(HAVE_LOOP_CTL_GET_FREE, 1,
+                       [LOOP_CTL_GET_FREE exist])
+       ])
+],[
+       AC_DEFINE(HAVE_LOOP_CTL_GET_FREE, 1,
+               [kernel has LOOP_CTL_GET_FREE])
+])
+]) # LC_HAVE_LOOP_CTL_GET_FREE
+
+#
 # LC_PROG_LINUX
 #
 # Lustre linux kernel checks
@@ -2012,6 +2038,7 @@ AC_DEFUN([LC_PROG_LINUX], [
        LC_FILE_LLSEEK_SIZE
        LC_INODE_PERMISION_2ARGS
        LC_RADIX_EXCEPTION_ENTRY
+       LC_HAVE_LOOP_CTL_GET_FREE
 
        # 3.2
        LC_HAVE_VOID_MAKE_REQUEST_FN
index 9d8e232..2289b72 100644 (file)
@@ -365,7 +365,7 @@ int loop_setup(struct mkfs_opts *mop)
                char cmd[PATH_MAX];
                int cmdsz = sizeof(cmd);
 
-#ifdef LOOP_CTL_GET_FREE
+#ifdef HAVE_LOOP_CTL_GET_FREE
                ret = open("/dev/loop-control", O_RDWR);
                if (ret < 0) {
                        fprintf(stderr, "%s: can't access loop control\n", progname);