X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=inline;f=lustre%2Fautoconf%2Flustre-core.m4;h=d9294bf82d0fa1832286a3ae9812abd05943dea4;hb=9806eb0efdba6d815808f53ada4423850f4493f7;hp=2ce6386bff6e5b994037fae8aa9dfbe689edbe8b;hpb=50c79ee142be4bad9e63d603dda0a8d80ac40444;p=fs%2Flustre-release.git diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 2ce6386..d9294bf 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -20,7 +20,7 @@ LUSTRE="$PWD/lustre" AC_SUBST(LUSTRE) # mount.lustre -rootsbindir='$(CROSS_PATH)/sbin' +rootsbindir='/sbin' AC_SUBST(rootsbindir) demodir='$(docdir)/demo' @@ -89,10 +89,10 @@ LB_CHECK_EXPORT([dev_set_rdonly], [block/ll_rw_block.c block/blk-core.c], # # LC_STACK_SIZE # -# Ensure stack size big than 8k in Lustre server (all kernels) +# Ensure the stack size is at least 8k in Lustre server (all kernels) # AC_DEFUN([LC_STACK_SIZE], [ -LB_CHECK_COMPILE([if stack size big than 8k], +LB_CHECK_COMPILE([if stack size is at least 8k], stack_size_8k, [ #include ], [ @@ -636,7 +636,7 @@ EXTRA_KCFLAGS="$tmp_flags" # # LC_DCACHE_LOCK # -# 2.6.38 dcache_lock removed. rcu-walk commited. +# 2.6.38 dcache_lock removed. rcu-walk committed. # AC_DEFUN([LC_DCACHE_LOCK], [ LB_CHECK_COMPILE([if 'dcache_lock' is exist], @@ -1768,6 +1768,25 @@ EXTRA_KCFLAGS="$tmp_flags" ]) # LC_NFS_FILLDIR_USE_CTX # +# LC_PERCPU_COUNTER_INIT +# +# 3.18 For kernels 3.18 and after percpu_counter_init starts +# to pass a GFP_* memory allocation flag for internal +# memory allocation purposes. +# +AC_DEFUN([LC_PERCPU_COUNTER_INIT], [ +LB_CHECK_COMPILE([if percpu_counter_init uses GFP_* flag as argument], +percpu_counter_init, [ + #include +],[ + percpu_counter_init(NULL, 0, GFP_KERNEL); +],[ + AC_DEFINE(HAVE_PERCPU_COUNTER_INIT_GFP_FLAG, 1, + [percpu_counter_init uses GFP_* flag]) +]) +]) # LC_PERCPU_COUNTER_INIT + +# # LC_KIOCB_HAS_NBYTES # # 3.19 kernel removed ki_nbytes from struct kiocb @@ -1786,9 +1805,48 @@ ki_nbytes, [ ]) # LC_KIOCB_HAS_NBYTES # +# LC_BACKING_DEV_INFO_REMOVAL +# +# 3.20 kernel removed backing_dev_info from address_space +# +AC_DEFUN([LC_BACKING_DEV_INFO_REMOVAL], [ +LB_CHECK_COMPILE([if struct address_space has backing_dev_info], +backing_dev_info, [ + #include +],[ + struct address_space mapping; + + mapping.backing_dev_info = NULL; +],[ + AC_DEFINE(HAVE_BACKING_DEV_INFO, 1, [backing_dev_info exist]) +]) +]) # LC_BACKING_DEV_INFO_REMOVAL + +# +# LC_HAVE_BDI_CAP_MAP_COPY +# +# 3.20 removed mmap handling for backing devices since +# it breaks on non-MMU systems. See kernel commit +# b4caecd48005fbed3949dde6c1cb233142fd69e9 +# +AC_DEFUN([LC_HAVE_BDI_CAP_MAP_COPY], [ +LB_CHECK_COMPILE([if have 'BDI_CAP_MAP_COPY'], +bdi_cap_map_copy, [ + #include +],[ + struct backing_dev_info info; + + info.capabilities = BDI_CAP_MAP_COPY; +],[ + AC_DEFINE(HAVE_BDI_CAP_MAP_COPY, 1, + [BDI_CAP_MAP_COPY exist]) +]) +]) # LC_HAVE_BDI_CAP_MAP_COPY + +# # LC_CANCEL_DIRTY_PAGE # -# 4.0.0 kernel removed cancle_dirty_page +# 4.0.0 kernel removed cancel_dirty_page # AC_DEFUN([LC_CANCEL_DIRTY_PAGE], [ LB_CHECK_COMPILE([if cancel_dirty_page still exist], @@ -1823,6 +1881,154 @@ iov_iter_rw, [ ]) # LC_IOV_ITER_RW # +# LC_HAVE_SYNC_READ_WRITE +# +# 4.1 new_sync_[read|write] no longer exported +# +AC_DEFUN([LC_HAVE_SYNC_READ_WRITE], [ +LB_CHECK_EXPORT([new_sync_read], [fs/read_write.c], + [AC_DEFINE(HAVE_SYNC_READ_WRITE, 1, + [new_sync_[read|write] is exported by the kernel])]) +]) # LC_HAVE_SYNC_READ_WRITE + +# +# LC_NEW_CANCEL_DIRTY_PAGE +# +# 4.2 kernel has new cancel_dirty_page +# +AC_DEFUN([LC_NEW_CANCEL_DIRTY_PAGE], [ +LB_CHECK_COMPILE([if cancel_dirty_page with one argument exist], +new_cancel_dirty_page, [ + #include +],[ + cancel_dirty_page(NULL); +],[ + AC_DEFINE(HAVE_NEW_CANCEL_DIRTY_PAGE, 1, + [cancel_dirty_page with one arguement is available]) +]) +]) # LC_NEW_CANCEL_DIRTY_PAGE + +# +# LC_SYMLINK_OPS_USE_NAMEIDATA +# +# For the 4.2+ kernels the file system internal symlink api no +# longer uses struct nameidata as a argument +# +AC_DEFUN([LC_SYMLINK_OPS_USE_NAMEIDATA], [ +LB_CHECK_COMPILE([if symlink inode operations have struct nameidata argument], +symlink_use_nameidata, [ + #include + #include +],[ + struct nameidata *nd = NULL; + + ((struct inode_operations *)0)->follow_link(NULL, nd); + ((struct inode_operations *)0)->put_link(NULL, nd, NULL); +],[ + AC_DEFINE(HAVE_SYMLINK_OPS_USE_NAMEIDATA, 1, + [symlink inode operations need struct nameidata argument]) +]) +]) # LC_SYMLINK_OPS_USE_NAMEIDATA + +# +# LC_BIO_ENDIO_USES_ONE_ARG +# +# 4.2 kernel bio_endio now only takes one argument +# +AC_DEFUN([LC_BIO_ENDIO_USES_ONE_ARG], [ +LB_CHECK_COMPILE([if 'bio_endio' with one argument exist], +bio_endio, [ + #include +],[ + bio_endio(NULL); +],[ + AC_DEFINE(HAVE_BIO_ENDIO_USES_ONE_ARG, 1, + [bio_endio takes only one argument]) +]) +]) # 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 + ],[ + 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_HAVE_CACHE_HEAD_HLIST +# +# 4.3 kernel swiched to hlist for cache_head +# +AC_DEFUN([LC_HAVE_CACHE_HEAD_HLIST], [ +LB_CHECK_COMPILE([if 'struct cache_head' has 'cache_list' field], +cache_head_has_hlist, [ + #include +],[ + do {} while(sizeof(((struct cache_head *)0)->cache_list)); +],[ + AC_DEFINE(HAVE_CACHE_HEAD_HLIST, 1, + [cache_head has hlist cache_list]) +]) +]) # 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 +],[ + 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_HAVE_QC_MAKE_REQUEST_FN +# +# 4.4 request_queue.make_request_fn defined as function returns with blk_qc_t +# see kernel commit dece16353ef47d8d33f5302bc158072a9d65e26f +# +AC_DEFUN([LC_HAVE_QC_MAKE_REQUEST_FN], [ +LB_CHECK_COMPILE([if 'request_queue.make_request_fn' returns blk_qc_t], +make_request_fn_blk_qc_t, [ + #include +],[ + blk_qc_t ret; + make_request_fn *mrf; + ret = mrf(NULL, NULL); +],[ + AC_DEFINE(HAVE_QC_MAKE_REQUEST_FN, 1, + [request_queue.make_request_fn returns blk_qc_t]) +]) +]) # LC_HAVE_QC_MAKE_REQUEST_FN + +# # LC_PROG_LINUX # # Lustre linux kernel checks @@ -1887,6 +2093,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 @@ -1961,16 +2168,34 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_KEY_MATCH_DATA # 3.18 + LC_PERCPU_COUNTER_INIT LC_NFS_FILLDIR_USE_CTX # 3.19 LC_KIOCB_HAS_NBYTES + # 3.20 + LC_BACKING_DEV_INFO_REMOVAL + LC_HAVE_BDI_CAP_MAP_COPY + # 4.0.0 LC_CANCEL_DIRTY_PAGE # 4.1.0 LC_IOV_ITER_RW + LC_HAVE_SYNC_READ_WRITE + + # 4.2 + LC_NEW_CANCEL_DIRTY_PAGE + LC_BIO_ENDIO_USES_ONE_ARG + LC_SYMLINK_OPS_USE_NAMEIDATA + + # 4.3 + LC_HAVE_CACHE_HEAD_HLIST + + # 4.4 + LC_HAVE_LOCKS_LOCK_FILE_WAIT + LC_HAVE_QC_MAKE_REQUEST_FN # AS_IF([test "x$enable_server" != xno], [ @@ -2284,12 +2509,14 @@ lustre/include/Makefile lustre/include/lustre_ver.h lustre/include/lustre/Makefile lustre/kernel_patches/targets/3.10-rhel7.target +lustre/kernel_patches/targets/2.6-rhel6.7.target lustre/kernel_patches/targets/2.6-rhel6.6.target lustre/kernel_patches/targets/2.6-rhel6.target lustre/kernel_patches/targets/2.6-rhel5.target lustre/kernel_patches/targets/2.6-sles11.target lustre/kernel_patches/targets/3.0-sles11.target lustre/kernel_patches/targets/3.0-sles11sp3.target +lustre/kernel_patches/targets/3.0-sles11sp4.target lustre/kernel_patches/targets/3.12-sles12.target lustre/kernel_patches/targets/2.6-fc11.target lustre/kernel_patches/targets/2.6-fc12.target