From ae53ef4a6ab0491c01b723322f45c931e22f6140 Mon Sep 17 00:00:00 2001 From: Bobi Jam Date: Sun, 12 Jun 2022 01:18:18 +0800 Subject: [PATCH] LU-15933 libcfs: fix configure check for iov_iter member Kernel commit v5.13-rc1-12-g8cd54c1c8480 changed iov_iter member ->type to ->iter_type, add check at configure to cover this change. Signed-off-by: Bobi Jam Change-Id: I8da26e1f6c6242a3260b458770ec34a65aecaf7d Reviewed-on: https://review.whamcloud.com/47601 Tested-by: jenkins Reviewed-by: Neil Brown Reviewed-by: Jian Yu Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: Oleg Drokin --- libcfs/autoconf/lustre-libcfs.m4 | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index 86107f1..b7e6521 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -242,10 +242,13 @@ EXTRA_KCFLAGS="$tmp_flags" # # kernel 3.15-rc4 commit 71d8e532b1549a478e6a6a8a44f309d050294d00 # start adding the tag to iov_iter +# kernel 5.13 commit 8cd54c1c848031a87820e58d772166ffdf8c08c0 change +# ->type to ->iter_type # AC_DEFUN([LIBCFS_IOV_ITER_HAS_TYPE], [ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" +iter_type_member=no LB_CHECK_COMPILE([if iov_iter has member type], iov_iter_has_type_member, [ #include @@ -255,7 +258,21 @@ iov_iter_has_type_member, [ ],[ AC_DEFINE(HAVE_IOV_ITER_HAS_TYPE_MEMBER, 1, [if iov_iter has member type]) + iter_type_member=yes ]) +if test $iter_type_member = no; then + LB_CHECK_COMPILE([if iov_iter has member iter_type], + iov_iter_has_iter_type_member, [ + #include + ],[ + struct iov_iter iter = { .iter_type = ITER_KVEC }; + (void)iter; + ],[ + AC_DEFINE(HAVE_IOV_ITER_HAS_TYPE_MEMBER, 1, + [if iov_iter has member iter_type]) + iter_type_member=yes + ]) +fi EXTRA_KCFLAGS="$tmp_flags" ]) # LIBCFS_IOV_ITER_HAS_TYPE @@ -1461,7 +1478,7 @@ LB_CHECK_COMPILE([if iov_iter_type exists], macro_iov_iter_type_exists, [ #include ],[ - struct iov_iter iter = { .type = ITER_KVEC }; + struct iov_iter iter = { }; enum iter_type type = iov_iter_type(&iter); (void)type; ],[ -- 1.8.3.1