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

Li Wang liwang@redhat.com
Wed Jun 19 14:05:44 CEST 2024


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


More information about the ltp mailing list