* [PATCH] src: fix detached_mounts_propagation compile errors
@ 2023-04-19 3:29 Gao Xiang
2023-04-19 8:45 ` Christian Brauner
2023-04-20 2:11 ` [PATCH v2] " Gao Xiang
0 siblings, 2 replies; 14+ messages in thread
From: Gao Xiang @ 2023-04-19 3:29 UTC (permalink / raw)
To: fstests; +Cc: Gao Xiang, Christian Brauner
Newer glibc such as glibc 2.36 also defines 'struct mount_attr'
in addition to <linux/mount.h>. It will report as below when
compiling with old linux kernel headers (without idmapped mounts,
such as kernel-headers 5.10.134) but with newer glibc (here checked
with glibc 2.36.6):
[CC] detached_mounts_propagation
In file included from detached_mounts_propagation.c:29:
vfs/missing.h:115:8: error: redefinition of 'struct mount_attr'
115 | struct mount_attr {
| ^~~~~~~~~~
In file included from detached_mounts_propagation.c:23:
/usr/include/sys/mount.h:210:8: note: originally defined here
210 | struct mount_attr
| ^~~~~~~~~~
gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1
gmake[2]: *** [include/buildrules:31: src] Error 2
make[1]: *** [Makefile:51: default] Error 2
make: *** [Makefile:49: default] Error 2
Cc: Christian Brauner <brauner@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
Not quite look into that, but at a quick glance of tester reports
it seems the cases.
configure.ac | 5 ++++-
src/detached_mounts_propagation.c | 1 -
src/vfs/missing.h | 1 +
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4687d8a3..517b4c18 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,7 +74,10 @@ AC_HAVE_FIEXCHANGE
AC_CHECK_FUNCS([renameat2])
AC_CHECK_FUNCS([reallocarray])
-AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]])
+AC_CHECK_TYPES([struct mount_attr], [], [], [[
+#include <linux/mount.h>
+#include <sys/mount.h>
+]])
AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[
#include <stddef.h>
#include <linux/btrfs.h>
diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c
index 17db2c02..4041c75f 100644
--- a/src/detached_mounts_propagation.c
+++ b/src/detached_mounts_propagation.c
@@ -20,7 +20,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <sys/types.h>
diff --git a/src/vfs/missing.h b/src/vfs/missing.h
index 059e742d..04ab33d1 100644
--- a/src/vfs/missing.h
+++ b/src/vfs/missing.h
@@ -18,6 +18,7 @@
#include <sys/types.h>
#include <syscall.h>
#include <unistd.h>
+#include <sys/mount.h>
#ifndef __NR_mount_setattr
#if defined __alpha__
--
2.24.4
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH] src: fix detached_mounts_propagation compile errors 2023-04-19 3:29 [PATCH] src: fix detached_mounts_propagation compile errors Gao Xiang @ 2023-04-19 8:45 ` Christian Brauner 2023-04-19 9:04 ` Gao Xiang 2023-04-19 9:08 ` Yang Xu (Fujitsu) 2023-04-20 2:11 ` [PATCH v2] " Gao Xiang 1 sibling, 2 replies; 14+ messages in thread From: Christian Brauner @ 2023-04-19 8:45 UTC (permalink / raw) To: Gao Xiang; +Cc: fstests On Wed, Apr 19, 2023 at 11:29:55AM +0800, Gao Xiang wrote: > Newer glibc such as glibc 2.36 also defines 'struct mount_attr' > in addition to <linux/mount.h>. It will report as below when > compiling with old linux kernel headers (without idmapped mounts, > such as kernel-headers 5.10.134) but with newer glibc (here checked > with glibc 2.36.6): > > [CC] detached_mounts_propagation > In file included from detached_mounts_propagation.c:29: > vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' > 115 | struct mount_attr { > | ^~~~~~~~~~ > In file included from detached_mounts_propagation.c:23: > /usr/include/sys/mount.h:210:8: note: originally defined here > 210 | struct mount_attr > | ^~~~~~~~~~ > gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 > gmake[2]: *** [include/buildrules:31: src] Error 2 > make[1]: *** [Makefile:51: default] Error 2 > make: *** [Makefile:49: default] Error 2 > > Cc: Christian Brauner <brauner@kernel.org> > Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> > --- This header mount.h mess is a neverending nightmare... > > Not quite look into that, but at a quick glance of tester reports > it seems the cases. > > configure.ac | 5 ++++- > src/detached_mounts_propagation.c | 1 - > src/vfs/missing.h | 1 + > 3 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 4687d8a3..517b4c18 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -74,7 +74,10 @@ AC_HAVE_FIEXCHANGE > > AC_CHECK_FUNCS([renameat2]) > AC_CHECK_FUNCS([reallocarray]) > -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) > +AC_CHECK_TYPES([struct mount_attr], [], [], [[ > +#include <linux/mount.h> > +#include <sys/mount.h> I think we should only rely on sys/mount.h. linux/mount.h and sys/mount.h are incompatible because linux/mount.h might have a #define where sys/mount.h has an enum. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] src: fix detached_mounts_propagation compile errors 2023-04-19 8:45 ` Christian Brauner @ 2023-04-19 9:04 ` Gao Xiang 2023-04-19 9:08 ` Yang Xu (Fujitsu) 1 sibling, 0 replies; 14+ messages in thread From: Gao Xiang @ 2023-04-19 9:04 UTC (permalink / raw) To: Christian Brauner; +Cc: fstests On 2023/4/19 16:45, Christian Brauner wrote: > On Wed, Apr 19, 2023 at 11:29:55AM +0800, Gao Xiang wrote: >> Newer glibc such as glibc 2.36 also defines 'struct mount_attr' >> in addition to <linux/mount.h>. It will report as below when >> compiling with old linux kernel headers (without idmapped mounts, >> such as kernel-headers 5.10.134) but with newer glibc (here checked >> with glibc 2.36.6): >> >> [CC] detached_mounts_propagation >> In file included from detached_mounts_propagation.c:29: >> vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' >> 115 | struct mount_attr { >> | ^~~~~~~~~~ >> In file included from detached_mounts_propagation.c:23: >> /usr/include/sys/mount.h:210:8: note: originally defined here >> 210 | struct mount_attr >> | ^~~~~~~~~~ >> gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 >> gmake[2]: *** [include/buildrules:31: src] Error 2 >> make[1]: *** [Makefile:51: default] Error 2 >> make: *** [Makefile:49: default] Error 2 >> >> Cc: Christian Brauner <brauner@kernel.org> >> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> >> --- > > This header mount.h mess is a neverending nightmare... > >> >> Not quite look into that, but at a quick glance of tester reports >> it seems the cases. >> >> configure.ac | 5 ++++- >> src/detached_mounts_propagation.c | 1 - >> src/vfs/missing.h | 1 + >> 3 files changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 4687d8a3..517b4c18 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -74,7 +74,10 @@ AC_HAVE_FIEXCHANGE >> >> AC_CHECK_FUNCS([renameat2]) >> AC_CHECK_FUNCS([reallocarray]) >> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) >> +AC_CHECK_TYPES([struct mount_attr], [], [], [[ >> +#include <linux/mount.h> >> +#include <sys/mount.h> > > I think we should only rely on sys/mount.h. linux/mount.h and > sys/mount.h are incompatible because linux/mount.h might have a #define > where sys/mount.h has an enum. Ok, got it. Let me play with it later. Thanks, Gao Xiang ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] src: fix detached_mounts_propagation compile errors 2023-04-19 8:45 ` Christian Brauner 2023-04-19 9:04 ` Gao Xiang @ 2023-04-19 9:08 ` Yang Xu (Fujitsu) 1 sibling, 0 replies; 14+ messages in thread From: Yang Xu (Fujitsu) @ 2023-04-19 9:08 UTC (permalink / raw) To: Christian Brauner, Gao Xiang; +Cc: fstests@vger.kernel.org on 2023/04/19 16:45, Christian Brauner wrote: > On Wed, Apr 19, 2023 at 11:29:55AM +0800, Gao Xiang wrote: >> Newer glibc such as glibc 2.36 also defines 'struct mount_attr' >> in addition to <linux/mount.h>. It will report as below when >> compiling with old linux kernel headers (without idmapped mounts, >> such as kernel-headers 5.10.134) but with newer glibc (here checked >> with glibc 2.36.6): >> >> [CC] detached_mounts_propagation >> In file included from detached_mounts_propagation.c:29: >> vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' >> 115 | struct mount_attr { >> | ^~~~~~~~~~ >> In file included from detached_mounts_propagation.c:23: >> /usr/include/sys/mount.h:210:8: note: originally defined here >> 210 | struct mount_attr >> | ^~~~~~~~~~ >> gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 >> gmake[2]: *** [include/buildrules:31: src] Error 2 >> make[1]: *** [Makefile:51: default] Error 2 >> make: *** [Makefile:49: default] Error 2 >> >> Cc: Christian Brauner <brauner@kernel.org> >> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> >> --- > > This header mount.h mess is a neverending nightmare... > >> >> Not quite look into that, but at a quick glance of tester reports >> it seems the cases. >> >> configure.ac | 5 ++++- >> src/detached_mounts_propagation.c | 1 - >> src/vfs/missing.h | 1 + >> 3 files changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 4687d8a3..517b4c18 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -74,7 +74,10 @@ AC_HAVE_FIEXCHANGE >> >> AC_CHECK_FUNCS([renameat2]) >> AC_CHECK_FUNCS([reallocarray]) >> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) >> +AC_CHECK_TYPES([struct mount_attr], [], [], [[ >> +#include <linux/mount.h> >> +#include <sys/mount.h> > > I think we should only rely on sys/mount.h. linux/mount.h and > sys/mount.h are incompatible because linux/mount.h might have a #define > where sys/mount.h has an enum. In fact, ltp also has this problem, but ltp has fixed this We check whether mount_setattr() supported, if support, then use <sys/mount.h>,otherwise, use <linux/mount.h> AC_CHECK_TYPES([struct mount_attr],,,[ #ifdef HAVE_MOUNT_SETATTR # include <sys/mount.h> #elif HAVE_LINUX_MOUNT_H # include <linux/mount.h> #endif see https://github.com/linux-test-project/ltp/commit/30353a1eb3ee8940f38d6a0e8f5f39352fd8a179. Best Regards Yang Xu ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-19 3:29 [PATCH] src: fix detached_mounts_propagation compile errors Gao Xiang 2023-04-19 8:45 ` Christian Brauner @ 2023-04-20 2:11 ` Gao Xiang 2023-04-20 8:42 ` Christian Brauner 2023-04-22 13:54 ` Zorro Lang 1 sibling, 2 replies; 14+ messages in thread From: Gao Xiang @ 2023-04-20 2:11 UTC (permalink / raw) To: fstests; +Cc: Gao Xiang, Christian Brauner, Yang Xu (Fujitsu) Newer glibc such as glibc 2.36 also defines 'struct mount_attr' in addition to <linux/mount.h>. It will report as below when compiling with old linux kernel headers (without idmapped mounts, such as kernel-headers 5.10.134) but with newer glibc (here checked with glibc 2.36.6): [CC] detached_mounts_propagation In file included from detached_mounts_propagation.c:29: vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' 115 | struct mount_attr { | ^~~~~~~~~~ In file included from detached_mounts_propagation.c:23: /usr/include/sys/mount.h:210:8: note: originally defined here 210 | struct mount_attr | ^~~~~~~~~~ gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 gmake[2]: *** [include/buildrules:31: src] Error 2 make[1]: *** [Makefile:51: default] Error 2 make: *** [Makefile:49: default] Error 2 Let's get rid of <linux/mount.h> as Christian suggested to avoid potential incompatibility between these two headers. Cc: Christian Brauner <brauner@kernel.org> Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> --- configure.ac | 2 +- src/detached_mounts_propagation.c | 1 - src/vfs/missing.h | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 4687d8a3..bb29f37e 100644 --- a/configure.ac +++ b/configure.ac @@ -74,7 +74,7 @@ AC_HAVE_FIEXCHANGE AC_CHECK_FUNCS([renameat2]) AC_CHECK_FUNCS([reallocarray]) -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) +AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <sys/mount.h>]]) AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ #include <stddef.h> #include <linux/btrfs.h> diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c index 17db2c02..4041c75f 100644 --- a/src/detached_mounts_propagation.c +++ b/src/detached_mounts_propagation.c @@ -20,7 +20,6 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <sys/mount.h> #include <sys/stat.h> #include <sys/syscall.h> #include <sys/types.h> diff --git a/src/vfs/missing.h b/src/vfs/missing.h index 059e742d..04ab33d1 100644 --- a/src/vfs/missing.h +++ b/src/vfs/missing.h @@ -18,6 +18,7 @@ #include <sys/types.h> #include <syscall.h> #include <unistd.h> +#include <sys/mount.h> #ifndef __NR_mount_setattr #if defined __alpha__ -- 2.24.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-20 2:11 ` [PATCH v2] " Gao Xiang @ 2023-04-20 8:42 ` Christian Brauner 2023-04-22 13:54 ` Zorro Lang 1 sibling, 0 replies; 14+ messages in thread From: Christian Brauner @ 2023-04-20 8:42 UTC (permalink / raw) To: Gao Xiang; +Cc: fstests, Yang Xu (Fujitsu) On Thu, Apr 20, 2023 at 10:11:06AM +0800, Gao Xiang wrote: > Newer glibc such as glibc 2.36 also defines 'struct mount_attr' > in addition to <linux/mount.h>. It will report as below when > compiling with old linux kernel headers (without idmapped mounts, > such as kernel-headers 5.10.134) but with newer glibc (here checked > with glibc 2.36.6): > > [CC] detached_mounts_propagation > In file included from detached_mounts_propagation.c:29: > vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' > 115 | struct mount_attr { > | ^~~~~~~~~~ > In file included from detached_mounts_propagation.c:23: > /usr/include/sys/mount.h:210:8: note: originally defined here > 210 | struct mount_attr > | ^~~~~~~~~~ > gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 > gmake[2]: *** [include/buildrules:31: src] Error 2 > make[1]: *** [Makefile:51: default] Error 2 > make: *** [Makefile:49: default] Error 2 > > Let's get rid of <linux/mount.h> as Christian suggested to avoid > potential incompatibility between these two headers. > > Cc: Christian Brauner <brauner@kernel.org> > Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> > Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> > --- Seems good to me, Reviewed-by: Christian Brauner <brauner@kernel.org> ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-20 2:11 ` [PATCH v2] " Gao Xiang 2023-04-20 8:42 ` Christian Brauner @ 2023-04-22 13:54 ` Zorro Lang 2023-04-24 3:13 ` Gao Xiang 2023-04-24 10:17 ` Ziyang Zhang 1 sibling, 2 replies; 14+ messages in thread From: Zorro Lang @ 2023-04-22 13:54 UTC (permalink / raw) To: Gao Xiang; +Cc: fstests, Christian Brauner, Yang Xu (Fujitsu) On Thu, Apr 20, 2023 at 10:11:06AM +0800, Gao Xiang wrote: > Newer glibc such as glibc 2.36 also defines 'struct mount_attr' > in addition to <linux/mount.h>. It will report as below when > compiling with old linux kernel headers (without idmapped mounts, > such as kernel-headers 5.10.134) but with newer glibc (here checked > with glibc 2.36.6): > > [CC] detached_mounts_propagation > In file included from detached_mounts_propagation.c:29: > vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' > 115 | struct mount_attr { > | ^~~~~~~~~~ > In file included from detached_mounts_propagation.c:23: > /usr/include/sys/mount.h:210:8: note: originally defined here > 210 | struct mount_attr > | ^~~~~~~~~~ > gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 > gmake[2]: *** [include/buildrules:31: src] Error 2 > make[1]: *** [Makefile:51: default] Error 2 > make: *** [Makefile:49: default] Error 2 > > Let's get rid of <linux/mount.h> as Christian suggested to avoid > potential incompatibility between these two headers. > > Cc: Christian Brauner <brauner@kernel.org> > Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> > Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> > --- This patch works on latest fedora, but it cause fstests can't be built on RHEL-8 [1] and RHEL-9 [2], please check this incompatible problem. Thanks, Zorro [1] ... Building include Building lib Building ltp Building src [CC] feature In file included from /usr/include/linux/fs.h:18, from /usr/include/xfs/linux.h:30, from /usr/include/xfs/xfs.h:9, from global.h:13, from feature.c:29: /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant MS_RDONLY = 1, /* Mount read-only. */ ^~~~~~~~~ gmake[2]: *** [Makefile:112: feature] Error 1 gmake[1]: *** [include/buildrules:31: src] Error 2 make: *** [Makefile:51: default] Error 2 [2] ... Building include Building lib Building ltp Building src [CC] feature In file included from /usr/include/linux/fs.h:19, from /usr/include/xfs/linux.h:36, from /usr/include/xfs/xfs.h:9, from global.h:13, from feature.c:29: /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant 35 | MS_RDONLY = 1, /* Mount read-only. */ | ^~~~~~~~~ In file included from feature.c:49: vfs/missing.h:116:8: error: redefinition of 'struct mount_attr' 116 | struct mount_attr { | ^~~~~~~~~~ In file included from /usr/include/linux/fs.h:19, from /usr/include/xfs/linux.h:36, from /usr/include/xfs/xfs.h:9, from global.h:13, from feature.c:29: /usr/include/linux/mount.h:128:8: note: originally defined here 128 | struct mount_attr { | ^~~~~~~~~~ gmake[2]: *** [Makefile:112: feature] Error 1 gmake[1]: *** [include/buildrules:31: src] Error 2 make: *** [Makefile:51: default] Error 2 > configure.ac | 2 +- > src/detached_mounts_propagation.c | 1 - > src/vfs/missing.h | 1 + > 3 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 4687d8a3..bb29f37e 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -74,7 +74,7 @@ AC_HAVE_FIEXCHANGE > > AC_CHECK_FUNCS([renameat2]) > AC_CHECK_FUNCS([reallocarray]) > -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) > +AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <sys/mount.h>]]) > AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ > #include <stddef.h> > #include <linux/btrfs.h> > diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c > index 17db2c02..4041c75f 100644 > --- a/src/detached_mounts_propagation.c > +++ b/src/detached_mounts_propagation.c > @@ -20,7 +20,6 @@ > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > -#include <sys/mount.h> > #include <sys/stat.h> > #include <sys/syscall.h> > #include <sys/types.h> > diff --git a/src/vfs/missing.h b/src/vfs/missing.h > index 059e742d..04ab33d1 100644 > --- a/src/vfs/missing.h > +++ b/src/vfs/missing.h > @@ -18,6 +18,7 @@ > #include <sys/types.h> > #include <syscall.h> > #include <unistd.h> > +#include <sys/mount.h> > > #ifndef __NR_mount_setattr > #if defined __alpha__ > -- > 2.24.4 > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-22 13:54 ` Zorro Lang @ 2023-04-24 3:13 ` Gao Xiang 2023-04-24 10:17 ` Ziyang Zhang 1 sibling, 0 replies; 14+ messages in thread From: Gao Xiang @ 2023-04-24 3:13 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, Christian Brauner, Yang Xu (Fujitsu) Hi Zorro, On 2023/4/22 21:54, Zorro Lang wrote: > On Thu, Apr 20, 2023 at 10:11:06AM +0800, Gao Xiang wrote: >> Newer glibc such as glibc 2.36 also defines 'struct mount_attr' >> in addition to <linux/mount.h>. It will report as below when >> compiling with old linux kernel headers (without idmapped mounts, >> such as kernel-headers 5.10.134) but with newer glibc (here checked >> with glibc 2.36.6): >> >> [CC] detached_mounts_propagation >> In file included from detached_mounts_propagation.c:29: >> vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' >> 115 | struct mount_attr { >> | ^~~~~~~~~~ >> In file included from detached_mounts_propagation.c:23: >> /usr/include/sys/mount.h:210:8: note: originally defined here >> 210 | struct mount_attr >> | ^~~~~~~~~~ >> gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 >> gmake[2]: *** [include/buildrules:31: src] Error 2 >> make[1]: *** [Makefile:51: default] Error 2 >> make: *** [Makefile:49: default] Error 2 >> >> Let's get rid of <linux/mount.h> as Christian suggested to avoid >> potential incompatibility between these two headers. >> >> Cc: Christian Brauner <brauner@kernel.org> >> Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> >> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> >> --- > > This patch works on latest fedora, but it cause fstests can't be built on > RHEL-8 [1] and RHEL-9 [2], please check this incompatible problem. I don't have RHEL-8 and RHEL-9 enviroment at hand, it seems that #include <sys/mount.h> in vfs/missing.h and xfs/xfs.h uapi header file causes more conflicts now. So could you help check if _updating configure.ac only_ resolves the problem? I will recheck this as well. Thanks, Gao Xiang > > Thanks, > Zorro > > [1] > ... > Building include > Building lib > Building ltp > Building src > [CC] feature > In file included from /usr/include/linux/fs.h:18, > from /usr/include/xfs/linux.h:30, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > MS_RDONLY = 1, /* Mount read-only. */ > ^~~~~~~~~ > gmake[2]: *** [Makefile:112: feature] Error 1 > gmake[1]: *** [include/buildrules:31: src] Error 2 > make: *** [Makefile:51: default] Error 2 > > [2] > ... > Building include > Building lib > Building ltp > Building src > [CC] feature > In file included from /usr/include/linux/fs.h:19, > from /usr/include/xfs/linux.h:36, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > 35 | MS_RDONLY = 1, /* Mount read-only. */ > | ^~~~~~~~~ > In file included from feature.c:49: > vfs/missing.h:116:8: error: redefinition of 'struct mount_attr' > 116 | struct mount_attr { > | ^~~~~~~~~~ > In file included from /usr/include/linux/fs.h:19, > from /usr/include/xfs/linux.h:36, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/linux/mount.h:128:8: note: originally defined here > 128 | struct mount_attr { > | ^~~~~~~~~~ > gmake[2]: *** [Makefile:112: feature] Error 1 > gmake[1]: *** [include/buildrules:31: src] Error 2 > make: *** [Makefile:51: default] Error 2 > > >> configure.ac | 2 +- >> src/detached_mounts_propagation.c | 1 - >> src/vfs/missing.h | 1 + >> 3 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 4687d8a3..bb29f37e 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -74,7 +74,7 @@ AC_HAVE_FIEXCHANGE >> >> AC_CHECK_FUNCS([renameat2]) >> AC_CHECK_FUNCS([reallocarray]) >> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) >> +AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <sys/mount.h>]]) >> AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ >> #include <stddef.h> >> #include <linux/btrfs.h> >> diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c >> index 17db2c02..4041c75f 100644 >> --- a/src/detached_mounts_propagation.c >> +++ b/src/detached_mounts_propagation.c >> @@ -20,7 +20,6 @@ >> #include <stdio.h> >> #include <stdlib.h> >> #include <string.h> >> -#include <sys/mount.h> >> #include <sys/stat.h> >> #include <sys/syscall.h> >> #include <sys/types.h> >> diff --git a/src/vfs/missing.h b/src/vfs/missing.h >> index 059e742d..04ab33d1 100644 >> --- a/src/vfs/missing.h >> +++ b/src/vfs/missing.h >> @@ -18,6 +18,7 @@ >> #include <sys/types.h> >> #include <syscall.h> >> #include <unistd.h> >> +#include <sys/mount.h> >> >> #ifndef __NR_mount_setattr >> #if defined __alpha__ >> -- >> 2.24.4 >> ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-22 13:54 ` Zorro Lang 2023-04-24 3:13 ` Gao Xiang @ 2023-04-24 10:17 ` Ziyang Zhang 2023-04-24 21:06 ` Zorro Lang 1 sibling, 1 reply; 14+ messages in thread From: Ziyang Zhang @ 2023-04-24 10:17 UTC (permalink / raw) To: Zorro Lang, Gao Xiang; +Cc: fstests, Christian Brauner, Yang Xu (Fujitsu) On 2023/4/22 21:54, Zorro Lang wrote: > On Thu, Apr 20, 2023 at 10:11:06AM +0800, Gao Xiang wrote: >> Newer glibc such as glibc 2.36 also defines 'struct mount_attr' >> in addition to <linux/mount.h>. It will report as below when >> compiling with old linux kernel headers (without idmapped mounts, >> such as kernel-headers 5.10.134) but with newer glibc (here checked >> with glibc 2.36.6): >> >> [CC] detached_mounts_propagation >> In file included from detached_mounts_propagation.c:29: >> vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' >> 115 | struct mount_attr { >> | ^~~~~~~~~~ >> In file included from detached_mounts_propagation.c:23: >> /usr/include/sys/mount.h:210:8: note: originally defined here >> 210 | struct mount_attr >> | ^~~~~~~~~~ >> gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 >> gmake[2]: *** [include/buildrules:31: src] Error 2 >> make[1]: *** [Makefile:51: default] Error 2 >> make: *** [Makefile:49: default] Error 2 >> >> Let's get rid of <linux/mount.h> as Christian suggested to avoid >> potential incompatibility between these two headers. >> >> Cc: Christian Brauner <brauner@kernel.org> >> Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> >> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> >> --- > > This patch works on latest fedora, but it cause fstests can't be built on > RHEL-8 [1] and RHEL-9 [2], please check this incompatible problem. > > Thanks, > Zorro > > [1] > ... > Building include > Building lib > Building ltp > Building src > [CC] feature > In file included from /usr/include/linux/fs.h:18, > from /usr/include/xfs/linux.h:30, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > MS_RDONLY = 1, /* Mount read-only. */ > ^~~~~~~~~ > gmake[2]: *** [Makefile:112: feature] Error 1 > gmake[1]: *** [include/buildrules:31: src] Error 2 > make: *** [Makefile:51: default] Error 2 > > [2] > ... > Building include > Building lib > Building ltp > Building src > [CC] feature > In file included from /usr/include/linux/fs.h:19, > from /usr/include/xfs/linux.h:36, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > 35 | MS_RDONLY = 1, /* Mount read-only. */ > | ^~~~~~~~~ > In file included from feature.c:49: > vfs/missing.h:116:8: error: redefinition of 'struct mount_attr' > 116 | struct mount_attr { > | ^~~~~~~~~~ > In file included from /usr/include/linux/fs.h:19, > from /usr/include/xfs/linux.h:36, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/linux/mount.h:128:8: note: originally defined here > 128 | struct mount_attr { > | ^~~~~~~~~~ > gmake[2]: *** [Makefile:112: feature] Error 1 > gmake[1]: *** [include/buildrules:31: src] Error 2 > make: *** [Makefile:51: default] Error 2 > > >> configure.ac | 2 +- >> src/detached_mounts_propagation.c | 1 - >> src/vfs/missing.h | 1 + >> 3 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 4687d8a3..bb29f37e 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -74,7 +74,7 @@ AC_HAVE_FIEXCHANGE >> >> AC_CHECK_FUNCS([renameat2]) >> AC_CHECK_FUNCS([reallocarray]) >> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) >> +AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <sys/mount.h>]]) >> AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ >> #include <stddef.h> >> #include <linux/btrfs.h> >> diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c >> index 17db2c02..4041c75f 100644 >> --- a/src/detached_mounts_propagation.c >> +++ b/src/detached_mounts_propagation.c >> @@ -20,7 +20,6 @@ >> #include <stdio.h> >> #include <stdlib.h> >> #include <string.h> >> -#include <sys/mount.h> >> #include <sys/stat.h> >> #include <sys/syscall.h> >> #include <sys/types.h> >> diff --git a/src/vfs/missing.h b/src/vfs/missing.h >> index 059e742d..04ab33d1 100644 >> --- a/src/vfs/missing.h >> +++ b/src/vfs/missing.h >> @@ -18,6 +18,7 @@ >> #include <sys/types.h> >> #include <syscall.h> >> #include <unistd.h> >> +#include <sys/mount.h> >> >> #ifndef __NR_mount_setattr >> #if defined __alpha__ >> -- >> 2.24.4 >> Hi Zorro, Can you try this patch, which is inspired by Yang Xu[1]. [1]https://lore.kernel.org/fstests/ed0bb9f0-c255-10d7-d711-36a464cd6512@fujitsu.com/T/#me981ae064b3ecb151b3321a4ee77f5d916cb017c Regards, Zhang Patch: diff --git a/configure.ac b/configure.ac index cbf83779..060c0a5d 100644 --- a/configure.ac +++ b/configure.ac @@ -16,6 +16,7 @@ AC_CHECK_HEADERS([ assert.h \ sys/uuid.h \ sys/file.h \ sys/fcntl.h \ + sys/mount.h \ sys/syssgi.h \ sys/param.h \ sys/stat.h \ @@ -27,6 +28,7 @@ AC_CHECK_HEADERS([ assert.h \ strings.h \ err.h \ linux/falloc.h \ + linux/mount.h \ sys/fs/xfs_fsops.h \ sys/fs/xfs_itable.h \ xfs/platform_defs.h \ @@ -35,6 +37,10 @@ AC_CHECK_HEADERS([ assert.h \ sys/mman.h \ ]) +AC_CHECK_FUNCS_ONCE([ + mount_setattr +]) + AC_CHECK_HEADERS([xfs/xfs_log_format.h],,,[ #define _GNU_SOURCE #include <xfs/libxfs.h>]) @@ -68,7 +74,13 @@ AC_PACKAGE_WANT_LIBBTRFSUTIL AC_HAVE_COPY_FILE_RANGE AC_CHECK_FUNCS([renameat2]) AC_CHECK_FUNCS([reallocarray]) -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) +AC_CHECK_TYPES([struct mount_attr], [], [],[[ +#ifdef HAVE_MOUNT_SETATTR +# include <sys/mount.h> +#elif HAVE_LINUX_MOUNT_H +# include <linux/mount.h> +#endif +]]) AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ #include <stddef.h> #include <linux/btrfs.h> diff --git a/src/vfs/missing.h b/src/vfs/missing.h index 059e742d..04ab33d1 100644 --- a/src/vfs/missing.h +++ b/src/vfs/missing.h @@ -18,6 +18,7 @@ #include <sys/types.h> #include <syscall.h> #include <unistd.h> +#include <sys/mount.h> #ifndef __NR_mount_setattr #if defined __alpha__ ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-24 10:17 ` Ziyang Zhang @ 2023-04-24 21:06 ` Zorro Lang 2023-04-25 1:28 ` Yang Xu (Fujitsu) 0 siblings, 1 reply; 14+ messages in thread From: Zorro Lang @ 2023-04-24 21:06 UTC (permalink / raw) To: Ziyang Zhang; +Cc: Gao Xiang, fstests, Christian Brauner, Yang Xu (Fujitsu) On Mon, Apr 24, 2023 at 06:17:55PM +0800, Ziyang Zhang wrote: > On 2023/4/22 21:54, Zorro Lang wrote: > > On Thu, Apr 20, 2023 at 10:11:06AM +0800, Gao Xiang wrote: > >> Newer glibc such as glibc 2.36 also defines 'struct mount_attr' > >> in addition to <linux/mount.h>. It will report as below when > >> compiling with old linux kernel headers (without idmapped mounts, > >> such as kernel-headers 5.10.134) but with newer glibc (here checked > >> with glibc 2.36.6): > >> > >> [CC] detached_mounts_propagation > >> In file included from detached_mounts_propagation.c:29: > >> vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' > >> 115 | struct mount_attr { > >> | ^~~~~~~~~~ > >> In file included from detached_mounts_propagation.c:23: > >> /usr/include/sys/mount.h:210:8: note: originally defined here > >> 210 | struct mount_attr > >> | ^~~~~~~~~~ > >> gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 > >> gmake[2]: *** [include/buildrules:31: src] Error 2 > >> make[1]: *** [Makefile:51: default] Error 2 > >> make: *** [Makefile:49: default] Error 2 > >> > >> Let's get rid of <linux/mount.h> as Christian suggested to avoid > >> potential incompatibility between these two headers. > >> > >> Cc: Christian Brauner <brauner@kernel.org> > >> Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> > >> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> > >> --- > > > > This patch works on latest fedora, but it cause fstests can't be built on > > RHEL-8 [1] and RHEL-9 [2], please check this incompatible problem. > > > > Thanks, > > Zorro > > > > [1] > > ... > > Building include > > Building lib > > Building ltp > > Building src > > [CC] feature > > In file included from /usr/include/linux/fs.h:18, > > from /usr/include/xfs/linux.h:30, > > from /usr/include/xfs/xfs.h:9, > > from global.h:13, > > from feature.c:29: > > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > > MS_RDONLY = 1, /* Mount read-only. */ > > ^~~~~~~~~ > > gmake[2]: *** [Makefile:112: feature] Error 1 > > gmake[1]: *** [include/buildrules:31: src] Error 2 > > make: *** [Makefile:51: default] Error 2 > > > > [2] > > ... > > Building include > > Building lib > > Building ltp > > Building src > > [CC] feature > > In file included from /usr/include/linux/fs.h:19, > > from /usr/include/xfs/linux.h:36, > > from /usr/include/xfs/xfs.h:9, > > from global.h:13, > > from feature.c:29: > > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > > 35 | MS_RDONLY = 1, /* Mount read-only. */ > > | ^~~~~~~~~ > > In file included from feature.c:49: > > vfs/missing.h:116:8: error: redefinition of 'struct mount_attr' > > 116 | struct mount_attr { > > | ^~~~~~~~~~ > > In file included from /usr/include/linux/fs.h:19, > > from /usr/include/xfs/linux.h:36, > > from /usr/include/xfs/xfs.h:9, > > from global.h:13, > > from feature.c:29: > > /usr/include/linux/mount.h:128:8: note: originally defined here > > 128 | struct mount_attr { > > | ^~~~~~~~~~ > > gmake[2]: *** [Makefile:112: feature] Error 1 > > gmake[1]: *** [include/buildrules:31: src] Error 2 > > make: *** [Makefile:51: default] Error 2 > > > > > >> configure.ac | 2 +- > >> src/detached_mounts_propagation.c | 1 - > >> src/vfs/missing.h | 1 + > >> 3 files changed, 2 insertions(+), 2 deletions(-) > >> > >> diff --git a/configure.ac b/configure.ac > >> index 4687d8a3..bb29f37e 100644 > >> --- a/configure.ac > >> +++ b/configure.ac > >> @@ -74,7 +74,7 @@ AC_HAVE_FIEXCHANGE > >> > >> AC_CHECK_FUNCS([renameat2]) > >> AC_CHECK_FUNCS([reallocarray]) > >> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) > >> +AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <sys/mount.h>]]) > >> AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ > >> #include <stddef.h> > >> #include <linux/btrfs.h> > >> diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c > >> index 17db2c02..4041c75f 100644 > >> --- a/src/detached_mounts_propagation.c > >> +++ b/src/detached_mounts_propagation.c > >> @@ -20,7 +20,6 @@ > >> #include <stdio.h> > >> #include <stdlib.h> > >> #include <string.h> > >> -#include <sys/mount.h> > >> #include <sys/stat.h> > >> #include <sys/syscall.h> > >> #include <sys/types.h> > >> diff --git a/src/vfs/missing.h b/src/vfs/missing.h > >> index 059e742d..04ab33d1 100644 > >> --- a/src/vfs/missing.h > >> +++ b/src/vfs/missing.h > >> @@ -18,6 +18,7 @@ > >> #include <sys/types.h> > >> #include <syscall.h> > >> #include <unistd.h> > >> +#include <sys/mount.h> > >> > >> #ifndef __NR_mount_setattr > >> #if defined __alpha__ > >> -- > >> 2.24.4 > >> > > Hi Zorro, > > Can you try this patch, which is inspired by Yang Xu[1]. > > [1]https://lore.kernel.org/fstests/ed0bb9f0-c255-10d7-d711-36a464cd6512@fujitsu.com/T/#me981ae064b3ecb151b3321a4ee77f5d916cb017c > > Regards, > Zhang > > > Patch: Looks like not help [1]. The src/feature.c through global.h -> xfs/xfs.h -> xfs/linux.h -> linux/fs.h to include linux/mount.h, then it include "vfs/missing.h" manually. As you add "<sys/mount.h>" to vfs/missing.h, so there's a conflict. Thanks, Zorro [1] # make Building include Building lib Building ltp Building src [CC] feature In file included from /usr/include/linux/fs.h:18, from /usr/include/xfs/linux.h:30, from /usr/include/xfs/xfs.h:9, from global.h:13, from feature.c:29: /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant MS_RDONLY = 1, /* Mount read-only. */ ^~~~~~~~~ gmake[2]: *** [Makefile:112: feature] Error 1 gmake[1]: *** [include/buildrules:31: src] Error 2 make: *** [Makefile:51: default] Error 2 > > diff --git a/configure.ac b/configure.ac > index cbf83779..060c0a5d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -16,6 +16,7 @@ AC_CHECK_HEADERS([ assert.h \ > sys/uuid.h \ > sys/file.h \ > sys/fcntl.h \ > + sys/mount.h \ > sys/syssgi.h \ > sys/param.h \ > sys/stat.h \ > @@ -27,6 +28,7 @@ AC_CHECK_HEADERS([ assert.h \ > strings.h \ > err.h \ > linux/falloc.h \ > + linux/mount.h \ > sys/fs/xfs_fsops.h \ > sys/fs/xfs_itable.h \ > xfs/platform_defs.h \ > @@ -35,6 +37,10 @@ AC_CHECK_HEADERS([ assert.h \ > sys/mman.h \ > ]) > > +AC_CHECK_FUNCS_ONCE([ > + mount_setattr > +]) > + > AC_CHECK_HEADERS([xfs/xfs_log_format.h],,,[ > #define _GNU_SOURCE > #include <xfs/libxfs.h>]) > @@ -68,7 +74,13 @@ AC_PACKAGE_WANT_LIBBTRFSUTIL > AC_HAVE_COPY_FILE_RANGE > AC_CHECK_FUNCS([renameat2]) > AC_CHECK_FUNCS([reallocarray]) > -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) > +AC_CHECK_TYPES([struct mount_attr], [], [],[[ > +#ifdef HAVE_MOUNT_SETATTR > +# include <sys/mount.h> > +#elif HAVE_LINUX_MOUNT_H > +# include <linux/mount.h> > +#endif > +]]) > AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ > #include <stddef.h> > #include <linux/btrfs.h> > diff --git a/src/vfs/missing.h b/src/vfs/missing.h > index 059e742d..04ab33d1 100644 > --- a/src/vfs/missing.h > +++ b/src/vfs/missing.h > @@ -18,6 +18,7 @@ > #include <sys/types.h> > #include <syscall.h> > #include <unistd.h> > +#include <sys/mount.h> > > #ifndef __NR_mount_setattr > #if defined __alpha__ > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-24 21:06 ` Zorro Lang @ 2023-04-25 1:28 ` Yang Xu (Fujitsu) 2023-04-25 1:59 ` Ziyang Zhang 0 siblings, 1 reply; 14+ messages in thread From: Yang Xu (Fujitsu) @ 2023-04-25 1:28 UTC (permalink / raw) To: Zorro Lang, Ziyang Zhang Cc: Gao Xiang, fstests@vger.kernel.org, Christian Brauner on 2023/04/25 5:06, Zorro Lang wrote: > On Mon, Apr 24, 2023 at 06:17:55PM +0800, Ziyang Zhang wrote: >> On 2023/4/22 21:54, Zorro Lang wrote: >>> On Thu, Apr 20, 2023 at 10:11:06AM +0800, Gao Xiang wrote: >>>> Newer glibc such as glibc 2.36 also defines 'struct mount_attr' >>>> in addition to <linux/mount.h>. It will report as below when >>>> compiling with old linux kernel headers (without idmapped mounts, >>>> such as kernel-headers 5.10.134) but with newer glibc (here checked >>>> with glibc 2.36.6): >>>> >>>> [CC] detached_mounts_propagation >>>> In file included from detached_mounts_propagation.c:29: >>>> vfs/missing.h:115:8: error: redefinition of 'struct mount_attr' >>>> 115 | struct mount_attr { >>>> | ^~~~~~~~~~ >>>> In file included from detached_mounts_propagation.c:23: >>>> /usr/include/sys/mount.h:210:8: note: originally defined here >>>> 210 | struct mount_attr >>>> | ^~~~~~~~~~ >>>> gmake[3]: *** [Makefile:102: detached_mounts_propagation] Error 1 >>>> gmake[2]: *** [include/buildrules:31: src] Error 2 >>>> make[1]: *** [Makefile:51: default] Error 2 >>>> make: *** [Makefile:49: default] Error 2 >>>> >>>> Let's get rid of <linux/mount.h> as Christian suggested to avoid >>>> potential incompatibility between these two headers. >>>> >>>> Cc: Christian Brauner <brauner@kernel.org> >>>> Cc: "Yang Xu (Fujitsu)" <xuyang2018.jy@fujitsu.com> >>>> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> >>>> --- >>> >>> This patch works on latest fedora, but it cause fstests can't be built on >>> RHEL-8 [1] and RHEL-9 [2], please check this incompatible problem. >>> >>> Thanks, >>> Zorro >>> >>> [1] >>> ... >>> Building include >>> Building lib >>> Building ltp >>> Building src >>> [CC] feature >>> In file included from /usr/include/linux/fs.h:18, >>> from /usr/include/xfs/linux.h:30, >>> from /usr/include/xfs/xfs.h:9, >>> from global.h:13, >>> from feature.c:29: >>> /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant >>> MS_RDONLY = 1, /* Mount read-only. */ >>> ^~~~~~~~~ >>> gmake[2]: *** [Makefile:112: feature] Error 1 >>> gmake[1]: *** [include/buildrules:31: src] Error 2 >>> make: *** [Makefile:51: default] Error 2 >>> >>> [2] >>> ... >>> Building include >>> Building lib >>> Building ltp >>> Building src >>> [CC] feature >>> In file included from /usr/include/linux/fs.h:19, >>> from /usr/include/xfs/linux.h:36, >>> from /usr/include/xfs/xfs.h:9, >>> from global.h:13, >>> from feature.c:29: >>> /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant >>> 35 | MS_RDONLY = 1, /* Mount read-only. */ >>> | ^~~~~~~~~ >>> In file included from feature.c:49: >>> vfs/missing.h:116:8: error: redefinition of 'struct mount_attr' >>> 116 | struct mount_attr { >>> | ^~~~~~~~~~ >>> In file included from /usr/include/linux/fs.h:19, >>> from /usr/include/xfs/linux.h:36, >>> from /usr/include/xfs/xfs.h:9, >>> from global.h:13, >>> from feature.c:29: >>> /usr/include/linux/mount.h:128:8: note: originally defined here >>> 128 | struct mount_attr { >>> | ^~~~~~~~~~ >>> gmake[2]: *** [Makefile:112: feature] Error 1 >>> gmake[1]: *** [include/buildrules:31: src] Error 2 >>> make: *** [Makefile:51: default] Error 2 >>> >>> >>>> configure.ac | 2 +- >>>> src/detached_mounts_propagation.c | 1 - >>>> src/vfs/missing.h | 1 + >>>> 3 files changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/configure.ac b/configure.ac >>>> index 4687d8a3..bb29f37e 100644 >>>> --- a/configure.ac >>>> +++ b/configure.ac >>>> @@ -74,7 +74,7 @@ AC_HAVE_FIEXCHANGE >>>> >>>> AC_CHECK_FUNCS([renameat2]) >>>> AC_CHECK_FUNCS([reallocarray]) >>>> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) >>>> +AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <sys/mount.h>]]) >>>> AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ >>>> #include <stddef.h> >>>> #include <linux/btrfs.h> >>>> diff --git a/src/detached_mounts_propagation.c b/src/detached_mounts_propagation.c >>>> index 17db2c02..4041c75f 100644 >>>> --- a/src/detached_mounts_propagation.c >>>> +++ b/src/detached_mounts_propagation.c >>>> @@ -20,7 +20,6 @@ >>>> #include <stdio.h> >>>> #include <stdlib.h> >>>> #include <string.h> >>>> -#include <sys/mount.h> >>>> #include <sys/stat.h> >>>> #include <sys/syscall.h> >>>> #include <sys/types.h> >>>> diff --git a/src/vfs/missing.h b/src/vfs/missing.h >>>> index 059e742d..04ab33d1 100644 >>>> --- a/src/vfs/missing.h >>>> +++ b/src/vfs/missing.h >>>> @@ -18,6 +18,7 @@ >>>> #include <sys/types.h> >>>> #include <syscall.h> >>>> #include <unistd.h> >>>> +#include <sys/mount.h> >>>> >>>> #ifndef __NR_mount_setattr >>>> #if defined __alpha__ >>>> -- >>>> 2.24.4 >>>> >> >> Hi Zorro, >> >> Can you try this patch, which is inspired by Yang Xu[1]. >> >> [1]https://lore.kernel.org/fstests/ed0bb9f0-c255-10d7-d711-36a464cd6512@fujitsu.com/T/#me981ae064b3ecb151b3321a4ee77f5d916cb017c >> >> Regards, >> Zhang >> >> >> Patch: > > Looks like not help [1]. The src/feature.c through global.h -> xfs/xfs.h > -> xfs/linux.h -> linux/fs.h to include linux/mount.h, then it include > "vfs/missing.h" manually. As you add "<sys/mount.h>" to vfs/missing.h, > so there's a conflict. Yes, here is a complex problem than ltp because global.h includes <linux/mount.h>. We don't include <sys/mount.h> or <linux/mount.h> together on older glibc(glibc 2.36.6). Newer glibc(glibc-2.37-1)[1] seems has sloved this problem. [1]https://sourceware.org/git/?p=glibc.git;a=commit;h=774058d72942249f71d74e7f2b639f77184160a6 I guess we can not use <sys/mount.h> header, then compile info as below: detached_mounts_propagation.c: In function 'main': detached_mounts_propagation.c:129:15: warning: implicit declaration of function 'mount' [-Wimplicit-function-declaration] 129 | ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); | ^~~~~ detached_mounts_propagation.c:176:23: warning: implicit declaration of function 'umount2'; did you mean 'sys_umount2'? [-Wimplicit-function-declaration] 176 | ret = umount2(target, MNT_DETACH); | ^~~~~~~ | sys_umount2 then we can use syscall wrapper directly instead of glibc wrapper --- a/src/detached_mounts_propagation.c +++ b/src/detached_mounts_propagation.c @@ -20,7 +20,6 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <sys/mount.h> #include <sys/stat.h> #include <sys/syscall.h> #include <sys/types.h> @@ -127,7 +126,7 @@ int main(int argc, char *argv[]) if (ret < 0) exit_log("%m - Failed to create new mount namespace"); - ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); + ret = sys_mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); if (ret < 0) exit_log("%m - Failed to make base_dir shared mountpoint"); @@ -174,7 +173,7 @@ int main(int argc, char *argv[]) } close(fd_tree); - ret = umount2(target, MNT_DETACH); + ret = sys_umount2(target, MNT_DETACH); if (ret < 0) { fprintf(stderr, "%m - Failed to unmount %s", target); exit_code = EXIT_FAILURE; Best Regards Yang Xu > > Thanks, > Zorro > > [1] > # make > Building include > Building lib > Building ltp > Building src > [CC] feature > In file included from /usr/include/linux/fs.h:18, > from /usr/include/xfs/linux.h:30, > from /usr/include/xfs/xfs.h:9, > from global.h:13, > from feature.c:29: > /usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant > MS_RDONLY = 1, /* Mount read-only. */ > ^~~~~~~~~ > gmake[2]: *** [Makefile:112: feature] Error 1 > gmake[1]: *** [include/buildrules:31: src] Error 2 > make: *** [Makefile:51: default] Error 2 > >> >> diff --git a/configure.ac b/configure.ac >> index cbf83779..060c0a5d 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -16,6 +16,7 @@ AC_CHECK_HEADERS([ assert.h \ >> sys/uuid.h \ >> sys/file.h \ >> sys/fcntl.h \ >> + sys/mount.h \ >> sys/syssgi.h \ >> sys/param.h \ >> sys/stat.h \ >> @@ -27,6 +28,7 @@ AC_CHECK_HEADERS([ assert.h \ >> strings.h \ >> err.h \ >> linux/falloc.h \ >> + linux/mount.h \ >> sys/fs/xfs_fsops.h \ >> sys/fs/xfs_itable.h \ >> xfs/platform_defs.h \ >> @@ -35,6 +37,10 @@ AC_CHECK_HEADERS([ assert.h \ >> sys/mman.h \ >> ]) >> >> +AC_CHECK_FUNCS_ONCE([ >> + mount_setattr >> +]) >> + >> AC_CHECK_HEADERS([xfs/xfs_log_format.h],,,[ >> #define _GNU_SOURCE >> #include <xfs/libxfs.h>]) >> @@ -68,7 +74,13 @@ AC_PACKAGE_WANT_LIBBTRFSUTIL >> AC_HAVE_COPY_FILE_RANGE >> AC_CHECK_FUNCS([renameat2]) >> AC_CHECK_FUNCS([reallocarray]) >> -AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]]) >> +AC_CHECK_TYPES([struct mount_attr], [], [],[[ >> +#ifdef HAVE_MOUNT_SETATTR >> +# include <sys/mount.h> >> +#elif HAVE_LINUX_MOUNT_H >> +# include <linux/mount.h> >> +#endif >> +]]) >> AC_CHECK_TYPES([struct btrfs_qgroup_limit], [], [], [[ >> #include <stddef.h> >> #include <linux/btrfs.h> >> diff --git a/src/vfs/missing.h b/src/vfs/missing.h >> index 059e742d..04ab33d1 100644 >> --- a/src/vfs/missing.h >> +++ b/src/vfs/missing.h >> @@ -18,6 +18,7 @@ >> #include <sys/types.h> >> #include <syscall.h> >> #include <unistd.h> >> +#include <sys/mount.h> >> >> #ifndef __NR_mount_setattr >> #if defined __alpha__ >> > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-25 1:28 ` Yang Xu (Fujitsu) @ 2023-04-25 1:59 ` Ziyang Zhang 2023-04-25 2:07 ` Yang Xu (Fujitsu) 0 siblings, 1 reply; 14+ messages in thread From: Ziyang Zhang @ 2023-04-25 1:59 UTC (permalink / raw) To: Yang Xu (Fujitsu), Zorro Lang Cc: Gao Xiang, fstests@vger.kernel.org, Christian Brauner On 2023/4/25 09:28, Yang Xu (Fujitsu) wrote: > [...] >> >> Looks like not help [1]. The src/feature.c through global.h -> xfs/xfs.h >> -> xfs/linux.h -> linux/fs.h to include linux/mount.h, then it include >> "vfs/missing.h" manually. As you add "<sys/mount.h>" to vfs/missing.h, >> so there's a conflict. > > Yes, here is a complex problem than ltp because global.h includes > <linux/mount.h>. We don't include <sys/mount.h> or <linux/mount.h> > together on older glibc(glibc 2.36.6). Newer glibc(glibc-2.37-1)[1] > seems has sloved this problem. > > [1]https://sourceware.org/git/?p=glibc.git;a=commit;h=774058d72942249f71d74e7f2b639f77184160a6 > > I guess we can not use <sys/mount.h> header, > then compile info as below: > detached_mounts_propagation.c: In function 'main': > detached_mounts_propagation.c:129:15: warning: implicit declaration of > function 'mount' [-Wimplicit-function-declaration] > 129 | ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, > NULL); > | ^~~~~ > detached_mounts_propagation.c:176:23: warning: implicit declaration of > function 'umount2'; did you mean 'sys_umount2'? > [-Wimplicit-function-declaration] > 176 | ret = umount2(target, MNT_DETACH); > | ^~~~~~~ > | sys_umount2 > > > then we can use syscall wrapper directly instead of glibc wrapper > --- a/src/detached_mounts_propagation.c > +++ b/src/detached_mounts_propagation.c > @@ -20,7 +20,6 @@ > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > -#include <sys/mount.h> > #include <sys/stat.h> > #include <sys/syscall.h> > #include <sys/types.h> > @@ -127,7 +126,7 @@ int main(int argc, char *argv[]) > if (ret < 0) > exit_log("%m - Failed to create new mount namespace"); > > - ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); > + ret = sys_mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); > if (ret < 0) > exit_log("%m - Failed to make base_dir shared mountpoint"); > > @@ -174,7 +173,7 @@ int main(int argc, char *argv[]) > } > close(fd_tree); > > - ret = umount2(target, MNT_DETACH); > + ret = sys_umount2(target, MNT_DETACH); > if (ret < 0) { > fprintf(stderr, "%m - Failed to unmount %s", > target); > exit_code = EXIT_FAILURE; > > > Best Regards > Yang Xu > Hi Yang, You patch works for me(kernel: 5.10.134, glibc:2.36). I think we could just modify detached_mounts_propagation.c to solve this problem. Regards, Zhang ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-25 1:59 ` Ziyang Zhang @ 2023-04-25 2:07 ` Yang Xu (Fujitsu) 2023-04-25 3:18 ` Ziyang Zhang 0 siblings, 1 reply; 14+ messages in thread From: Yang Xu (Fujitsu) @ 2023-04-25 2:07 UTC (permalink / raw) To: Ziyang Zhang, Zorro Lang Cc: Gao Xiang, fstests@vger.kernel.org, Christian Brauner on 2023/04/25 9:59, Ziyang Zhang wrote: > On 2023/4/25 09:28, Yang Xu (Fujitsu) wrote: >> > > [...] > >>> >>> Looks like not help [1]. The src/feature.c through global.h -> xfs/xfs.h >>> -> xfs/linux.h -> linux/fs.h to include linux/mount.h, then it include >>> "vfs/missing.h" manually. As you add "<sys/mount.h>" to vfs/missing.h, >>> so there's a conflict. >> >> Yes, here is a complex problem than ltp because global.h includes >> <linux/mount.h>. We don't include <sys/mount.h> or <linux/mount.h> >> together on older glibc(glibc 2.36.6). Newer glibc(glibc-2.37-1)[1] >> seems has sloved this problem. >> >> [1]https://sourceware.org/git/?p=glibc.git;a=commit;h=774058d72942249f71d74e7f2b639f77184160a6 >> >> I guess we can not use <sys/mount.h> header, >> then compile info as below: >> detached_mounts_propagation.c: In function 'main': >> detached_mounts_propagation.c:129:15: warning: implicit declaration of >> function 'mount' [-Wimplicit-function-declaration] >> 129 | ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, >> NULL); >> | ^~~~~ >> detached_mounts_propagation.c:176:23: warning: implicit declaration of >> function 'umount2'; did you mean 'sys_umount2'? >> [-Wimplicit-function-declaration] >> 176 | ret = umount2(target, MNT_DETACH); >> | ^~~~~~~ >> | sys_umount2 >> >> >> then we can use syscall wrapper directly instead of glibc wrapper >> --- a/src/detached_mounts_propagation.c >> +++ b/src/detached_mounts_propagation.c >> @@ -20,7 +20,6 @@ >> #include <stdio.h> >> #include <stdlib.h> >> #include <string.h> >> -#include <sys/mount.h> >> #include <sys/stat.h> >> #include <sys/syscall.h> >> #include <sys/types.h> >> @@ -127,7 +126,7 @@ int main(int argc, char *argv[]) >> if (ret < 0) >> exit_log("%m - Failed to create new mount namespace"); >> >> - ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); >> + ret = sys_mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); >> if (ret < 0) >> exit_log("%m - Failed to make base_dir shared mountpoint"); >> >> @@ -174,7 +173,7 @@ int main(int argc, char *argv[]) >> } >> close(fd_tree); >> >> - ret = umount2(target, MNT_DETACH); >> + ret = sys_umount2(target, MNT_DETACH); >> if (ret < 0) { >> fprintf(stderr, "%m - Failed to unmount %s", >> target); >> exit_code = EXIT_FAILURE; >> >> >> Best Regards >> Yang Xu >> > > Hi Yang, > > You patch works for me(kernel: 5.10.134, glibc:2.36). I think we could just > modify detached_mounts_propagation.c to solve this problem. OK, @Gao @Ziyang, so should I send a patch or you send it? Best Regards Yang Xu > > Regards, > Zhang ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2] src: fix detached_mounts_propagation compile errors 2023-04-25 2:07 ` Yang Xu (Fujitsu) @ 2023-04-25 3:18 ` Ziyang Zhang 0 siblings, 0 replies; 14+ messages in thread From: Ziyang Zhang @ 2023-04-25 3:18 UTC (permalink / raw) To: Yang Xu (Fujitsu), Zorro Lang Cc: Gao Xiang, fstests@vger.kernel.org, Christian Brauner On 2023/4/25 10:07, Yang Xu (Fujitsu) wrote: > > > on 2023/04/25 9:59, Ziyang Zhang wrote: >> On 2023/4/25 09:28, Yang Xu (Fujitsu) wrote: >>> >> >> [...] >> >>>> >>>> Looks like not help [1]. The src/feature.c through global.h -> xfs/xfs.h >>>> -> xfs/linux.h -> linux/fs.h to include linux/mount.h, then it include >>>> "vfs/missing.h" manually. As you add "<sys/mount.h>" to vfs/missing.h, >>>> so there's a conflict. >>> >>> Yes, here is a complex problem than ltp because global.h includes >>> <linux/mount.h>. We don't include <sys/mount.h> or <linux/mount.h> >>> together on older glibc(glibc 2.36.6). Newer glibc(glibc-2.37-1)[1] >>> seems has sloved this problem. >>> >>> [1]https://sourceware.org/git/?p=glibc.git;a=commit;h=774058d72942249f71d74e7f2b639f77184160a6 >>> >>> I guess we can not use <sys/mount.h> header, >>> then compile info as below: >>> detached_mounts_propagation.c: In function 'main': >>> detached_mounts_propagation.c:129:15: warning: implicit declaration of >>> function 'mount' [-Wimplicit-function-declaration] >>> 129 | ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, >>> NULL); >>> | ^~~~~ >>> detached_mounts_propagation.c:176:23: warning: implicit declaration of >>> function 'umount2'; did you mean 'sys_umount2'? >>> [-Wimplicit-function-declaration] >>> 176 | ret = umount2(target, MNT_DETACH); >>> | ^~~~~~~ >>> | sys_umount2 >>> >>> >>> then we can use syscall wrapper directly instead of glibc wrapper >>> --- a/src/detached_mounts_propagation.c >>> +++ b/src/detached_mounts_propagation.c >>> @@ -20,7 +20,6 @@ >>> #include <stdio.h> >>> #include <stdlib.h> >>> #include <string.h> >>> -#include <sys/mount.h> >>> #include <sys/stat.h> >>> #include <sys/syscall.h> >>> #include <sys/types.h> >>> @@ -127,7 +126,7 @@ int main(int argc, char *argv[]) >>> if (ret < 0) >>> exit_log("%m - Failed to create new mount namespace"); >>> >>> - ret = mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); >>> + ret = sys_mount(NULL, base_dir, NULL, MS_REC | MS_SHARED, NULL); >>> if (ret < 0) >>> exit_log("%m - Failed to make base_dir shared mountpoint"); >>> >>> @@ -174,7 +173,7 @@ int main(int argc, char *argv[]) >>> } >>> close(fd_tree); >>> >>> - ret = umount2(target, MNT_DETACH); >>> + ret = sys_umount2(target, MNT_DETACH); >>> if (ret < 0) { >>> fprintf(stderr, "%m - Failed to unmount %s", >>> target); >>> exit_code = EXIT_FAILURE; >>> >>> >>> Best Regards >>> Yang Xu >>> >> >> Hi Yang, >> >> You patch works for me(kernel: 5.10.134, glibc:2.36). I think we could just >> modify detached_mounts_propagation.c to solve this problem. > > OK, @Gao @Ziyang, so should I send a patch or you send it? > > Best Regards > Yang Xu Hi, you can send it. :) Thanks. ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-04-25 3:18 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-19 3:29 [PATCH] src: fix detached_mounts_propagation compile errors Gao Xiang 2023-04-19 8:45 ` Christian Brauner 2023-04-19 9:04 ` Gao Xiang 2023-04-19 9:08 ` Yang Xu (Fujitsu) 2023-04-20 2:11 ` [PATCH v2] " Gao Xiang 2023-04-20 8:42 ` Christian Brauner 2023-04-22 13:54 ` Zorro Lang 2023-04-24 3:13 ` Gao Xiang 2023-04-24 10:17 ` Ziyang Zhang 2023-04-24 21:06 ` Zorro Lang 2023-04-25 1:28 ` Yang Xu (Fujitsu) 2023-04-25 1:59 ` Ziyang Zhang 2023-04-25 2:07 ` Yang Xu (Fujitsu) 2023-04-25 3:18 ` Ziyang Zhang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox