diff mbox

xfs_scrub: fix build with older kernel headers

Message ID 7ea1df02d0f2549b6249c8bee1f6ae02bf1251a9.1521925697.git.baruch@tkos.co.il (mailing list archive)
State Not Applicable
Headers show

Commit Message

Baruch Siach March 24, 2018, 9:08 p.m. UTC
The OVERRIDE_SYSTEM_FSXATTR macro in include/linux.h is meant to
override the linux/fs.h kernel header provided struct fsxattr for
kernels older than v4.7. A few source files include linux/fs.h before
the local linux.h, making this override ineffective. Remove these header
includes from the source files, and rely on the linux.h include alone.

This fixes the following build failures:

In file included from ../include/xfs.h:37:0,
                 from disk.c:40:
../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
 struct fsxattr {
        ^~~~~~~

In file included from ../include/xfs.h:37:0,
                 from ../include/project.h:22,
                 from ../include/input.h:24,
                 from phase1.c:38:
../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
 struct fsxattr {
        ^~~~~~~

Cc: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 scrub/disk.c   | 1 -
 scrub/phase1.c | 1 -
 2 files changed, 2 deletions(-)

Comments

Darrick J. Wong March 26, 2018, 6:09 p.m. UTC | #1
On Sun, Mar 25, 2018 at 12:08:17AM +0300, Baruch Siach wrote:
> The OVERRIDE_SYSTEM_FSXATTR macro in include/linux.h is meant to
> override the linux/fs.h kernel header provided struct fsxattr for
> kernels older than v4.7. A few source files include linux/fs.h before
> the local linux.h, making this override ineffective. Remove these header
> includes from the source files, and rely on the linux.h include alone.
> 
> This fixes the following build failures:
> 
> In file included from ../include/xfs.h:37:0,
>                  from disk.c:40:
> ../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
>  struct fsxattr {
>         ^~~~~~~
> 
> In file included from ../include/xfs.h:37:0,
>                  from ../include/project.h:22,
>                  from ../include/input.h:24,
>                  from phase1.c:38:
> ../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
>  struct fsxattr {
>         ^~~~~~~
> 
> Cc: Darrick J. Wong <darrick.wong@oracle.com>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Looks ok, but I think this is already fixed by commit a440f8773794
("xfs_scrub: fix #include ordering to avoid build failure") in for-next.

--D

> ---
>  scrub/disk.c   | 1 -
>  scrub/phase1.c | 1 -
>  2 files changed, 2 deletions(-)
> 
> diff --git a/scrub/disk.c b/scrub/disk.c
> index e12175c8656c..54d7a2a77c45 100644
> --- a/scrub/disk.c
> +++ b/scrub/disk.c
> @@ -28,7 +28,6 @@
>  #include <sys/ioctl.h>
>  #include <sys/statvfs.h>
>  #include <sys/vfs.h>
> -#include <linux/fs.h>
>  #ifdef HAVE_SG_IO
>  # include <scsi/sg.h>
>  #endif
> diff --git a/scrub/phase1.c b/scrub/phase1.c
> index 6cd544233c94..d15689e1b544 100644
> --- a/scrub/phase1.c
> +++ b/scrub/phase1.c
> @@ -32,7 +32,6 @@
>  #include <stdbool.h>
>  #include <pthread.h>
>  #include <errno.h>
> -#include <linux/fs.h>
>  #include "libfrog.h"
>  #include "workqueue.h"
>  #include "input.h"
> -- 
> 2.16.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Sandeen March 27, 2018, 1:44 a.m. UTC | #2
On 3/26/18 1:09 PM, Darrick J. Wong wrote:
> On Sun, Mar 25, 2018 at 12:08:17AM +0300, Baruch Siach wrote:
>> The OVERRIDE_SYSTEM_FSXATTR macro in include/linux.h is meant to
>> override the linux/fs.h kernel header provided struct fsxattr for
>> kernels older than v4.7. A few source files include linux/fs.h before
>> the local linux.h, making this override ineffective. Remove these header
>> includes from the source files, and rely on the linux.h include alone.
>>
>> This fixes the following build failures:
>>
>> In file included from ../include/xfs.h:37:0,
>>                  from disk.c:40:
>> ../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
>>  struct fsxattr {
>>         ^~~~~~~
>>
>> In file included from ../include/xfs.h:37:0,
>>                  from ../include/project.h:22,
>>                  from ../include/input.h:24,
>>                  from phase1.c:38:
>> ../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
>>  struct fsxattr {
>>         ^~~~~~~
>>
>> Cc: Darrick J. Wong <darrick.wong@oracle.com>
>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> 
> Looks ok, but I think this is already fixed by commit a440f8773794
> ("xfs_scrub: fix #include ordering to avoid build failure") in for-next.

Agreed, it looks like this is against master & not for-next;
Baruch, can you check out for-next and confirm that it's ok?

Thanks,
-Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Baruch Siach March 28, 2018, 8:07 p.m. UTC | #3
Hi Eric,

On Mon, Mar 26, 2018 at 08:44:46PM -0500, Eric Sandeen wrote:
> On 3/26/18 1:09 PM, Darrick J. Wong wrote:
> > On Sun, Mar 25, 2018 at 12:08:17AM +0300, Baruch Siach wrote:
> >> The OVERRIDE_SYSTEM_FSXATTR macro in include/linux.h is meant to
> >> override the linux/fs.h kernel header provided struct fsxattr for
> >> kernels older than v4.7. A few source files include linux/fs.h before
> >> the local linux.h, making this override ineffective. Remove these header
> >> includes from the source files, and rely on the linux.h include alone.
> >>
> >> This fixes the following build failures:
> >>
> >> In file included from ../include/xfs.h:37:0,
> >>                  from disk.c:40:
> >> ../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
> >>  struct fsxattr {
> >>         ^~~~~~~
> >>
> >> In file included from ../include/xfs.h:37:0,
> >>                  from ../include/project.h:22,
> >>                  from ../include/input.h:24,
> >>                  from phase1.c:38:
> >> ../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr'
> >>  struct fsxattr {
> >>         ^~~~~~~
> >>
> >> Cc: Darrick J. Wong <darrick.wong@oracle.com>
> >> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> > 
> > Looks ok, but I think this is already fixed by commit a440f8773794
> > ("xfs_scrub: fix #include ordering to avoid build failure") in for-next.
> 
> Agreed, it looks like this is against master & not for-next;
> Baruch, can you check out for-next and confirm that it's ok?

Yes. I verified that commit a440f8773794 (slightly modified to apply to 
v4.15.1) fixes build with the affected toolchain.

Thanks,
baruch
Eric Sandeen March 28, 2018, 8:12 p.m. UTC | #4
On 3/28/18 3:07 PM, Baruch Siach wrote:
> Hi Eric,
> 

...

> Yes. I verified that commit a440f8773794 (slightly modified to apply to 
> v4.15.1) fixes build with the affected toolchain.

Thank you!

-Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scrub/disk.c b/scrub/disk.c
index e12175c8656c..54d7a2a77c45 100644
--- a/scrub/disk.c
+++ b/scrub/disk.c
@@ -28,7 +28,6 @@ 
 #include <sys/ioctl.h>
 #include <sys/statvfs.h>
 #include <sys/vfs.h>
-#include <linux/fs.h>
 #ifdef HAVE_SG_IO
 # include <scsi/sg.h>
 #endif
diff --git a/scrub/phase1.c b/scrub/phase1.c
index 6cd544233c94..d15689e1b544 100644
--- a/scrub/phase1.c
+++ b/scrub/phase1.c
@@ -32,7 +32,6 @@ 
 #include <stdbool.h>
 #include <pthread.h>
 #include <errno.h>
-#include <linux/fs.h>
 #include "libfrog.h"
 #include "workqueue.h"
 #include "input.h"