48-bit block number for ACL in e2fsprogs
RFC PATCH 11/11 48-bit block number for ACL in e2fsprogs
This patch is intended to contain the changes to support 48-bit block numbers for ACL. For now, it only contains modifications in the inode structure. It has to be completed.
Andreas proposed to rename i_file_acl to i_file_ea and i_file_acl_high to i_file_ea_hi.
ext2_fs.h | 10 ++++++---- swapfs.c | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-)
lib/ext2fs/ext2_fs.h +6 -4
@@ -336,7 +336,7 @@ struct ext2_inode {union {struct {__u16 l_i_blocks_hi; -__u16 i_pad1; +__u16 l_i_file_acl_high;__u16 l_i_uid_high;/* these 2 fields */ __u16 l_i_gid_high;/* were reserved2[0] */ __u32 l_i_reserved2;
@@ -352,7 +352,7 @@ struct ext2_inode {struct {__u8 m_i_frag;/* Fragment number */ __u8 m_i_fsize;/* Fragment size */ -__u16 m_pad1; +__u16 m_i_file_acl_high;__u32 m_i_reserved2[2 ]; } masix2; } osd2;/* OS dependent 2 */
@@ -392,7 +392,7 @@ struct ext2_inode_large {union {struct {__u16 l_i_blocks_hi; -__u16 i_pad1; +__u16 l_i_file_acl_high;__u16 l_i_uid_high;/* these 2 fields */ __u16 l_i_gid_high;/* were reserved2[0] */ __u32 l_i_reserved2;
@@ -408,7 +408,7 @@ struct ext2_inode_large {struct {__u8 m_i_frag;/* Fragment number */ __u8 m_i_fsize;/* Fragment size */ -__u16 m_pad1; +__u16 m_i_file_acl_high;__u32 m_i_reserved2[2 ]; } masix2; } osd2;/* OS dependent 2 */
@@ -427,6 +427,7 @@ struct ext2_inode_large {#define i_reserved1 osd1.linux1.l_i_reserved1#define i_frag osd2.linux2.l_i_frag#define i_fsize osd2.linux2.l_i_fsize +#define i_file_acl_high osd2.linux2.l_i_file_acl_high#define i_uid_low i_uid#define i_gid_low i_gid#define i_uid_high osd2.linux2.l_i_uid_high
@@ -449,6 +450,7 @@ struct ext2_inode_large {#define i_reserved1 osd1.masix1.m_i_reserved1#define i_frag osd2.masix2.m_i_frag#define i_fsize osd2.masix2.m_i_fsize +#define i_file_acl_high osd2.masix2.m_i_file_acl_high#define i_reserved2 osd2.masix2.m_i_reserved2#endif /* __masix__ */
lib/ext2fs/swapfs.c +4 -2
@@ -211,7 +211,8 @@ void ext2fs_swap_inode_full(ext2_filsysext2fs_swab32 (f->osd1.linux1.l_i_version); t->osd2.linux2.l_i_blocks_hi =ext2fs_swab16 (f->osd2.linux2.l_i_blocks_hi); - t->osd2.linux2.i_pad1 =ext2fs_swab16 (f->osd2.linux2.i_pad1); + t->osd2.linux2.l_i_file_acl_high = +ext2fs_swab16 (f->osd2.linux2.l_i_file_acl_high); t->osd2.linux2.l_i_uid_high =ext2fs_swab16 (f->osd2.linux2.l_i_uid_high); t->osd2.linux2.l_i_gid_high =
@@ -238,7 +239,8 @@ void ext2fs_swap_inode_full(ext2_filsysext2fs_swab32 (f->osd1.masix1.m_i_reserved1); t->osd2.masix2.m_i_frag = f->osd2.masix2.m_i_frag; t->osd2.masix2.m_i_fsize = f->osd2.masix2.m_i_fsize; - t->osd2.masix2.m_pad1 =ext2fs_swab16 (f->osd2.masix2.m_pad1); + t->osd2.masix2.m_i_file_acl_high = +ext2fs_swab16 (f->osd2.masix2.m_i_file_acl_high); t->osd2.masix2.m_i_reserved2[0 ] =ext2fs_swab32 (f->osd2.masix2.m_i_reserved2[0 ]); t->osd2.masix2.m_i_reserved2[1] =
Quoted 6 lines · Valerie Clement
This patch is intended to contain the changes to support 48-bit block numbers for ACL. For now, it only contains modifications in the inode structure. It has to be completed.
Andreas proposed to rename
i_file_acltoi_file_eaandi_file_acl_hightoi_file_ea_hi.
Yes, it is misleading that these are called "ACL", since the ACL is only optionally stored internal to the EA block. We should provide compatibility macros to avoid breaking old code, which will also allow incremental migration.
lib/ext2fs/ext2_fs.h struct ext2_inode_large { · line 454
Quoted 6 lines
lib/ext2fs/ext2_fs.h +1
-0@@ -449,6 +450,7 @@ struct ext2_inode_large {#define i_reserved1 osd1.masix1.m_i_reserved1#define i_frag osd2.masix2.m_i_frag#define i_fsize osd2.masix2.m_i_fsize +#define i_file_acl_high osd2.masix2.m_i_file_acl_high#define i_reserved2 osd2.masix2.m_i_reserved2
On an unrelated note - does MASIX even exist anymore? I think it was only a very experimental OS that Rémy Card worked on, and the home page doesn't even exist anymore.
Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.