Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6ed2e03 authored by Steven Whitehouse's avatar Steven Whitehouse
Browse files

GFS2: Add explanation of extended attr on-disk format



Some useful info regarding the on-disk representation of
GFS2 extended attributes.

Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent d34843d0
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -333,6 +333,28 @@ struct gfs2_leaf {

/*
 * Extended attribute header format
 *
 * This works in a similar way to dirents. There is a fixed size header
 * followed by a variable length section made up of the name and the
 * associated data. In the case of a "stuffed" entry, the value is
 * inline directly after the name, the ea_num_ptrs entry will be
 * zero in that case. For non-"stuffed" entries, there will be
 * a set of pointers (aligned to 8 byte boundary) to the block(s)
 * containing the value.
 *
 * The blocks containing the values and the blocks containing the
 * extended attribute headers themselves all start with the common
 * metadata header. Each inode, if it has extended attributes, will
 * have either a single block containing the extended attribute headers
 * or a single indirect block pointing to blocks containing the
 * extended attribure headers.
 *
 * The maximim size of the data part of an extended attribute is 64k
 * so the number of blocks required depends upon block size. Since the
 * block size also determines the number of pointers in an indirect
 * block, its a fairly complicated calculation to work out the maximum
 * number of blocks that an inode may have relating to extended attributes.
 *
 */

#define GFS2_EA_MAX_NAME_LEN	255