On Wed, Jun 21, 2017 at 02:21:11PM -0700, Tahsin Erdogan wrote: > From: Andreas Dilger <andreas.dilger@xxxxxxxxx> > > Large xattr support is implemented for EXT4_FEATURE_INCOMPAT_EA_INODE. > > If the size of an xattr value is larger than will fit in a single > external block, then the xattr value will be saved into the body > of an external xattr inode. > > The also helps support a larger number of xattr, since only the headers > will be stored in the in-inode space or the single external block. > > The inode is referenced from the xattr header via "e_value_inum", > which was formerly "e_value_block", but that field was never used. > The e_value_size still contains the xattr size so that listing > xattrs does not need to look up the inode if the data is not accessed. > > struct ext4_xattr_entry { > __u8 e_name_len; /* length of name */ > __u8 e_name_index; /* attribute name index */ > __le16 e_value_offs; /* offset in disk block of value */ > __le32 e_value_inum; /* inode in which value is stored */ > __le32 e_value_size; /* size of attribute value */ > __le32 e_hash; /* hash value of name and value */ > char e_name[0]; /* attribute name */ > }; > > The xattr inode is marked with the EXT4_EA_INODE_FL flag and also > holds a back-reference to the owning inode in its i_mtime field, > allowing the ext4/e2fsck to verify the correct inode is accessed. > > Lustre-Jira: https://jira.hpdd.intel.com/browse/LU-80 > Lustre-bugzilla: https://bugzilla.lustre.org/show_bug.cgi?id=4424 > Signed-off-by: Kalpak Shah <kalpak.shah@xxxxxxx> > Signed-off-by: James Simmons <uja.ornl@xxxxxxxxx> > Signed-off-by: Andreas Dilger <andreas.dilger@xxxxxxxxx> > Signed-off-by: Tahsin Erdogan <tahsin@xxxxxxxxxx> Applied, thanks. - Ted