Currently, erofs-utils supports backing blobs for multi-image setups. This implements the FULLDATA import which allows for the merging of multiple source images into a single self-contained erofs image.
To optimize the rebuild process, erofs_copy_file_range() is used to leverage the copy_file_range(2) if available. This bypasses userspace buffering and enables kernel side data transfers. Verification: 1. Created a source directory containing flat inodes, inline inodes, symlinks and absolute symlinks. Verified data integrity by comparing checksums of files within the mounted image. 2. Built same image with default rebuild and rebuild with FULLDATA. Then ran F-i-f/tdiff comparing the two. changes in v2: - reworked erofs_rebuild_load_trees_full into erofs_mkfs_rebuild_load_trees. - removed --merge option (use --clean=data instead). - updated man. Signed-off-by: Lucas Karpinski <[email protected]> --- Lucas Karpinski (5): erofs-utils: lib: pass uniaddr_offset to erofs_rebuild_load_tree erofs-utils: lib: add helper function erofs_uuid_unparse_as_tag erofs-utils: lib: preserve primarydevice_blocks if already larger erofs-utils: mfks: add rebuild FULLDATA for combined EROFS images erofs-utils: manpages: update to reflect fulldata support lib/cache.c | 6 +++ lib/importer.c | 5 ++- lib/liberofs_cache.h | 1 + lib/liberofs_rebuild.h | 7 ++- lib/liberofs_uuid.h | 1 + lib/rebuild.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++-- lib/uuid_unparse.c | 16 ++++++- man/mkfs.erofs.1 | 7 ++- mkfs/main.c | 53 ++++++++++++++-------- 9 files changed, 185 insertions(+), 28 deletions(-) ---
