Re: [PATCH v8 01/13] exfat: add in-memory and on-disk structures and headers

From: Pali RohÃr
Date: Thu Jan 02 2020 - 06:06:14 EST


Hello, just remainder for question below, so it would not be lost.

I guess that if comment for structure says that it needs to have exact
size then structure should be marked as packed to prevent any unexpected
paddings added by compiler (as IIRC compiler is free to add any padding
between any structure members).

On Sunday 29 December 2019 15:11:08 Pali RohÃr wrote:
> On Friday 20 December 2019 01:24:07 Namjae Jeon wrote:
> > +
> > +#define JUMP_BOOT_LEN 3
> > +#define OEM_NAME_LEN 8
> > +#define MUST_BE_ZERO_LEN 53
> > +#define EXFAT_FILE_NAME_LEN 15
> > +
> > +/* EXFAT BIOS parameter block (64 bytes) */
> > +struct bpb64 {
> > + __u8 jmp_boot[JUMP_BOOT_LEN];
> > + __u8 oem_name[OEM_NAME_LEN];
> > + __u8 res_zero[MUST_BE_ZERO_LEN];
> > +};
> > +
> > +/* EXFAT EXTEND BIOS parameter block (56 bytes) */
> > +struct bsx64 {
> > + __le64 vol_offset;
> > + __le64 vol_length;
> > + __le32 fat_offset;
> > + __le32 fat_length;
> > + __le32 clu_offset;
> > + __le32 clu_count;
> > + __le32 root_cluster;
> > + __le32 vol_serial;
> > + __u8 fs_version[2];
> > + __le16 vol_flags;
> > + __u8 sect_size_bits;
> > + __u8 sect_per_clus_bits;
> > + __u8 num_fats;
> > + __u8 phy_drv_no;
> > + __u8 perc_in_use;
> > + __u8 reserved2[7];
> > +};
>
> Should not be this structure marked as packed? Also those two below.
>
> > +/* EXFAT PBR[BPB+BSX] (120 bytes) */
> > +struct pbr64 {
> > + struct bpb64 bpb;
> > + struct bsx64 bsx;
> > +};
> > +
> > +/* Common PBR[Partition Boot Record] (512 bytes) */
> > +struct pbr {
> > + union {
> > + __u8 raw[64];
> > + struct bpb64 f64;
> > + } bpb;
> > + union {
> > + __u8 raw[56];
> > + struct bsx64 f64;
> > + } bsx;
> > + __u8 boot_code[390];
> > + __le16 signature;
> > +};
>

--
Pali RohÃr
pali.rohar@xxxxxxxxx