Skip to content

Commit

Permalink
fs/adfs: dir: modernise on-disk directory structures
Browse files Browse the repository at this point in the history
Use __u8 and pack the structures for on-disk directories.

Signed-off-by: Russell King <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Russell King authored and Al Viro committed Jan 21, 2020
1 parent deed1bf commit ae5df41
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 27 deletions.
52 changes: 28 additions & 24 deletions fs/adfs/dir_f.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
* Directory header
*/
struct adfs_dirheader {
unsigned char startmasseq;
unsigned char startname[4];
};
__u8 startmasseq;
__u8 startname[4];
} __attribute__((packed));

#define ADFS_NEWDIR_SIZE 2048
#define ADFS_NUM_DIR_ENTRIES 77
Expand All @@ -31,32 +31,36 @@ struct adfs_direntry {
__u8 dirlen[4];
__u8 dirinddiscadd[3];
__u8 newdiratts;
};
} __attribute__((packed));

/*
* Directory tail
*/
struct adfs_olddirtail {
__u8 dirlastmask;
char dirname[10];
__u8 dirparent[3];
char dirtitle[19];
__u8 reserved[14];
__u8 endmasseq;
__u8 endname[4];
__u8 dircheckbyte;
} __attribute__((packed));

struct adfs_newdirtail {
__u8 dirlastmask;
__u8 reserved[2];
__u8 dirparent[3];
char dirtitle[19];
char dirname[10];
__u8 endmasseq;
__u8 endname[4];
__u8 dircheckbyte;
} __attribute__((packed));

union adfs_dirtail {
struct {
unsigned char dirlastmask;
char dirname[10];
unsigned char dirparent[3];
char dirtitle[19];
unsigned char reserved[14];
unsigned char endmasseq;
unsigned char endname[4];
unsigned char dircheckbyte;
} old;
struct {
unsigned char dirlastmask;
unsigned char reserved[2];
unsigned char dirparent[3];
char dirtitle[19];
char dirname[10];
unsigned char endmasseq;
unsigned char endname[4];
unsigned char dircheckbyte;
} new;
struct adfs_olddirtail old;
struct adfs_newdirtail new;
};

#endif
6 changes: 3 additions & 3 deletions fs/adfs/dir_fplus.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ struct adfs_bigdirheader {
__le32 bigdirnamesize;
__le32 bigdirparent;
char bigdirname[1];
};
} __attribute__((packed, aligned(4)));

struct adfs_bigdirentry {
__le32 bigdirload;
Expand All @@ -32,11 +32,11 @@ struct adfs_bigdirentry {
__le32 bigdirattr;
__le32 bigdirobnamelen;
__le32 bigdirobnameptr;
};
} __attribute__((packed, aligned(4)));

struct adfs_bigdirtail {
__le32 bigdirendname;
__u8 bigdirendmasseq;
__u8 reserved[2];
__u8 bigdircheckbyte;
};
} __attribute__((packed, aligned(4)));

0 comments on commit ae5df41

Please sign in to comment.