On 6/19/24 7:08 AM, Li Wang wrote: > cc Eric Sandeen <sandeen@xxxxxxxxxx <mailto:sandeen@xxxxxxxxxx>> who is the author of: If adding _GNU_SOURCE to the LTP configure.ac fixes the problem, I have no concerns about that. However, I also sent a patch to fix xfsprogs - having this wrapper in the header is really unnecessary, and will likely cause problems for others as well, so I just proposed removing it. https://lore.kernel.org/linux-xfs/be7f0845-5d5f-4af5-9ca9-3e4370b47d97@xxxxxxxxxxx/ (This problem only recently showed up due to other changes, see the explanation in the link above) Thanks, -Eric > commit 9d6023a856a1c4f84415dff59b0d5459cc8768db > Author: Eric Sandeen <sandeen@xxxxxxxxxx <mailto:sandeen@xxxxxxxxxx>> > Date: Thu Feb 27 15:05:48 2020 -0500 > > libxfs: use FALLOC_FL_ZERO_RANGE in libxfs_device_zero > > On Wed, Jun 19, 2024 at 8:05 PM Li Wang <liwang@xxxxxxxxxx <mailto:liwang@xxxxxxxxxx>> wrote: > > Hi Petr, XFS-Experts, > > On Wed, Jun 19, 2024 at 5:27 PM Petr Vorel <pvorel@xxxxxxx <mailto:pvorel@xxxxxxx>> wrote: > > Hi Li, > > > These changes help ensure that the necessary features and definitions > > are available during the configuration process, preventing potential > > issues related to missing or incompatible definitions. This should > > resolve the compilation error related to struct fs_quota_statv: > > > /usr/include/xfs/xqm.h:167:8: error: redefinition of ‘struct fs_qfilestatv’ > > I wonder how _GNU_SOURCE influences any XFS header? > I haven't found anything in (<xfs/*.h>) or in <sys/quota.h> > > > With installing a newer xfsprogs-dev package on RHEL, we got a problem > in configuring our LTP test. > > According to the inclusion relationship: "xfs/xqm.h" -> "xfs/xfs.h" -> "xfs/linux.h". > The linux.h header introduces an inlined function that needs '_GNU_SOURCE' and <fcnctl.h>. > > $ git clone https://kernel.googlesource.com/pub/scm/fs/xfs/xfsprogs-dev <https://kernel.googlesource.com/pub/scm/fs/xfs/xfsprogs-dev> > $ cd xfsprogs-dev/ > $ git describe --contains 9d6023a856a1c4f84415dff59b0d5459cc8768db > v5.5.0-rc1~39 > > #if defined(FALLOC_FL_ZERO_RANGE) > static inline int > platform_zero_range( > int fd, > xfs_off_t start, > size_t len) > { > int ret; > > ret = fallocate(fd, FALLOC_FL_ZERO_RANGE, start, len); > if (!ret) > return 0; > return -errno; > } > #else > #define platform_zero_range(fd, s, l) (-EOPNOTSUPP) > #endif > > > My test version is based on 6.5 so contains the inlined function to build. > > # rpm -qf /usr/include/xfs/xqm.h > xfsprogs-devel-6.5.0-3.el10.x86_64 > > > > I know that some quotactl0[23].c define _GNU_SOURCE, but it's interesting that > this influence the header. Also, which RHEL (or whatever distro) version has > this problem? > > > The error occurred (with install xfsprogs-devel) during the configure script > checking struct fs_quota_statv. It failed to compile conftest.c and report > such errors: > > configure:5697: checking for struct fs_quota_statv > configure:5697: gcc -c -g -O2 conftest.c >&5 > In file included from /usr/include/xfs/xfs.h:9, > from /usr/include/xfs/xqm.h:9, > from conftest.c:138: > /usr/include/xfs/linux.h: In function 'platform_zero_range': > /usr/include/xfs/linux.h:188:15: error: implicit declaration of function 'fallocate' [-Wimplicit-function-declaration] > 188 | ret = fallocate(fd, FALLOC_FL_ZERO_RANGE, start, len); > | ^~~~~~~~~ > configure:5697: $? = 1 > > It similarly to the above quotactl07 patchfix, so adding '#define _GNU_SOURCE' > isactually formaking the fallocate()happy. > > Or, another way is the change made in "xfsprogs-dev/include/linux.h" otherwise we can't > configure our LTP correctly. > > > -- > Regards, > Li Wang > > > > -- > Regards, > Li Wang