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

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
Loading
Loading
Loading
Loading
+28 −24
Original line number Diff line number Diff line
@@ -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
@@ -31,32 +31,36 @@ struct adfs_direntry {
	__u8 dirlen[4];
	__u8 dirinddiscadd[3];
	__u8 newdiratts;
};
} __attribute__((packed));

/*
 * Directory tail
 */
union adfs_dirtail {
	struct {
		unsigned char dirlastmask;
struct adfs_olddirtail {
	__u8 dirlastmask;
	char dirname[10];
		unsigned char dirparent[3];
	__u8 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];
	__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];
		unsigned char endmasseq;
		unsigned char endname[4];
		unsigned char dircheckbyte;
	} new;
	__u8 endmasseq;
	__u8 endname[4];
	__u8 dircheckbyte;
} __attribute__((packed));

union adfs_dirtail {
	struct adfs_olddirtail old;
	struct adfs_newdirtail new;
};

#endif
+3 −3
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ struct adfs_bigdirheader {
	__le32	bigdirnamesize;
	__le32	bigdirparent;
	char	bigdirname[1];
};
} __attribute__((packed, aligned(4)));

struct adfs_bigdirentry {
	__le32	bigdirload;
@@ -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)));