Whamcloud - gitweb
LU-15933 libcfs: fix configure check for iov_iter member 01/47601/4
authorBobi Jam <bobijam@whamcloud.com>
Sat, 11 Jun 2022 17:18:18 +0000 (01:18 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 27 Jun 2022 04:38:06 +0000 (04:38 +0000)
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 <bobijam@whamcloud.com>
Change-Id: I8da26e1f6c6242a3260b458770ec34a65aecaf7d
Reviewed-on: https://review.whamcloud.com/47601
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
libcfs/autoconf/lustre-libcfs.m4

index 86107f1..b7e6521 100644 (file)
@@ -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 <linux/uio.h>
@@ -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 <linux/uio.h>
+  ],[
+       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 <linux/uio.h>
 ],[
-       struct iov_iter iter = { .type = ITER_KVEC };
+       struct iov_iter iter = { };
        enum iter_type type = iov_iter_type(&iter);
        (void)type;
 ],[