Whamcloud - gitweb
LU-723 Enhance lustre/ldiskfs build system
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index e5fbad0..bf2cbdd 100644 (file)
@@ -165,26 +165,17 @@ LB_LINUX_TRY_COMPILE([
 ])
 
 #
-# LC_CONFIG_BACKINGFS
+# Allow the user to set the MDS thread upper limit
 #
-# setup, check the backing filesystem
-#
-AC_DEFUN([LC_CONFIG_BACKINGFS],
+AC_DEFUN([LC_MDS_MAX_THREADS],
 [
-BACKINGFS="ldiskfs"
-
-if test x$with_ldiskfs = xno ; then
-       if test x$linux25$enable_server = xyesyes ; then
-               AC_MSG_ERROR([ldiskfs is required for 2.6-based servers.])
-       fi
-else
-       # ldiskfs is enabled
-       LB_DEFINE_LDISKFS_OPTIONS
-fi #ldiskfs
-
-AC_MSG_CHECKING([which backing filesystem to use])
-AC_MSG_RESULT([$BACKINGFS])
-AC_SUBST(BACKINGFS)
+        AC_ARG_WITH([mds_max_threads],
+        AC_HELP_STRING([--with-mds-max-threads=size],
+                        [define the maximum number of threads available on the MDS: (default=512)]),
+        [
+                MDS_THREAD_COUNT=$with_mds_max_threads
+                AC_DEFINE_UNQUOTED(MDT_MAX_THREADS, $MDS_THREAD_COUNT, [maximum number of mdt threads])
+        ])
 ])
 
 #
@@ -337,30 +328,6 @@ AC_DEFUN([LC_EXPORT_NODE_TO_CPUMASK],
           ])
 
 #
-# LC_HEADER_LDISKFS_XATTR
-#
-# CHAOS kernel-devel package will not include fs/ldiskfs/xattr.h
-#
-AC_DEFUN([LC_HEADER_LDISKFS_XATTR],
-[AC_MSG_CHECKING([if ldiskfs has xattr.h header])
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-I$LINUX/fs -I$LDISKFS_DIR -I$LDISKFS_DIR/ldiskfs"
-LB_LINUX_TRY_COMPILE([
-       #include <ldiskfs/xattr.h>
-],[
-        ldiskfs_xattr_get(NULL, 0, "", NULL, 0);
-        ldiskfs_xattr_set_handle(NULL, NULL, 0, "", NULL, 0, 0);
-
-],[
-       AC_MSG_RESULT([yes])
-       AC_DEFINE(HAVE_LDISKFS_XATTR_H, 1, [ldiskfs/xattr.h found])
-],[
-       AC_MSG_RESULT([no])
-])
-EXTRA_KCFLAGS="$tmp_flags"
-])
-
-#
 # LC_FUNC_GRAB_CACHE_PAGE_NOWAIT_GFP
 #
 # Check for our patched grab_cache_page_nowait_gfp() function
@@ -1151,49 +1118,6 @@ AC_DEFUN([LC_EXPORT_INVALIDATE_MAPPING_PAGES],
     ],[])
 ])
 
-#
-# LC_EXT4_DISCARD_PREALLOCATIONS
-#
-AC_DEFUN([LC_EXT4_DISCARD_PREALLOCATIONS],
-[AC_MSG_CHECKING([if ext4_discard_preallocatoins defined])
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-I$LINUX/fs"
-LB_LINUX_TRY_COMPILE([
-        #include <ext4/ext4.h>
-],[
-        struct inode i;
-        ext4_discard_preallocations(&i);
-],[
-        AC_MSG_RESULT(yes)
-        AC_DEFINE(LDISKFS_DISCARD_PREALLOCATIONS, 1,
-                  [ext4_discard_preacllocations defined])
-],[
-        AC_MSG_RESULT(no)
-])
-EXTRA_KCFLAGS="$tmp_flags"
-])
-
-#
-# LC_EXT_INSERT_EXTENT_WITH_5ARGS
-#
-AC_DEFUN([LC_EXT_INSERT_EXTENT_WITH_5ARGS],
-[AC_MSG_CHECKING([ext4_ext_insert_extent needs 5 arguments])
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-I$LINUX/fs"
-LB_LINUX_TRY_COMPILE([
-        #include <ext4/ext4_extents.h>
-],[
-        ext4_ext_insert_extent(NULL, NULL, NULL, NULL, 0);
-],[
-        AC_DEFINE([EXT_INSERT_EXTENT_WITH_5ARGS], 1,
-                  [ext4_ext_insert_exent needs 5 arguments])
-        AC_MSG_RESULT([yes])
-],[
-        AC_MSG_RESULT([no])
-])
-EXTRA_KCFLAGS="$tmp_flags"
-])
-
 #2.6.18 + RHEL5 (fc6)
 
 # RHEL5 in FS-cache patch rename PG_checked flag into PG_fs_misc
