2017-08-16 14:44:29

by Cihangir Akturk

[permalink] [raw]
Subject: [PATCH] staging: lustre: fix structure size for ARM OABI

When building the kernel for the ARM architecture without setting
CONFIG_AEABI, size of struct lov_user_md_v3 and struct lov_mds_md_v3
differs, due to different alignment requirements of OABI and EABI.

Marking the anonymous union within struct lov_user_md_v3 as
'_packed' solves this issue. Otherwise we get the following
error:

drivers/staging/lustre/lustre/lov/lov_pack.c:352:2: note: in expansion
of macro ‘BUILD_BUG_ON’
BUILD_BUG_ON(sizeof(lum) != sizeof(struct lov_mds_md_v3));

Signed-off-by: Cihangir Akturk <[email protected]>
---
drivers/staging/lustre/lustre/include/lustre/lustre_user.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
index edff8dc..4f72cb6 100644
--- a/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
+++ b/drivers/staging/lustre/lustre/include/lustre/lustre_user.h
@@ -388,7 +388,7 @@ struct lov_user_md_v3 { /* LOV EA user data (host-endian) */
__u16 lmm_layout_gen; /* layout generation number
* used when reading
*/
- };
+ } __packed;
char lmm_pool_name[LOV_MAXPOOLNAME + 1]; /* pool name */
struct lov_user_ost_data_v1 lmm_objects[0]; /* per-stripe data */
} __packed;
--
2.7.4


2017-08-17 16:26:39

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] staging: lustre: fix structure size for ARM OABI

On Wed, Aug 16, 2017 at 05:44:15PM +0300, Cihangir Akturk wrote:
> When building the kernel for the ARM architecture without setting
> CONFIG_AEABI, size of struct lov_user_md_v3 and struct lov_mds_md_v3
> differs, due to different alignment requirements of OABI and EABI.
>
> Marking the anonymous union within struct lov_user_md_v3 as
> '_packed' solves this issue. Otherwise we get the following
> error:
>
> drivers/staging/lustre/lustre/lov/lov_pack.c:352:2: note: in expansion
> of macro ‘BUILD_BUG_ON’
> BUILD_BUG_ON(sizeof(lum) != sizeof(struct lov_mds_md_v3));
>
> Signed-off-by: Cihangir Akturk <[email protected]>
> ---
> drivers/staging/lustre/lustre/include/lustre/lustre_user.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

This file is no longer in the tree :(

thanks,

greg k-h

2017-08-18 23:58:00

by Dilger, Andreas

[permalink] [raw]
Subject: Re: [PATCH] staging: lustre: fix structure size for ARM OABI

On Aug 17, 2017, at 10:26, Greg KH <[email protected]> wrote:
>
> On Wed, Aug 16, 2017 at 05:44:15PM +0300, Cihangir Akturk wrote:
>> When building the kernel for the ARM architecture without setting
>> CONFIG_AEABI, size of struct lov_user_md_v3 and struct lov_mds_md_v3
>> differs, due to different alignment requirements of OABI and EABI.
>>
>> Marking the anonymous union within struct lov_user_md_v3 as
>> '_packed' solves this issue. Otherwise we get the following
>> error:
>>
>> drivers/staging/lustre/lustre/lov/lov_pack.c:352:2: note: in expansion
>> of macro ‘BUILD_BUG_ON’
>> BUILD_BUG_ON(sizeof(lum) != sizeof(struct lov_mds_md_v3));
>>
>> Signed-off-by: Cihangir Akturk <[email protected]>
>> ---
>> drivers/staging/lustre/lustre/include/lustre/lustre_user.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> This file is no longer in the tree :(

With James' recent patch series, this has moved to include/uapi/linux/lustre/lustre_user.h

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Intel Corporation








2017-08-20 02:52:34

by James Simmons

[permalink] [raw]
Subject: Re: [PATCH] staging: lustre: fix structure size for ARM OABI


> On Aug 17, 2017, at 10:26, Greg KH <[email protected]> wrote:
> >
> > On Wed, Aug 16, 2017 at 05:44:15PM +0300, Cihangir Akturk wrote:
> >> When building the kernel for the ARM architecture without setting
> >> CONFIG_AEABI, size of struct lov_user_md_v3 and struct lov_mds_md_v3
> >> differs, due to different alignment requirements of OABI and EABI.

I have to ask are you testing the lustre on ARM?

> >> Marking the anonymous union within struct lov_user_md_v3 as
> >> '_packed' solves this issue. Otherwise we get the following
> >> error:
> >>
> >> drivers/staging/lustre/lustre/lov/lov_pack.c:352:2: note: in expansion
> >> of macro ‘BUILD_BUG_ON’
> >> BUILD_BUG_ON(sizeof(lum) != sizeof(struct lov_mds_md_v3));
> >>
> >> Signed-off-by: Cihangir Akturk <[email protected]>
> >> ---
> >> drivers/staging/lustre/lustre/include/lustre/lustre_user.h | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > This file is no longer in the tree :(
>
> With James' recent patch series, this has moved to include/uapi/linux/lustre/lustre_user.h

BTW is __packed valid for UAPI headers?

2017-08-21 12:38:40

by Cihangir Akturk

[permalink] [raw]
Subject: Re: [PATCH] staging: lustre: fix structure size for ARM OABI

On Sun, Aug 20, 2017 at 03:52:26AM +0100, James Simmons wrote:
>
> > On Aug 17, 2017, at 10:26, Greg KH <[email protected]> wrote:
> > >
> > > On Wed, Aug 16, 2017 at 05:44:15PM +0300, Cihangir Akturk wrote:
> > >> When building the kernel for the ARM architecture without setting
> > >> CONFIG_AEABI, size of struct lov_user_md_v3 and struct lov_mds_md_v3
> > >> differs, due to different alignment requirements of OABI and EABI.
>
> I have to ask are you testing the lustre on ARM?

No, I was just compiling the kernel for ARM architecture, and I hit
this issue. If it's possible, I can give it a try with a bunch of
raspberry pis or another cheap board?

>
> > >> Marking the anonymous union within struct lov_user_md_v3 as
> > >> '_packed' solves this issue. Otherwise we get the following
> > >> error:
> > >>
> > >> drivers/staging/lustre/lustre/lov/lov_pack.c:352:2: note: in expansion
> > >> of macro ‘BUILD_BUG_ON’
> > >> BUILD_BUG_ON(sizeof(lum) != sizeof(struct lov_mds_md_v3));
> > >>
> > >> Signed-off-by: Cihangir Akturk <[email protected]>
> > >> ---
> > >> drivers/staging/lustre/lustre/include/lustre/lustre_user.h | 2 +-
> > >> 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > This file is no longer in the tree :(
> >
> > With James' recent patch series, this has moved to include/uapi/linux/lustre/lustre_user.h
>
> BTW is __packed valid for UAPI headers?