[Concept,00/26] ext4l: Add write support (part L)

Message ID 20251231223008.3251711-1-sjg@u-boot.org
Headers
Series ext4l: Add write support (part L) |

Message

Simon Glass Dec. 31, 2025, 10:29 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

This series adds write support to the new ext4l filesystem driver,
supporting file creation, modification, and deletion.

The main additions are:
- File write with journalling support
- File deletion (unlink)
- Directory creation (mkdir)
- Symbolic link creation (ln)
- File and directory rename

Infrastructure improvements include proper cleanup of journal references
when unmounting, safeguards to handle probe without explicit close, and
prevention of use-after-free issues with buffer_heads that have active
journal_heads.

The series also enables ext4l for sandbox testing and allows the use of
metadata_csum checksums which the existing ext4 driver does not support.

Some other tweaks are included:
- a fix for mcheck to avoid filling up pre-relocation malloc()
- use the correct logo for readthedocs
- add a flag to avoid using the video console in tests
- a fallback option for finding persistent data-dir

At this point ext4l is useable, but there is more work needed,
including:

- Add MAINTAINERS entry
- Add more Kconfig options for various features (to reduce code size)
- Enable for ARM and x86 targets
- Documentation
- Tests for failure cases (to check that the journal is doing its job)


Simon Glass (26):
  sandbox: os: Check executable directory for persistent files
  sandbox: Add --quiet_vidconsole option to speed up output
  doc: Correct the U-Boot logo
  blkmap: Handle read-only slices in write path
  mcheck: Add Kconfig option for caller string length
  mcheck: Skip mcheck overhead for pre-relocation allocations
  Revert "lib: Add CONFIG_LIB_KMEM_CACHE for full kmem_cache support"
  ext4l: Move message buffer functions to support.c
  ext4l: Add inode-tracking lists
  ext4l: Fix a few problems with handling bh_cache
  ext4l: Clean up fully when unmounting
  ext4l: Remove duplicate atomic_add declarations
  ext4l: Use the real crc16 implementation
  ext4l: Add a few Kconfig dependencies
  ext4l: Add bh_cache_release_jbd() to clean up journal references
  ext4l: Add safeguard to close previous mount in probe
  ext4l: Prevent freeing buffer_heads with active journal_heads
  ext4l: Add support for read-only devices
  ext4l: Add write support
  ext4l: Add unlink support for file deletion
  ext4l: Add mkdir support for directory creation
  ext4l: Add symlink support
  ext4l: Update symlink to replace existing files
  ext4l: Add rename support
  test: fs_helper: Keep metadata_csum enabled for ext4l
  sandbox: Enable CONFIG_FS_EXT4L

 Kconfig                             |  11 +
 arch/sandbox/cpu/os.c               |  27 +-
 arch/sandbox/cpu/start.c            |  10 +
 arch/sandbox/include/asm/state.h    |   1 +
 board/sandbox/sandbox.c             |  16 +
 common/dlmalloc.c                   |  33 +-
 common/mcheck_core.inc.h            |   5 +-
 configs/sandbox_defconfig           |   2 +
 doc/arch/sandbox/sandbox.rst        |   7 +
 doc/conf.py                         |   2 +-
 drivers/block/blkmap.c              |   3 +
 fs/ext4l/Kconfig                    |   3 +
 fs/ext4l/ext4.h                     |   6 +
 fs/ext4l/ext4_uboot.h               |  32 +-
 fs/ext4l/interface.c                | 679 ++++++++++++++++++++++++++--
 fs/ext4l/stub.c                     |   8 +-
 fs/ext4l/super.c                    |  25 +-
 fs/ext4l/support.c                  | 130 +++++-
 fs/fs_legacy.c                      |  10 +-
 include/ext4l.h                     |  67 +++
 include/linux/fs.h                  |   1 +
 include/linux/slab.h                |  27 +-
 lib/Kconfig                         |   8 -
 lib/Makefile                        |   1 -
 lib/kmem_cache.c                    |  20 -
 test/fs/ext4l.c                     | 251 ++++++++++
 test/py/tests/fs_helper.py          |  13 +-
 test/py/tests/test_event_dump.py    |   1 +
 test/py/tests/test_fs/test_ext4l.py |  25 +
 tools/logos/u-boot-logo-text.svg    | Bin 0 -> 8552 bytes
 30 files changed, 1287 insertions(+), 137 deletions(-)
 delete mode 100644 lib/kmem_cache.c
 create mode 100644 tools/logos/u-boot-logo-text.svg