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. Unlike Linux, which does not need to meticulously free every resource on unmount (since it can do so later as needed), U-Boot must fully clean up. The bootloader may mount and unmount filesystems multiple times during a session, such as loading a kernel from one partition and a device tree from another, or when running tests. Memory leaks accumulate and cause failures, so ext4l includes extra cleanup code that the Linux ext4 driver does not require. 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) (no changes since v1) Simon Glass (30): Update claude file to use uman instead of crosfw sandbox: os: Check executable directory for persistent files sandbox: Add --quiet_vidconsole option to speed up output video: Avoid uclass allocation in video_idle() cyclic video: Unregister cyclic on the last video-device removal video: 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: doc: Document ext4l_msgs environment variable 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 CLAUDE.md | 14 +- 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 +- doc/usage/environment.rst | 6 + drivers/block/blkmap.c | 3 + drivers/video/video-uclass.c | 40 +- fs/ext4l/Kconfig | 3 + fs/ext4l/ext4.h | 6 + fs/ext4l/ext4_uboot.h | 48 +- fs/ext4l/interface.c | 679 ++++++++++++++++++++++++++-- fs/ext4l/mballoc.c | 4 + fs/ext4l/stub.c | 8 +- fs/ext4l/super.c | 25 +- fs/ext4l/support.c | 156 ++++++- 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 34 files changed, 1376 insertions(+), 154 deletions(-) delete mode 100644 lib/kmem_cache.c create mode 100644 tools/logos/u-boot-logo-text.svg -- 2.43.0 base-commit: 87b7abb0093eb536cd89fa6dd1b2f5f1049bf708 branch: extl2