Re: [LTP] [PATCH] configure.ac: Add _GNU_SOURCE for struct fs_quota_statv check

Eric Sandeen
2024-06-19T15:50:38Z

On 6/19/24 7:08 AM, Li Wang wrote:
> cc Eric Sandeen <sandeen@redhat.com <mailto:sandeen@redhat.com>> 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@sandeen.net/

(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@redhat.com <mailto:sandeen@redhat.com>>
> 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@redhat.com <mailto:liwang@redhat.com>> wrote:
>
> Hi Petr, XFS-Experts,
>
> On Wed, Jun 19, 2024 at 5:27 PM Petr Vorel <pvorel@suse.cz <mailto:pvorel@suse.cz>> 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