@@ -1574,38 +1498,6 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
-# 2.6.23 has new shrinker API
-AC_DEFUN([LC_REGISTER_SHRINKER],
-[LB_CHECK_SYMBOL_EXPORT([register_shrinker],
-[mm/vmscan.c],[
-        AC_DEFINE(HAVE_REGISTER_SHRINKER, 1,
-                  [kernel exports register_shrinker])
-# 2.6.32 added another argument to struct shrinker->shrink
-        AC_MSG_CHECKING([if passing shrinker as first argument])
-        tmp_flags="$EXTRA_KCFLAGS"
-        EXTRA_KCFLAGS="-Werror"
-        LB_LINUX_TRY_COMPILE([
-                #include <linux/mm.h>
-                int test_shrink(struct shrinker *, int, gfp_t);
-        ],[
-                struct shrinker *shr = NULL;
-                shr->shrink = test_shrink;
-        ],[
-                AC_MSG_RESULT([yes])
-                AC_DEFINE(SHRINKER_FIRST_ARG, [struct shrinker *shrinker,],
-                        [kernel is passing shrinker as first argument])
-        ],[
-                AC_DEFINE(SHRINKER_FIRST_ARG, ,
-                        [kernel is not passing shrinker as first argument])
-        ])
-        EXTRA_KCFLAGS="$tmp_flags"
-],[
-       AC_DEFINE(SHRINKER_FIRST_ARG, ,
-                  [kernel does not exports register_shrinker,
-                  so SHRINKER_FIRST_ARG is empty])
-])
-])
-
 # 2.6.23 add code to wait other users to complete before removing procfs entry
 AC_DEFUN([LC_PROCFS_USERS],
 [AC_MSG_CHECKING([if kernel has pde_users member in procfs entry struct])
@@ -1921,16 +1813,16 @@ LB_LINUX_TRY_COMPILE([
 #
 # 2.6.27 sles11 move the quotaio_v1{2}.h from include/linux to fs
 # 2.6.32 move the quotaio_v1{2}.h from fs to fs/quota
-AC_DEFUN([LC_HAVE_QUOTAIO_V1_H],
-[LB_CHECK_FILE([$LINUX/include/linux/quotaio_v1.h],[
-        AC_DEFINE(HAVE_QUOTAIO_V1_H, 1,
-                [kernel has include/linux/quotaio_v1.h])
-],[LB_CHECK_FILE([$LINUX/fs/quotaio_v1.h],[
-               AC_DEFINE(HAVE_FS_QUOTAIO_V1_H, 1,
+AC_DEFUN([LC_HAVE_QUOTAIO_H],
+[LB_CHECK_FILE([$LINUX/include/linux/quotaio_v2.h],[
+        AC_DEFINE(HAVE_QUOTAIO_H, 1,
+                [kernel has include/linux/quotaio_v2.h])
+],[LB_CHECK_FILE([$LINUX/fs/quotaio_v2.h],[
+               AC_DEFINE(HAVE_FS_QUOTAIO_H, 1,
                 [kernel has fs/quotaio_v1.h])
-],[LB_CHECK_FILE([$LINUX/fs/quota/quotaio_v1.h],[
-               AC_DEFINE(HAVE_FS_QUOTA_QUOTAIO_V1_H, 1,
-                [kernel has fs/quota/quotaio_v1.h])
+],[LB_CHECK_FILE([$LINUX/fs/quota/quotaio_v2.h],[
+               AC_DEFINE(HAVE_FS_QUOTA_QUOTAIO_H, 1,
+                [kernel has fs/quota/quotaio_v2.h])
 ],[
         AC_MSG_RESULT([no])
 ])
@@ -1990,6 +1882,16 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
+# 2.6.27 exported add_to_page_cache_lru.
+AC_DEFUN([LC_EXPORT_ADD_TO_PAGE_CACHE_LRU],
+[LB_CHECK_SYMBOL_EXPORT([add_to_page_cache_lru],
+[mm/filemap.c],[
+        AC_DEFINE(HAVE_ADD_TO_PAGE_CACHE_LRU, 1,
+                [add_to_page_cache_lru functions are present])
+],[
+])
+])
+
 # 2.6.31
 
 # 2.6.31 replaces blk_queue_hardsect_size by blk_queue_logical_block_size function
@@ -2088,50 +1990,6 @@ LB_LINUX_TRY_COMPILE([
 ])
 
 #
-# LC_EXT4_SINGLEDATA_TRANS_BLOCKS_SB
-#
-AC_DEFUN([LC_EXT4_SINGLEDATA_TRANS_BLOCKS_SB],
-[AC_MSG_CHECKING([if EXT4_SINGLEDATA_TRANS_BLOCKS takes the sb as argument])
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-I$LINUX/fs"
-LB_LINUX_TRY_COMPILE([
-        #include <ext4/ext4.h>
-        #include <ext4/ext4_jbd2.h>
-],[
-        struct super_block sb;
-        EXT4_SINGLEDATA_TRANS_BLOCKS(&sb);
-],[
-        AC_MSG_RESULT(yes)
-        AC_DEFINE(LDISKFS_SINGLEDATA_TRANS_BLOCKS_HAS_SB, 1,
-                  [EXT4_SINGLEDATA_TRANS_BLOCKS takes sb as argument])
-],[
-        AC_MSG_RESULT(no)
-])
-EXTRA_KCFLAGS="$tmp_flags"
-])
-
-#
-# LC_WALK_SPACE_HAS_DATA_SEM
-#
-# 2.6.32 ext4_ext_walk_space() takes i_data_sem internally.
-#
-AC_DEFUN([LC_WALK_SPACE_HAS_DATA_SEM],
-[AC_MSG_CHECKING([if ext4_ext_walk_space() takes i_data_sem])
-WALK_SPACE_DATA_SEM="$(awk 'BEGIN { in_walk_space = 0 }                                 \
-                            /^int ext4_ext_walk_space\(/ { in_walk_space = 1 }          \
-                            /^}/ { if (in_walk_space) in_walk_space = 0 }               \
-                            /i_data_sem/ { if (in_walk_space) { print("yes"); exit } }' \
-                       $LINUX/fs/ext4/extents.c)"
-if test x"$WALK_SPACE_DATA_SEM" == xyes ; then
-       AC_DEFINE(WALK_SPACE_HAS_DATA_SEM, 1,
-                 [ext4_ext_walk_space takes i_data_sem])
-       AC_MSG_RESULT([yes])
-else
-       AC_MSG_RESULT([no])
-fi
-])
-
-#
 # LC_QUOTA64
 #
 # Check if kernel has been patched for 64-bit quota limits support.
@@ -2146,14 +2004,14 @@ EXTRA_KCFLAGS="-I$LINUX/fs"
         LB_LINUX_TRY_COMPILE([
                 #include <linux/kernel.h>
                 #include <linux/fs.h>
-                #ifdef HAVE_QUOTAIO_V1_H
+                #ifdef HAVE_QUOTAIO_H
                 # include <linux/quotaio_v2.h>
                 int versions[] = V2_INITQVERSIONS_R1;
                 struct v2_disk_dqblk_r1 dqblk_r1;
-                #elif defined(HAVE_FS_QUOTA_QUOTAIO_V1_H)
+                #elif defined(HAVE_FS_QUOTA_QUOTAIO_H)
                 # include <quota/quotaio_v2.h>
                 struct v2r1_disk_dqblk dqblk_r1;
-                #elif defined(HAVE_FS_QUOTAIO_V1_H)
+                #elif defined(HAVE_FS_QUOTAIO_H)
                 # include <quotaio_v2.h>
                 struct v2r1_disk_dqblk dqblk_r1;
                 #else
@@ -2200,12 +2058,6 @@ LB_LINUX_TRY_COMPILE([
 #
 AC_DEFUN([LC_PROG_LINUX],
          [LC_LUSTRE_VERSION_H
-         if test x$enable_server = xyes ; then
-             AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
-             LC_FUNC_DEV_SET_RDONLY
-             LC_STACK_SIZE
-             LC_CONFIG_BACKINGFS
-         fi
          LC_CONFIG_PINGER
          LC_CONFIG_CHECKSUM
          LC_CONFIG_LIBLUSTRE_RECOVERY
@@ -2221,7 +2073,6 @@ AC_DEFUN([LC_PROG_LINUX],
          LC_EXPORT___D_REHASH
          LC_EXPORT_NODE_TO_CPUMASK
 
-         LC_HEADER_LDISKFS_XATTR
          LC_FUNC_GRAB_CACHE_PAGE_NOWAIT_GFP
          LC_STRUCT_STATFS
          LC_FILEMAP_POPULATE
@@ -2275,8 +2126,6 @@ AC_DEFUN([LC_PROG_LINUX],
          if test x$enable_server = xyes ; then
                 LC_EXPORT_INVALIDATE_MAPPING_PAGES
          fi
-         LC_EXT4_DISCARD_PREALLOCATIONS
-         LC_EXT_INSERT_EXTENT_WITH_5ARGS
 
          #2.6.18 + RHEL5 (fc6)
          LC_PG_FS_MISC
@@ -2308,7 +2157,6 @@ AC_DEFUN([LC_PROG_LINUX],
          LC_KERNEL_SENDFILE
          LC_HAVE_EXPORTFS_H
          LC_VM_OP_FAULT
-         LC_REGISTER_SHRINKER
          LC_PROCFS_USERS
          LC_EXPORTFS_DECODE_FH
   
@@ -2338,10 +2186,11 @@ AC_DEFUN([LC_PROG_LINUX],
 
          # 2.6.27.15-2 sles11
          LC_BI_HW_SEGMENTS
-         LC_HAVE_QUOTAIO_V1_H
+         LC_HAVE_QUOTAIO_H
          LC_VFS_SYMLINK_5ARGS
          LC_SB_ANY_QUOTA_ACTIVE
          LC_SB_HAS_QUOTA_ACTIVE
+         LC_EXPORT_ADD_TO_PAGE_CACHE_LRU
 
          # 2.6.31
          LC_BLK_QUEUE_LOG_BLK_SIZE
@@ -2352,14 +2201,13 @@ AC_DEFUN([LC_PROG_LINUX],
          LC_SB_BDI
          LC_BLK_QUEUE_MAX_SECTORS
          LC_BLK_QUEUE_MAX_SEGMENTS
-         LC_EXT4_SINGLEDATA_TRANS_BLOCKS_SB
-         LC_WALK_SPACE_HAS_DATA_SEM
 
          #
          if test x$enable_server = xyes ; then
-                if test x$enable_quota_module = xyes ; then
-                        LC_QUOTA64    # must after LC_HAVE_QUOTAIO_V1_H
-                fi
+             AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
+             LC_FUNC_DEV_SET_RDONLY
+             LC_STACK_SIZE
+             LC_QUOTA64
          fi
 ])
 
@@ -2475,6 +2323,26 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
+# 2.6.29 split file and anonymous page queues
+AC_DEFUN([LC_PAGEVEC_LRU_ADD_FILE],
+[AC_MSG_CHECKING([if kernel has .pagevec_lru_add_file])
+LB_LINUX_TRY_COMPILE([
+        #include <linux/mm.h>
+        #include <linux/pagevec.h>
+],[
+        struct pagevec lru_pagevec;
+
+        pagevec_init(&lru_pagevec, 0);
+        pagevec_lru_add_file(&lru_pagevec);
+],[
+        AC_MSG_RESULT([yes])
+        AC_DEFINE(HAVE_PAGEVEC_LRU_ADD_FILE, 1,
+                [kernel has .pagevec_lru_add_file])
+],[
+        AC_MSG_RESULT([no])
+])
+])
+
 #
 # --enable-mpitest
 #
@@ -2617,6 +2485,9 @@ if test $target_cpu == "i686" -o $target_cpu == "x86_64"; then
         CFLAGS="$CFLAGS -Werror"
 fi
 
+# maximum MDS thread count
+LC_MDS_MAX_THREADS
+
 # include/liblustre.h
 AC_CHECK_HEADERS([sys/user.h sys/vfs.h stdint.h blkid/blkid.h])
 
@@ -2712,6 +2583,7 @@ fi
          LC_D_OBTAIN_ALIAS
          LC_BLKDEV_PUT_2ARGS
          LC_DENTRY_OPEN_4ARGS
+         LC_PAGEVEC_LRU_ADD_FILE
 
 ])