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 absoltue 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.

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: mkfs: enable experimental rebuild fulldata mode

 lib/cache.c            |   6 ++
 lib/importer.c         |   5 +-
 lib/liberofs_cache.h   |   1 +
 lib/liberofs_rebuild.h |   8 ++-
 lib/liberofs_uuid.h    |   1 +
 lib/rebuild.c          | 174 +++++++++++++++++++++++++++++++++++++++++++++++--
 lib/uuid_unparse.c     |  16 ++++-
 mkfs/main.c            |  30 +++++----
 8 files changed, 220 insertions(+), 21 deletions(-)
---

Reply via email to