1 .. SPDX-License-Identifier: GPL-2.0 1 .. SPDX-License-Identifier: GPL-2.0 2 2 3 Inline Data 3 Inline Data 4 ----------- 4 ----------- 5 5 6 The inline data feature was designed to handle 6 The inline data feature was designed to handle the case that a file's 7 data is so tiny that it readily fits inside th 7 data is so tiny that it readily fits inside the inode, which 8 (theoretically) reduces disk block consumption 8 (theoretically) reduces disk block consumption and reduces seeks. If the 9 file is smaller than 60 bytes, then the data a 9 file is smaller than 60 bytes, then the data are stored inline in 10 ``inode.i_block``. If the rest of the file wou 10 ``inode.i_block``. If the rest of the file would fit inside the extended 11 attribute space, then it might be found as an 11 attribute space, then it might be found as an extended attribute 12 “system.data” within the inode body (“ib 12 “system.data” within the inode body (“ibody EA”). This of course 13 constrains the amount of extended attributes o 13 constrains the amount of extended attributes one can attach to an inode. 14 If the data size increases beyond i_block + ib 14 If the data size increases beyond i_block + ibody EA, a regular block 15 is allocated and the contents moved to that bl 15 is allocated and the contents moved to that block. 16 16 17 Pending a change to compact the extended attri 17 Pending a change to compact the extended attribute key used to store 18 inline data, one ought to be able to store 160 18 inline data, one ought to be able to store 160 bytes of data in a 19 256-byte inode (as of June 2015, when i_extra_ 19 256-byte inode (as of June 2015, when i_extra_isize is 28). Prior to 20 that, the limit was 156 bytes due to inefficie 20 that, the limit was 156 bytes due to inefficient use of inode space. 21 21 22 The inline data feature requires the presence 22 The inline data feature requires the presence of an extended attribute 23 for “system.data”, even if the attribute v 23 for “system.data”, even if the attribute value is zero length. 24 24 25 Inline Directories 25 Inline Directories 26 ~~~~~~~~~~~~~~~~~~ 26 ~~~~~~~~~~~~~~~~~~ 27 27 28 The first four bytes of i_block are the inode 28 The first four bytes of i_block are the inode number of the parent 29 directory. Following that is a 56-byte space f 29 directory. Following that is a 56-byte space for an array of directory 30 entries; see ``struct ext4_dir_entry``. If the 30 entries; see ``struct ext4_dir_entry``. If there is a “system.data” 31 attribute in the inode body, the EA value is a 31 attribute in the inode body, the EA value is an array of 32 ``struct ext4_dir_entry`` as well. Note that f 32 ``struct ext4_dir_entry`` as well. Note that for inline directories, the 33 i_block and EA space are treated as separate d 33 i_block and EA space are treated as separate dirent blocks; directory 34 entries cannot span the two. 34 entries cannot span the two. 35 35 36 Inline directory entries are not checksummed, 36 Inline directory entries are not checksummed, as the inode checksum 37 should protect all inline data contents. 37 should protect all inline data contents.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.