xfs
[Top] [All Lists]

Re: [PATCH] fix dir2 shortform structures on ARM old ABI

To: xfs-oss <xfs@xxxxxxxxxxx>
Subject: Re: [PATCH] fix dir2 shortform structures on ARM old ABI
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Fri, 06 Jun 2008 09:15:52 -0500
Cc: Barry Naujok <bnaujok@xxxxxxx>
In-reply-to: <47E1D3C3.1050000@xxxxxxxxxxx>
References: <47DB4181.7040603@xxxxxxxxxxx> <47E1D3C3.1050000@xxxxxxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Thunderbird 2.0.0.14 (Macintosh/20080421)
Eric Sandeen wrote:
> Here's the userspace side.
> 

Just a reminder after Dave's reminder.  :)

-Eric

> -Eric
> 
> 
> Index: xfs-cmds/xfsprogs/include/platform_defs.h.in
> ===================================================================
> --- xfs-cmds.orig/xfsprogs/include/platform_defs.h.in
> +++ xfs-cmds/xfsprogs/include/platform_defs.h.in
> @@ -147,4 +147,11 @@ typedef unsigned long long __psunsigned_
>                                       | (minor&IRIX_DEV_MAXMIN)))
>  #define IRIX_DEV_TO_KDEVT(dev)       
> makedev(IRIX_DEV_MAJOR(dev),IRIX_DEV_MINOR(dev))
>  
> +/* ARM old ABI has some weird alignment/padding */
> +#if defined(__arm__) && !defined(__ARM_EABI__)
> +#define __arch_pack __attribute__((packed))
> +#else
> +#define __arch_pack
> +#endif
> +
>  #endif       /* __XFS_PLATFORM_DEFS_H__ */
> Index: xfs-cmds/xfsprogs/include/xfs_dir2_sf.h
> ===================================================================
> --- xfs-cmds.orig/xfsprogs/include/xfs_dir2_sf.h
> +++ xfs-cmds/xfsprogs/include/xfs_dir2_sf.h
> @@ -62,7 +62,7 @@ typedef union {
>   * Normalized offset (in a data block) of the entry, really 
> xfs_dir2_data_off_t.
>   * Only need 16 bits, this is the byte offset into the single block form.
>   */
> -typedef struct { __uint8_t i[2]; } xfs_dir2_sf_off_t;
> +typedef struct { __uint8_t i[2]; } __arch_pack xfs_dir2_sf_off_t;
>  
>  /*
>   * The parent directory has a dedicated field, and the self-pointer must
> @@ -76,14 +76,14 @@ typedef struct xfs_dir2_sf_hdr {
>       __uint8_t               count;          /* count of entries */
>       __uint8_t               i8count;        /* count of 8-byte inode #s */
>       xfs_dir2_inou_t         parent;         /* parent dir inode number */
> -} xfs_dir2_sf_hdr_t;
> +} __arch_pack xfs_dir2_sf_hdr_t;
>  
>  typedef struct xfs_dir2_sf_entry {
>       __uint8_t               namelen;        /* actual name length */
>       xfs_dir2_sf_off_t       offset;         /* saved offset */
>       __uint8_t               name[1];        /* name, variable size */
>       xfs_dir2_inou_t         inumber;        /* inode number, var. offset */
> -} xfs_dir2_sf_entry_t;
> +} __arch_pack xfs_dir2_sf_entry_t;
>  
>  typedef struct xfs_dir2_sf {
>       xfs_dir2_sf_hdr_t       hdr;            /* shortform header */
> 
> 
> 
> 
> 


<Prev in Thread] Current Thread [Next in Thread>