Commit ae5df413 authored by Russell King's avatar Russell King Committed by Al Viro

fs/adfs: dir: modernise on-disk directory structures

Use __u8 and pack the structures for on-disk directories.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent deed1bfd
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
* Directory header * Directory header
*/ */
struct adfs_dirheader { struct adfs_dirheader {
unsigned char startmasseq; __u8 startmasseq;
unsigned char startname[4]; __u8 startname[4];
}; } __attribute__((packed));
#define ADFS_NEWDIR_SIZE 2048 #define ADFS_NEWDIR_SIZE 2048
#define ADFS_NUM_DIR_ENTRIES 77 #define ADFS_NUM_DIR_ENTRIES 77
...@@ -31,32 +31,36 @@ struct adfs_direntry { ...@@ -31,32 +31,36 @@ struct adfs_direntry {
__u8 dirlen[4]; __u8 dirlen[4];
__u8 dirinddiscadd[3]; __u8 dirinddiscadd[3];
__u8 newdiratts; __u8 newdiratts;
}; } __attribute__((packed));
/* /*
* Directory tail * 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 { union adfs_dirtail {
struct { struct adfs_olddirtail old;
unsigned char dirlastmask; struct adfs_newdirtail new;
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;
}; };
#endif #endif
...@@ -22,7 +22,7 @@ struct adfs_bigdirheader { ...@@ -22,7 +22,7 @@ struct adfs_bigdirheader {
__le32 bigdirnamesize; __le32 bigdirnamesize;
__le32 bigdirparent; __le32 bigdirparent;
char bigdirname[1]; char bigdirname[1];
}; } __attribute__((packed, aligned(4)));
struct adfs_bigdirentry { struct adfs_bigdirentry {
__le32 bigdirload; __le32 bigdirload;
...@@ -32,11 +32,11 @@ struct adfs_bigdirentry { ...@@ -32,11 +32,11 @@ struct adfs_bigdirentry {
__le32 bigdirattr; __le32 bigdirattr;
__le32 bigdirobnamelen; __le32 bigdirobnamelen;
__le32 bigdirobnameptr; __le32 bigdirobnameptr;
}; } __attribute__((packed, aligned(4)));
struct adfs_bigdirtail { struct adfs_bigdirtail {
__le32 bigdirendname; __le32 bigdirendname;
__u8 bigdirendmasseq; __u8 bigdirendmasseq;
__u8 reserved[2]; __u8 reserved[2];
__u8 bigdircheckbyte; __u8 bigdircheckbyte;
}; } __attribute__((packed, aligned(4)));
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment