Message ID | 20190304193723.657089-1-arnd@arndb.de |
---|---|
State | New |
Headers | show |
Series | xfs: mark xfs_dir2_sf_entry_t as __packed again | expand |
On Mon, Mar 04, 2019 at 08:36:47PM +0100, Arnd Bergmann wrote: > For ARM OABI builds, we run into a compile time assertion: > > inlined from 'init_xfs_fs' at /git/arm-soc/fs/xfs/xfs_super.c:1991:2: > fs/xfs/xfs_ondisk.h:119:208: error: call to '__compiletime_assert_119' declared with attribute error: XFS: sizeof(xfs_dir2_sf_entry_t) is wrong, expected 3 > > While ARM OABI is pretty much dead and fails to build for typical > configurations on modern architectures (ARMv6 or higher), and has > been declared deprecated in user space since gcc-4.6, the kernel > still allows it to used for building the kernel. > > In commit 8353a649f577 ("xfs: kill xfs_dir2_sf_off_t"), Christoph > removed the old __arch_pack annotation that made it possible to > build xfs with oddball ABIs. However, OABI not only requrires > padding around short structure but still adds padding after this > change. There is no harm to unconditionally mark the structure as > __packed now, and that will do the right thing here. > > As of commit aa2dd0ad4d6d ("xfs: remove __arch_pack"), we need to > use __packed here as well, instead of the old __arch_pack. I don't think we want more __packed attributes than required. Given how dead OABI is can we just have XFS depend on !OABI?
diff --git a/fs/xfs/libxfs/xfs_da_format.h b/fs/xfs/libxfs/xfs_da_format.h index ae654e06b2fb..fa8f07451d39 100644 --- a/fs/xfs/libxfs/xfs_da_format.h +++ b/fs/xfs/libxfs/xfs_da_format.h @@ -230,7 +230,7 @@ typedef struct xfs_dir2_sf_entry { * A 64-bit or 32-bit inode number follows here, at a variable offset * after the name. */ -} xfs_dir2_sf_entry_t; +} __packed xfs_dir2_sf_entry_t; static inline int xfs_dir2_sf_hdr_size(int i8count) {
For ARM OABI builds, we run into a compile time assertion: inlined from 'init_xfs_fs' at /git/arm-soc/fs/xfs/xfs_super.c:1991:2: fs/xfs/xfs_ondisk.h:119:208: error: call to '__compiletime_assert_119' declared with attribute error: XFS: sizeof(xfs_dir2_sf_entry_t) is wrong, expected 3 While ARM OABI is pretty much dead and fails to build for typical configurations on modern architectures (ARMv6 or higher), and has been declared deprecated in user space since gcc-4.6, the kernel still allows it to used for building the kernel. In commit 8353a649f577 ("xfs: kill xfs_dir2_sf_off_t"), Christoph removed the old __arch_pack annotation that made it possible to build xfs with oddball ABIs. However, OABI not only requrires padding around short structure but still adds padding after this change. There is no harm to unconditionally mark the structure as __packed now, and that will do the right thing here. As of commit aa2dd0ad4d6d ("xfs: remove __arch_pack"), we need to use __packed here as well, instead of the old __arch_pack. Fixes: 8353a649f577 ("xfs: kill xfs_dir2_sf_off_t") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- fs/xfs/libxfs/xfs_da_format.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.20.0