X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=ce532722043b5ef8a55be546cad5ee25e255d8bd;hb=63ac7eecf5ad61e311c3c963a2cb12b1045f72e2;hp=6ef83ff102ce12da489f15617f6bfd6d6844b51d;hpb=a9998927281647f9d9b8bfa50c80b7e15cf05eda;p=fs%2Flustre-release.git diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 6ef83ff..ce53272 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -508,8 +508,8 @@ LB_CHECK_COMPILE([if '__add_wait_queue_exclusive' exists], __add_wait_queue_exclusive, [ #include ],[ - wait_queue_head_t queue; - wait_queue_t wait; + wait_queue_head_t queue = { }; + wait_queue_t wait = { }; __add_wait_queue_exclusive(&queue, &wait); ],[ @@ -530,7 +530,10 @@ fs_struct_rwlock, [ #include #include ],[ - ((struct fs_struct *)0)->lock = (rwlock_t){ 0 }; + struct fs_struct fss = { }; + rwlock_t rwl = { }; + + fss.lock = rwl; ],[ AC_DEFINE(HAVE_FS_STRUCT_RWLOCK, 1, [fs_struct.lock use rwlock]) ]) @@ -759,8 +762,10 @@ LB_CHECK_COMPILE([if 'file_system_type' has 'mount' field], file_system_type_mount, [ #include ],[ - struct file_system_type fst; - void *i = (void *) fst.mount; + struct file_system_type fst = { }; + void *mount; + + mount = (void *)fst.mount; ],[ AC_DEFINE(HAVE_FSTYPE_MOUNT, 1, [struct file_system_type has mount field]) @@ -809,7 +814,7 @@ LB_CHECK_COMPILE([if 'dirty_inode' super_operation takes flag], dirty_inode_super_operation_flag, [ #include ],[ - struct inode *inode; + struct inode *inode = NULL; inode->i_sb->s_op->dirty_inode(NULL, 0); ],[ AC_DEFINE(HAVE_DIRTY_INODE_HAS_FLAG, 1, @@ -1021,7 +1026,7 @@ address_space_ops_migratepage_4args, [ #include #endif ],[ - struct address_space_operations aops; + struct address_space_operations aops = { }; aops.migratepage(NULL, NULL, NULL, MIGRATE_ASYNC); ],[ AC_DEFINE(HAVE_MIGRATEPAGE_4ARGS, 1, @@ -1394,9 +1399,10 @@ LB_CHECK_COMPILE([if 'bio_end_sector' is defined], bio_end_sector, [ #include ],[ - struct bio bio; + struct bio bio = { }; + unsigned long long end; - bio_end_sector(&bio); + end = bio_end_sector(&bio); ],[ AC_DEFINE(HAVE_BIO_END_SECTOR, 1, [bio_end_sector is defined]) @@ -1411,7 +1417,7 @@ LB_CHECK_COMPILE([if 'is_sxid' is defined], is_sxid, [ #include ],[ - struct inode inode; + struct inode inode = { }; is_sxid(inode.i_mode); ],[ @@ -1456,9 +1462,10 @@ proc_remove, [ AC_DEFUN([LC_HAVE_PROJECT_QUOTA], [ LB_CHECK_COMPILE([if get_projid exists], get_projid, [ + struct inode; #include ],[ - struct dquot_operations ops; + struct dquot_operations ops = { }; ops.get_projid(NULL, NULL); ],[ @@ -1517,6 +1524,7 @@ dir_context, [ #error "back to use readdir in kabi_extand mode" #else struct dir_context ctx; + ctx.pos = 0; #endif ],[ @@ -1548,12 +1556,14 @@ d_compare_5args, [ # 3.11 need to access d_count to get dentry reference count # AC_DEFUN([LC_HAVE_DCOUNT], [ -LB_CHECK_COMPILE([if 'd_count' exist], +LB_CHECK_COMPILE([if 'd_count' exists], d_count, [ #include ],[ - struct dentry de; - d_count(&de); + struct dentry de = { }; + int count; + + count = d_count(&de); ],[ AC_DEFINE(HAVE_D_COUNT, 1, [d_count exist]) @@ -1731,6 +1741,7 @@ have_bvec_iter, [ #include ],[ struct bvec_iter iter; + iter.bi_bvec_done = 0; ], [ AC_DEFINE(HAVE_BVEC_ITER, 1, @@ -1768,7 +1779,7 @@ have_bi_cnt, [ #include #include ],[ - struct bio bio; + struct bio bio = { }; int cnt; cnt = atomic_read(&bio.bi_cnt); ], [ @@ -1788,7 +1799,8 @@ have_bi_rw, [ #include ],[ struct bio bio; - bio.bi_rw; + + bio.bi_rw = 0; ], [ AC_DEFINE(HAVE_BI_RW, 1, [struct bio has bi_rw]) @@ -1896,7 +1908,7 @@ LB_CHECK_COMPILE([if direct IO uses iov_iter], direct_io_iter, [ #include ],[ - struct address_space_operations ops; + struct address_space_operations ops = { }; struct iov_iter *iter = NULL; loff_t offset = 0; @@ -1975,6 +1987,23 @@ file_function_iter, [ ]) # LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER # +# LC_HAVE_INTERVAL_BLK_INTEGRITY +# +# 3.17 replace sector_size with interval in struct blk_integrity +# +AC_DEFUN([LC_HAVE_INTERVAL_BLK_INTEGRITY], [ +LB_CHECK_COMPILE([if 'blk_integrity.interval' exist], +interval_blk_integrity, [ + #include +],[ + ((struct blk_integrity *)0)->interval = 0; +],[ + AC_DEFINE(HAVE_INTERVAL_BLK_INTEGRITY, 1, + [blk_integrity.interval exist]) +]) +]) # LC_HAVE_INTERVAL_BLK_INTEGRITY + +# # LC_KEY_MATCH_DATA # # 3.17 replaces key_type::match with match_preparse @@ -1986,6 +2015,8 @@ key_match, [ #include ],[ struct key_match_data data; + + data.raw_data = NULL; ],[ AC_DEFINE(HAVE_KEY_MATCH_DATA, 1, [struct key_match_data exist]) @@ -2051,7 +2082,7 @@ LB_CHECK_COMPILE([if struct kiocb has ki_nbytes field], ki_nbytes, [ #include ],[ - struct kiocb iocb; + struct kiocb iocb = { }; iocb.ki_nbytes = 0; ],[ @@ -2227,6 +2258,25 @@ bio_endio, [ ]) # LC_BIO_ENDIO_USES_ONE_ARG # +# LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY +# +# 4.3 replace interval with interval_exp in 'struct blk_integrity' +# 'struct blk_integrity_profile' is also added in this version, +# thus use this to determine whether 'struct blk_integrity' has profile +# +AC_DEFUN([LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY], [ +LB_CHECK_COMPILE([if 'blk_integrity.interval_exp' exist], +blk_integrity_interval_exp, [ + #include +],[ + ((struct blk_integrity *)0)->interval_exp = 0; +],[ + AC_DEFINE(HAVE_INTERVAL_EXP_BLK_INTEGRITY, 1, + [blk_integrity.interval_exp exist]) +]) +]) # LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY + +# # LC_HAVE_LOOP_CTL_GET_FREE # # 4.x kernel have moved userspace APIs to @@ -2320,7 +2370,9 @@ LB_CHECK_COMPILE([if 'struct key' has 'payload.data' as an array], key_payload_data_array, [ #include ],[ - ((struct key *)0)->payload.data[0] = NULL; + struct key key = { }; + + key.payload.data[0] = NULL; ],[ AC_DEFINE(HAVE_KEY_PAYLOAD_DATA_ARRAY, 1, [payload.data is an array]) ]) @@ -2451,10 +2503,11 @@ LB_CHECK_COMPILE([if '->direct_IO()' taken 2 arguments], direct_io_2args, [ #include ],[ - struct address_space_operations ops; + struct address_space_operations ops = { }; struct iov_iter *iter = NULL; struct kiocb *iocb = NULL; int rc; + rc = ops.direct_IO(iocb, iter); ],[ AC_DEFINE(HAVE_DIRECTIO_2ARGS, 1, @@ -2475,6 +2528,7 @@ generic_write_sync_2args, [ ],[ struct kiocb *iocb = NULL; ssize_t rc; + rc = generic_write_sync(iocb, 0); ],[ AC_DEFINE(HAVE_GENERIC_WRITE_SYNC_2ARGS, 1, @@ -2483,6 +2537,29 @@ generic_write_sync_2args, [ ]) # LC_GENERIC_WRITE_SYNC_2ARGS # +# LC_FOPS_ITERATE_SHARED +# +# 4.7 commit ae05327a00fd47c34dfe25294b359a3f3fef96e8 +# ext4: switch to ->iterate_shared() +# this replaces ext4_dir_operations iterate with iterate_shared. +# dir_relaxed_shared() was also added in this commit, so we can +# use that function to verify that the ext4_dir_operations is using +# iterate_shared. +# +AC_DEFUN([LC_FOPS_ITERATE_SHARED], [ +LB_CHECK_COMPILE([if ext4_dir_operations uses iterate_shared], +iterate_shared, [ + #include +],[ + ((struct file_operations *)0)->iterate_shared(NULL, NULL); + dir_relax_shared(NULL); +],[ + AC_DEFINE(HAVE_ITERATE_SHARED, 1, + ['iterate_shared' is available]) +]) +]) # LC_FOPS_ITERATE_SHARED + +# # LC_HAVE_POSIX_ACL_VALID_USER_NS # # 4.8 posix_acl_valid takes struct user_namespace @@ -2752,6 +2829,75 @@ super_setup_bdi_name, [ ]) # LC_SUPER_SETUP_BDI_NAME # +# LC_BI_STATUS +# +# 4.12 replace bi_error to bi_status +# +AC_DEFUN([LC_BI_STATUS], [ +LB_CHECK_COMPILE([if 'bi_status' exist], +bi_status, [ + #include +],[ + ((struct bio *)0)->bi_status = 0; +],[ + AC_DEFINE(HAVE_BI_STATUS, 1, + ['bi_status' is available]) +]) +]) # LC_BI_STATUS + +# +# LC_BIO_INTEGRITY_ENABLED +# +# 4.13 removed bio_integrity_enabled +# +AC_DEFUN([LC_BIO_INTEGRITY_ENABLED], [ +LB_CHECK_COMPILE([if 'bio_integrity_enabled' exist], +bio_integrity_enabled, [ + #include +],[ + bio_integrity_enabled(NULL); +],[ + AC_DEFINE(HAVE_BIO_INTEGRITY_ENABLED, 1, + ['bio_integrity_enabled' is available]) +]) +]) # LC_BIO_INTEGRITY_ENABLED + +# +# LC_PAGEVEC_INIT_ONE_PARAM +# +# 4.14 pagevec_init takes one parameter +# +AC_DEFUN([LC_PAGEVEC_INIT_ONE_PARAM], [ +LB_CHECK_COMPILE([if 'pagevec_init' takes one parameter], +pagevec_init, [ + #include +],[ + pagevec_init(NULL); +],[ + AC_DEFINE(HAVE_PAGEVEC_INIT_ONE_PARAM, 1, + ['pagevec_init' takes one parameter]) +]) +]) # LC_PAGEVEC_INIT_ONE_PARAM + +# +# LC_BI_BDEV +# +# 4.14 replaced bi_bdev to bi_disk +# +AC_DEFUN([LC_BI_BDEV], [ +LB_CHECK_COMPILE([if 'bi_bdev' exist], +bi_bdev, [ + #include +],[ + ((struct bio *)0)->bi_bdev = NULL; +],[ + AC_DEFINE(HAVE_BI_BDEV, 1, + ['bi_bdev' is available]) +]) +]) # LC_BI_BDEV + + +# # LC_PROG_LINUX # # Lustre linux kernel checks @@ -2900,6 +3046,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER # 3.17 + LC_HAVE_INTERVAL_BLK_INTEGRITY LC_KEY_MATCH_DATA # 3.18 @@ -2927,6 +3074,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_SYMLINK_OPS_USE_NAMEIDATA # 4.3 + LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY LC_HAVE_CACHE_HEAD_HLIST LC_HAVE_XATTR_HANDLER_SIMPLIFIED @@ -2953,6 +3101,7 @@ AC_DEFUN([LC_PROG_LINUX], [ # 4.7 LC_DIRECTIO_2ARGS LC_GENERIC_WRITE_SYNC_2ARGS + LC_FOPS_ITERATE_SHARED # 4.8 LC_HAVE_POSIX_ACL_VALID_USER_NS @@ -2977,6 +3126,14 @@ AC_DEFUN([LC_PROG_LINUX], [ # 4.12 LC_CURRENT_TIME LC_SUPER_SETUP_BDI_NAME + LC_BI_STATUS + + # 4.13 + LC_BIO_INTEGRITY_ENABLED + + # 4.14 + LC_PAGEVEC_INIT_ONE_PARAM + LC_BI_BDEV # AS_IF([test "x$enable_server" != xno], [ @@ -3334,7 +3491,6 @@ lustre/fld/Makefile lustre/fld/autoMakefile lustre/obdclass/Makefile lustre/obdclass/autoMakefile -lustre/obdclass/linux/Makefile lustre/obdecho/Makefile lustre/obdecho/autoMakefile lustre/ofd/Makefile