Commit 3cae3cfd authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] ext2 endianness annotations

Signed-off-by: default avatarAl Viro <viro@parcelfarce.linux.org.uk>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 5d7b32de
...@@ -10,18 +10,18 @@ ...@@ -10,18 +10,18 @@
#define EXT2_ACL_MAX_ENTRIES 32 #define EXT2_ACL_MAX_ENTRIES 32
typedef struct { typedef struct {
__u16 e_tag; __le16 e_tag;
__u16 e_perm; __le16 e_perm;
__u32 e_id; __le32 e_id;
} ext2_acl_entry; } ext2_acl_entry;
typedef struct { typedef struct {
__u16 e_tag; __le16 e_tag;
__u16 e_perm; __le16 e_perm;
} ext2_acl_entry_short; } ext2_acl_entry_short;
typedef struct { typedef struct {
__u32 a_version; __le32 a_version;
} ext2_acl_header; } ext2_acl_header;
static inline size_t ext2_acl_size(int count) static inline size_t ext2_acl_size(int count)
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* second extended file system inode data in memory * second extended file system inode data in memory
*/ */
struct ext2_inode_info { struct ext2_inode_info {
__u32 i_data[15]; __le32 i_data[15];
__u32 i_flags; __u32 i_flags;
__u32 i_faddr; __u32 i_faddr;
__u8 i_frag_no; __u8 i_frag_no;
......
...@@ -142,12 +142,12 @@ static int ext2_alloc_block (struct inode * inode, unsigned long goal, int *err) ...@@ -142,12 +142,12 @@ static int ext2_alloc_block (struct inode * inode, unsigned long goal, int *err)
} }
typedef struct { typedef struct {
u32 *p; __le32 *p;
u32 key; __le32 key;
struct buffer_head *bh; struct buffer_head *bh;
} Indirect; } Indirect;
static inline void add_chain(Indirect *p, struct buffer_head *bh, u32 *v) static inline void add_chain(Indirect *p, struct buffer_head *bh, __le32 *v)
{ {
p->key = *(p->p = v); p->key = *(p->p = v);
p->bh = bh; p->bh = bh;
...@@ -280,7 +280,7 @@ static Indirect *ext2_get_branch(struct inode *inode, ...@@ -280,7 +280,7 @@ static Indirect *ext2_get_branch(struct inode *inode,
read_lock(&EXT2_I(inode)->i_meta_lock); read_lock(&EXT2_I(inode)->i_meta_lock);
if (!verify_chain(chain, p)) if (!verify_chain(chain, p))
goto changed; goto changed;
add_chain(++p, bh, (u32*)bh->b_data + *++offsets); add_chain(++p, bh, (__le32*)bh->b_data + *++offsets);
read_unlock(&EXT2_I(inode)->i_meta_lock); read_unlock(&EXT2_I(inode)->i_meta_lock);
if (!p->key) if (!p->key)
goto no_block; goto no_block;
...@@ -321,8 +321,8 @@ static Indirect *ext2_get_branch(struct inode *inode, ...@@ -321,8 +321,8 @@ static Indirect *ext2_get_branch(struct inode *inode,
static unsigned long ext2_find_near(struct inode *inode, Indirect *ind) static unsigned long ext2_find_near(struct inode *inode, Indirect *ind)
{ {
struct ext2_inode_info *ei = EXT2_I(inode); struct ext2_inode_info *ei = EXT2_I(inode);
u32 *start = ind->bh ? (u32*) ind->bh->b_data : ei->i_data; __le32 *start = ind->bh ? (__le32 *) ind->bh->b_data : ei->i_data;
u32 *p; __le32 *p;
unsigned long bg_start; unsigned long bg_start;
unsigned long colour; unsigned long colour;
...@@ -440,7 +440,7 @@ static int ext2_alloc_branch(struct inode *inode, ...@@ -440,7 +440,7 @@ static int ext2_alloc_branch(struct inode *inode,
lock_buffer(bh); lock_buffer(bh);
memset(bh->b_data, 0, blocksize); memset(bh->b_data, 0, blocksize);
branch[n].bh = bh; branch[n].bh = bh;
branch[n].p = (u32*) bh->b_data + offsets[n]; branch[n].p = (__le32 *) bh->b_data + offsets[n];
*branch[n].p = branch[n].key; *branch[n].p = branch[n].key;
set_buffer_uptodate(bh); set_buffer_uptodate(bh);
unlock_buffer(bh); unlock_buffer(bh);
...@@ -702,7 +702,7 @@ struct address_space_operations ext2_nobh_aops = { ...@@ -702,7 +702,7 @@ struct address_space_operations ext2_nobh_aops = {
* or memcmp with zero_page, whatever is better for particular architecture. * or memcmp with zero_page, whatever is better for particular architecture.
* Linus? * Linus?
*/ */
static inline int all_zeroes(u32 *p, u32 *q) static inline int all_zeroes(__le32 *p, __le32 *q)
{ {
while (p < q) while (p < q)
if (*p++) if (*p++)
...@@ -748,7 +748,7 @@ static Indirect *ext2_find_shared(struct inode *inode, ...@@ -748,7 +748,7 @@ static Indirect *ext2_find_shared(struct inode *inode,
int depth, int depth,
int offsets[4], int offsets[4],
Indirect chain[4], Indirect chain[4],
u32 *top) __le32 *top)
{ {
Indirect *partial, *p; Indirect *partial, *p;
int k, err; int k, err;
...@@ -768,7 +768,7 @@ static Indirect *ext2_find_shared(struct inode *inode, ...@@ -768,7 +768,7 @@ static Indirect *ext2_find_shared(struct inode *inode,
write_unlock(&EXT2_I(inode)->i_meta_lock); write_unlock(&EXT2_I(inode)->i_meta_lock);
goto no_top; goto no_top;
} }
for (p=partial; p>chain && all_zeroes((u32*)p->bh->b_data,p->p); p--) for (p=partial; p>chain && all_zeroes((__le32*)p->bh->b_data,p->p); p--)
; ;
/* /*
* OK, we've found the last block that must survive. The rest of our * OK, we've found the last block that must survive. The rest of our
...@@ -803,7 +803,7 @@ static Indirect *ext2_find_shared(struct inode *inode, ...@@ -803,7 +803,7 @@ static Indirect *ext2_find_shared(struct inode *inode,
* stored as little-endian 32-bit) and updating @inode->i_blocks * stored as little-endian 32-bit) and updating @inode->i_blocks
* appropriately. * appropriately.
*/ */
static inline void ext2_free_data(struct inode *inode, u32 *p, u32 *q) static inline void ext2_free_data(struct inode *inode, __le32 *p, __le32 *q)
{ {
unsigned long block_to_free = 0, count = 0; unsigned long block_to_free = 0, count = 0;
unsigned long nr; unsigned long nr;
...@@ -843,7 +843,7 @@ static inline void ext2_free_data(struct inode *inode, u32 *p, u32 *q) ...@@ -843,7 +843,7 @@ static inline void ext2_free_data(struct inode *inode, u32 *p, u32 *q)
* stored as little-endian 32-bit) and updating @inode->i_blocks * stored as little-endian 32-bit) and updating @inode->i_blocks
* appropriately. * appropriately.
*/ */
static void ext2_free_branches(struct inode *inode, u32 *p, u32 *q, int depth) static void ext2_free_branches(struct inode *inode, __le32 *p, __le32 *q, int depth)
{ {
struct buffer_head * bh; struct buffer_head * bh;
unsigned long nr; unsigned long nr;
...@@ -867,8 +867,8 @@ static void ext2_free_branches(struct inode *inode, u32 *p, u32 *q, int depth) ...@@ -867,8 +867,8 @@ static void ext2_free_branches(struct inode *inode, u32 *p, u32 *q, int depth)
continue; continue;
} }
ext2_free_branches(inode, ext2_free_branches(inode,
(u32*)bh->b_data, (__le32*)bh->b_data,
(u32*)bh->b_data + addr_per_block, (__le32*)bh->b_data + addr_per_block,
depth); depth);
bforget(bh); bforget(bh);
ext2_free_blocks(inode, nr, 1); ext2_free_blocks(inode, nr, 1);
...@@ -880,12 +880,12 @@ static void ext2_free_branches(struct inode *inode, u32 *p, u32 *q, int depth) ...@@ -880,12 +880,12 @@ static void ext2_free_branches(struct inode *inode, u32 *p, u32 *q, int depth)
void ext2_truncate (struct inode * inode) void ext2_truncate (struct inode * inode)
{ {
u32 *i_data = EXT2_I(inode)->i_data; __le32 *i_data = EXT2_I(inode)->i_data;
int addr_per_block = EXT2_ADDR_PER_BLOCK(inode->i_sb); int addr_per_block = EXT2_ADDR_PER_BLOCK(inode->i_sb);
int offsets[4]; int offsets[4];
Indirect chain[4]; Indirect chain[4];
Indirect *partial; Indirect *partial;
int nr = 0; __le32 nr = 0;
int n; int n;
long iblock; long iblock;
unsigned blocksize; unsigned blocksize;
...@@ -933,7 +933,7 @@ void ext2_truncate (struct inode * inode) ...@@ -933,7 +933,7 @@ void ext2_truncate (struct inode * inode)
while (partial > chain) { while (partial > chain) {
ext2_free_branches(inode, ext2_free_branches(inode,
partial->p + 1, partial->p + 1,
(u32*)partial->bh->b_data + addr_per_block, (__le32*)partial->bh->b_data+addr_per_block,
(chain+n-1) - partial); (chain+n-1) - partial);
mark_buffer_dirty_inode(partial->bh, inode); mark_buffer_dirty_inode(partial->bh, inode);
brelse (partial->bh); brelse (partial->bh);
......
...@@ -113,7 +113,7 @@ static void ext2_put_super (struct super_block * sb) ...@@ -113,7 +113,7 @@ static void ext2_put_super (struct super_block * sb)
if (!(sb->s_flags & MS_RDONLY)) { if (!(sb->s_flags & MS_RDONLY)) {
struct ext2_super_block *es = sbi->s_es; struct ext2_super_block *es = sbi->s_es;
es->s_state = le16_to_cpu(sbi->s_mount_state); es->s_state = cpu_to_le16(sbi->s_mount_state);
ext2_sync_super(sb, es); ext2_sync_super(sb, es);
} }
db_count = sbi->s_gdb_count; db_count = sbi->s_gdb_count;
...@@ -428,8 +428,8 @@ static int ext2_setup_super (struct super_block * sb, ...@@ -428,8 +428,8 @@ static int ext2_setup_super (struct super_block * sb,
(le32_to_cpu(es->s_lastcheck) + le32_to_cpu(es->s_checkinterval) <= get_seconds())) (le32_to_cpu(es->s_lastcheck) + le32_to_cpu(es->s_checkinterval) <= get_seconds()))
printk ("EXT2-fs warning: checktime reached, " printk ("EXT2-fs warning: checktime reached, "
"running e2fsck is recommended\n"); "running e2fsck is recommended\n");
if (!(__s16) le16_to_cpu(es->s_max_mnt_count)) if (!le16_to_cpu(es->s_max_mnt_count))
es->s_max_mnt_count = (__s16) cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT); es->s_max_mnt_count = cpu_to_le16(EXT2_DFL_MAX_MNT_COUNT);
es->s_mnt_count=cpu_to_le16(le16_to_cpu(es->s_mnt_count) + 1); es->s_mnt_count=cpu_to_le16(le16_to_cpu(es->s_mnt_count) + 1);
ext2_write_super(sb); ext2_write_super(sb);
if (test_opt (sb, DEBUG)) if (test_opt (sb, DEBUG))
...@@ -551,7 +551,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent) ...@@ -551,7 +551,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
int blocksize = BLOCK_SIZE; int blocksize = BLOCK_SIZE;
int db_count; int db_count;
int i, j; int i, j;
__u32 features; __le32 features;
sbi = kmalloc(sizeof(*sbi), GFP_KERNEL); sbi = kmalloc(sizeof(*sbi), GFP_KERNEL);
if (!sbi) if (!sbi)
...@@ -675,7 +675,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent) ...@@ -675,7 +675,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
} }
es = (struct ext2_super_block *) (((char *)bh->b_data) + offset); es = (struct ext2_super_block *) (((char *)bh->b_data) + offset);
sbi->s_es = es; sbi->s_es = es;
if (es->s_magic != le16_to_cpu(EXT2_SUPER_MAGIC)) { if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
printk ("EXT2-fs: Magic mismatch, very weird !\n"); printk ("EXT2-fs: Magic mismatch, very weird !\n");
goto failed_mount; goto failed_mount;
} }
...@@ -918,7 +918,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data) ...@@ -918,7 +918,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
es->s_state = cpu_to_le16(sbi->s_mount_state); es->s_state = cpu_to_le16(sbi->s_mount_state);
es->s_mtime = cpu_to_le32(get_seconds()); es->s_mtime = cpu_to_le32(get_seconds());
} else { } else {
__u32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb, __le32 ret = EXT2_HAS_RO_COMPAT_FEATURE(sb,
~EXT2_FEATURE_RO_COMPAT_SUPP); ~EXT2_FEATURE_RO_COMPAT_SUPP);
if (ret) { if (ret) {
printk("EXT2-fs: %s: couldn't remount RDWR because of " printk("EXT2-fs: %s: couldn't remount RDWR because of "
......
...@@ -1071,7 +1071,7 @@ static inline void ext2_xattr_hash_entry(struct ext2_xattr_header *header, ...@@ -1071,7 +1071,7 @@ static inline void ext2_xattr_hash_entry(struct ext2_xattr_header *header,
} }
if (entry->e_value_block == 0 && entry->e_value_size != 0) { if (entry->e_value_block == 0 && entry->e_value_size != 0) {
__u32 *value = (__u32 *)((char *)header + __le32 *value = (__le32 *)((char *)header +
le16_to_cpu(entry->e_value_offs)); le16_to_cpu(entry->e_value_offs));
for (n = (le32_to_cpu(entry->e_value_size) + for (n = (le32_to_cpu(entry->e_value_size) +
EXT2_XATTR_ROUND) >> EXT2_XATTR_PAD_BITS; n; n--) { EXT2_XATTR_ROUND) >> EXT2_XATTR_PAD_BITS; n; n--) {
......
...@@ -26,20 +26,20 @@ ...@@ -26,20 +26,20 @@
#define EXT2_XATTR_INDEX_SECURITY 6 #define EXT2_XATTR_INDEX_SECURITY 6
struct ext2_xattr_header { struct ext2_xattr_header {
__u32 h_magic; /* magic number for identification */ __le32 h_magic; /* magic number for identification */
__u32 h_refcount; /* reference count */ __le32 h_refcount; /* reference count */
__u32 h_blocks; /* number of disk blocks used */ __le32 h_blocks; /* number of disk blocks used */
__u32 h_hash; /* hash value of all attributes */ __le32 h_hash; /* hash value of all attributes */
__u32 h_reserved[4]; /* zero right now */ __u32 h_reserved[4]; /* zero right now */
}; };
struct ext2_xattr_entry { struct ext2_xattr_entry {
__u8 e_name_len; /* length of name */ __u8 e_name_len; /* length of name */
__u8 e_name_index; /* attribute name index */ __u8 e_name_index; /* attribute name index */
__u16 e_value_offs; /* offset in disk block of value */ __le16 e_value_offs; /* offset in disk block of value */
__u32 e_value_block; /* disk block attribute is stored on (n/i) */ __le32 e_value_block; /* disk block attribute is stored on (n/i) */
__u32 e_value_size; /* size of attribute value */ __le32 e_value_size; /* size of attribute value */
__u32 e_hash; /* hash value of name and value */ __le32 e_hash; /* hash value of name and value */
char e_name[0]; /* attribute name */ char e_name[0]; /* attribute name */
}; };
......
...@@ -135,14 +135,14 @@ static inline struct ext2_sb_info *EXT2_SB(struct super_block *sb) ...@@ -135,14 +135,14 @@ static inline struct ext2_sb_info *EXT2_SB(struct super_block *sb)
*/ */
struct ext2_group_desc struct ext2_group_desc
{ {
__u32 bg_block_bitmap; /* Blocks bitmap block */ __le32 bg_block_bitmap; /* Blocks bitmap block */
__u32 bg_inode_bitmap; /* Inodes bitmap block */ __le32 bg_inode_bitmap; /* Inodes bitmap block */
__u32 bg_inode_table; /* Inodes table block */ __le32 bg_inode_table; /* Inodes table block */
__u16 bg_free_blocks_count; /* Free blocks count */ __le16 bg_free_blocks_count; /* Free blocks count */
__u16 bg_free_inodes_count; /* Free inodes count */ __le16 bg_free_inodes_count; /* Free inodes count */
__u16 bg_used_dirs_count; /* Directories count */ __le16 bg_used_dirs_count; /* Directories count */
__u16 bg_pad; __le16 bg_pad;
__u32 bg_reserved[3]; __le32 bg_reserved[3];
}; };
/* /*
...@@ -209,49 +209,49 @@ struct ext2_group_desc ...@@ -209,49 +209,49 @@ struct ext2_group_desc
* Structure of an inode on the disk * Structure of an inode on the disk
*/ */
struct ext2_inode { struct ext2_inode {
__u16 i_mode; /* File mode */ __le16 i_mode; /* File mode */
__u16 i_uid; /* Low 16 bits of Owner Uid */ __le16 i_uid; /* Low 16 bits of Owner Uid */
__u32 i_size; /* Size in bytes */ __le32 i_size; /* Size in bytes */
__u32 i_atime; /* Access time */ __le32 i_atime; /* Access time */
__u32 i_ctime; /* Creation time */ __le32 i_ctime; /* Creation time */
__u32 i_mtime; /* Modification time */ __le32 i_mtime; /* Modification time */
__u32 i_dtime; /* Deletion Time */ __le32 i_dtime; /* Deletion Time */
__u16 i_gid; /* Low 16 bits of Group Id */ __le16 i_gid; /* Low 16 bits of Group Id */
__u16 i_links_count; /* Links count */ __le16 i_links_count; /* Links count */
__u32 i_blocks; /* Blocks count */ __le32 i_blocks; /* Blocks count */
__u32 i_flags; /* File flags */ __le32 i_flags; /* File flags */
union { union {
struct { struct {
__u32 l_i_reserved1; __le32 l_i_reserved1;
} linux1; } linux1;
struct { struct {
__u32 h_i_translator; __le32 h_i_translator;
} hurd1; } hurd1;
struct { struct {
__u32 m_i_reserved1; __le32 m_i_reserved1;
} masix1; } masix1;
} osd1; /* OS dependent 1 */ } osd1; /* OS dependent 1 */
__u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ __le32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
__u32 i_generation; /* File version (for NFS) */ __le32 i_generation; /* File version (for NFS) */
__u32 i_file_acl; /* File ACL */ __le32 i_file_acl; /* File ACL */
__u32 i_dir_acl; /* Directory ACL */ __le32 i_dir_acl; /* Directory ACL */
__u32 i_faddr; /* Fragment address */ __le32 i_faddr; /* Fragment address */
union { union {
struct { struct {
__u8 l_i_frag; /* Fragment number */ __u8 l_i_frag; /* Fragment number */
__u8 l_i_fsize; /* Fragment size */ __u8 l_i_fsize; /* Fragment size */
__u16 i_pad1; __u16 i_pad1;
__u16 l_i_uid_high; /* these 2 fields */ __le16 l_i_uid_high; /* these 2 fields */
__u16 l_i_gid_high; /* were reserved2[0] */ __le16 l_i_gid_high; /* were reserved2[0] */
__u32 l_i_reserved2; __u32 l_i_reserved2;
} linux2; } linux2;
struct { struct {
__u8 h_i_frag; /* Fragment number */ __u8 h_i_frag; /* Fragment number */
__u8 h_i_fsize; /* Fragment size */ __u8 h_i_fsize; /* Fragment size */
__u16 h_i_mode_high; __le16 h_i_mode_high;
__u16 h_i_uid_high; __le16 h_i_uid_high;
__u16 h_i_gid_high; __le16 h_i_gid_high;
__u32 h_i_author; __le32 h_i_author;
} hurd2; } hurd2;
struct { struct {
__u8 m_i_frag; /* Fragment number */ __u8 m_i_frag; /* Fragment number */
...@@ -335,31 +335,31 @@ struct ext2_inode { ...@@ -335,31 +335,31 @@ struct ext2_inode {
* Structure of the super block * Structure of the super block
*/ */
struct ext2_super_block { struct ext2_super_block {
__u32 s_inodes_count; /* Inodes count */ __le32 s_inodes_count; /* Inodes count */
__u32 s_blocks_count; /* Blocks count */ __le32 s_blocks_count; /* Blocks count */
__u32 s_r_blocks_count; /* Reserved blocks count */ __le32 s_r_blocks_count; /* Reserved blocks count */
__u32 s_free_blocks_count; /* Free blocks count */ __le32 s_free_blocks_count; /* Free blocks count */
__u32 s_free_inodes_count; /* Free inodes count */ __le32 s_free_inodes_count; /* Free inodes count */
__u32 s_first_data_block; /* First Data Block */ __le32 s_first_data_block; /* First Data Block */
__u32 s_log_block_size; /* Block size */ __le32 s_log_block_size; /* Block size */
__s32 s_log_frag_size; /* Fragment size */ __le32 s_log_frag_size; /* Fragment size */
__u32 s_blocks_per_group; /* # Blocks per group */ __le32 s_blocks_per_group; /* # Blocks per group */
__u32 s_frags_per_group; /* # Fragments per group */ __le32 s_frags_per_group; /* # Fragments per group */
__u32 s_inodes_per_group; /* # Inodes per group */ __le32 s_inodes_per_group; /* # Inodes per group */
__u32 s_mtime; /* Mount time */ __le32 s_mtime; /* Mount time */
__u32 s_wtime; /* Write time */ __le32 s_wtime; /* Write time */
__u16 s_mnt_count; /* Mount count */ __le16 s_mnt_count; /* Mount count */
__s16 s_max_mnt_count; /* Maximal mount count */ __le16 s_max_mnt_count; /* Maximal mount count */
__u16 s_magic; /* Magic signature */ __le16 s_magic; /* Magic signature */
__u16 s_state; /* File system state */ __le16 s_state; /* File system state */
__u16 s_errors; /* Behaviour when detecting errors */ __le16 s_errors; /* Behaviour when detecting errors */
__u16 s_minor_rev_level; /* minor revision level */ __le16 s_minor_rev_level; /* minor revision level */
__u32 s_lastcheck; /* time of last check */ __le32 s_lastcheck; /* time of last check */
__u32 s_checkinterval; /* max. time between checks */ __le32 s_checkinterval; /* max. time between checks */
__u32 s_creator_os; /* OS */ __le32 s_creator_os; /* OS */
__u32 s_rev_level; /* Revision level */ __le32 s_rev_level; /* Revision level */
__u16 s_def_resuid; /* Default uid for reserved blocks */ __le16 s_def_resuid; /* Default uid for reserved blocks */
__u16 s_def_resgid; /* Default gid for reserved blocks */ __le16 s_def_resgid; /* Default gid for reserved blocks */
/* /*
* These fields are for EXT2_DYNAMIC_REV superblocks only. * These fields are for EXT2_DYNAMIC_REV superblocks only.
* *
...@@ -373,16 +373,16 @@ struct ext2_super_block { ...@@ -373,16 +373,16 @@ struct ext2_super_block {
* feature set, it must abort and not try to meddle with * feature set, it must abort and not try to meddle with
* things it doesn't understand... * things it doesn't understand...
*/ */
__u32 s_first_ino; /* First non-reserved inode */ __le32 s_first_ino; /* First non-reserved inode */
__u16 s_inode_size; /* size of inode structure */ __le16 s_inode_size; /* size of inode structure */
__u16 s_block_group_nr; /* block group # of this superblock */ __le16 s_block_group_nr; /* block group # of this superblock */
__u32 s_feature_compat; /* compatible feature set */ __le32 s_feature_compat; /* compatible feature set */
__u32 s_feature_incompat; /* incompatible feature set */ __le32 s_feature_incompat; /* incompatible feature set */
__u32 s_feature_ro_compat; /* readonly-compatible feature set */ __le32 s_feature_ro_compat; /* readonly-compatible feature set */
__u8 s_uuid[16]; /* 128-bit uuid for volume */ __u8 s_uuid[16]; /* 128-bit uuid for volume */
char s_volume_name[16]; /* volume name */ char s_volume_name[16]; /* volume name */
char s_last_mounted[64]; /* directory where last mounted */ char s_last_mounted[64]; /* directory where last mounted */
__u32 s_algorithm_usage_bitmap; /* For compression */ __le32 s_algorithm_usage_bitmap; /* For compression */
/* /*
* Performance hints. Directory preallocation should only * Performance hints. Directory preallocation should only
* happen if the EXT2_COMPAT_PREALLOC flag is on. * happen if the EXT2_COMPAT_PREALLOC flag is on.
...@@ -401,8 +401,8 @@ struct ext2_super_block { ...@@ -401,8 +401,8 @@ struct ext2_super_block {
__u8 s_def_hash_version; /* Default hash version to use */ __u8 s_def_hash_version; /* Default hash version to use */
__u8 s_reserved_char_pad; __u8 s_reserved_char_pad;
__u16 s_reserved_word_pad; __u16 s_reserved_word_pad;
__u32 s_default_mount_opts; __le32 s_default_mount_opts;
__u32 s_first_meta_bg; /* First metablock block group */ __le32 s_first_meta_bg; /* First metablock block group */
__u32 s_reserved[190]; /* Padding to the end of the block */ __u32 s_reserved[190]; /* Padding to the end of the block */
}; };
...@@ -504,9 +504,9 @@ struct ext2_super_block { ...@@ -504,9 +504,9 @@ struct ext2_super_block {
#define EXT2_NAME_LEN 255 #define EXT2_NAME_LEN 255
struct ext2_dir_entry { struct ext2_dir_entry {
__u32 inode; /* Inode number */ __le32 inode; /* Inode number */
__u16 rec_len; /* Directory entry length */ __le16 rec_len; /* Directory entry length */
__u16 name_len; /* Name length */ __le16 name_len; /* Name length */
char name[EXT2_NAME_LEN]; /* File name */ char name[EXT2_NAME_LEN]; /* File name */
}; };
...@@ -517,8 +517,8 @@ struct ext2_dir_entry { ...@@ -517,8 +517,8 @@ struct ext2_dir_entry {
* file_type field. * file_type field.
*/ */
struct ext2_dir_entry_2 { struct ext2_dir_entry_2 {
__u32 inode; /* Inode number */ __le32 inode; /* Inode number */
__u16 rec_len; /* Directory entry length */ __le16 rec_len; /* Directory entry length */
__u8 name_len; /* Name length */ __u8 name_len; /* Name length */
__u8 file_type; __u8 file_type;
char name[EXT2_NAME_LEN]; /* File name */ char name[EXT2_NAME_LEN]; /* File name */
......
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