mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
docs: initramfs: file data alignment via name padding
The existing cpio extraction logic reads (maximum PATH_MAX) name_len
bytes from the archive into the collected name buffer and ensures that
the trailing byte is a null-terminator. This allows the actual file name
to be shorter than name_len, with the name string simply zero-terminated
prior to the last byte.
Initramfs generators, such as dracut-cpio[1], can take advantage of name
zero-padding to align file data segments within the archive to
filesystem block boundaries. Block boundary alignment may allow the
copy_file_range syscall to reflink archive source and destination
extents.
Link: 300e4b116c [1]
Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Link: https://lore.kernel.org/r/20250819032607.28727-7-ddiss@suse.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
This commit is contained in:
committed by
Nathan Chancellor
parent
9135564db4
commit
7c1f14f6e8
@@ -86,6 +86,11 @@ c_mtime is ignored unless CONFIG_INITRAMFS_PRESERVE_MTIME=y is set.
|
|||||||
The c_filesize should be zero for any file which is not a regular file
|
The c_filesize should be zero for any file which is not a regular file
|
||||||
or symlink.
|
or symlink.
|
||||||
|
|
||||||
|
c_namesize may account for more than one trailing '\0', as long as the
|
||||||
|
value doesn't exceed PATH_MAX. This can be useful for ensuring that a
|
||||||
|
subsequent file data segment is aligned, e.g. to a filesystem block
|
||||||
|
boundary.
|
||||||
|
|
||||||
The c_chksum field contains a simple 32-bit unsigned sum of all the
|
The c_chksum field contains a simple 32-bit unsigned sum of all the
|
||||||
bytes in the data field. cpio(1) refers to this as "crc", which is
|
bytes in the data field. cpio(1) refers to this as "crc", which is
|
||||||
clearly incorrect (a cyclic redundancy check is a different and
|
clearly incorrect (a cyclic redundancy check is a different and
|
||||||
|
|||||||
Reference in New Issue
Block a user