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

Li Wang
2024-06-19T12:08:48Z

cc Eric Sandeen <sandeen@redhat.com> who is the author of:

commit 9d6023a856a1c4f84415dff59b0d5459cc8768db
Author: Eric Sandeen <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> wrote:

> Hi Petr, XFS-Experts,
>
> On Wed, Jun 19, 2024 at 5:27 PM Petr Vorel <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
> $ 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 patch fix, so adding '#define
> _GNU_SOURCE'
> is actually for making 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