__le32 bg_reserved;
};
-/* The ext2 inode. */
+/**
+ * struct ext2_inode - ext2 inode
+ *
+ * For details see Linux file
+ * Documentation/filesystems/ext4/inodes.rst.
+ */
struct ext2_inode {
+ /** @mode: file mode */
__le16 mode;
+ /** @uid: lower 16 bits of owner UID */
__le16 uid;
+ /** @size: lower 32 bits of file size */
__le32 size;
+ /** @atime: last access time */
__le32 atime;
+ /** @ctime: last change time */
__le32 ctime;
+ /** @mtime: last modification time */
__le32 mtime;
+ /** @dtime: deletion time */
__le32 dtime;
+ /** @gid: lower 16 bits of group ID */
__le16 gid;
+ /** @nlinks: number of hard links */
__le16 nlinks;
- __le32 blockcnt; /* Blocks of either 512 or block_size bytes */
+ /** @blockcnt: lower 32 bit of block count */
+ __le32 blockcnt;
+ /** @flags: inode flags */
__le32 flags;
+ /** @osd1: operating system specific data */
__le32 osd1;
+ /** @b: block map or extent tree */
union {
struct datablocks {
__le32 dir_blocks[INDIRECT_BLOCKS];
char symlink[60];
char inline_data[60];
} b;
+ /** @version: file version (for NFS) */
__le32 version;
+ /** @acl: lower 32 bit of extended attribute block */
__le32 acl;
- __le32 size_high; /* previously dir_acl, but never used */
+ /** @size_high - dir_acl on ext2/3, upper 32 size bits on ext4
+ *
+ * In ext2/3 this field was named i_dir_acl, though it was usually set
+ * to zero and never used.
+ */
+ __le32 size_high;
+ /** @fragment_addr - (obsolete) fragment address */
__le32 fragment_addr;
+ /** @osd2: operating system specific data */
__le32 osd2[3];
};