From: Simon Glass <simon.glass@canonical.com> U-Boot has long had a solid implementation of ext4. Support for writing and basic journaling was added as well. However, there are some missing features. For example, some distros enable metadata checksums which are not supported. There also also other features such as fast commit and special feature for small files which are not currently available. Linux has the canonical implementation of ext4, so one approach would be to plumb that code into U-Boot. It is not a small undertaking, since the existing linux/compat.h has only a small fraction of the required features. As a start towards this effort, bring in the entire Linux code, unmodified. Note: There are 1000s of checkpatch checks and warnings, plus over 100 errors. These have been left along to reduce the source delta. Simon Glass (17): ext4l: bring in extents.c ext4l: bring in inode.c ext4l: bring in mballoc.c ext4l: bring in namei.c ext4l: bring in super.c ext4l: bring in ext4.h ext4l: bring in files a-d ext4l: bring in extents_status, fsync, and hash ext4l: bring in ext4_jbd2 and fast_commit ext4l: bring in file, fsmap, and ialloc ext4l: bring in indirect and inline ext4l: bring in inode-test, ioctl, and mballoc headers ext4l: bring in migrate, mmp, move_extent, orphan, and page-io ext4l: bring in resize, symlink, sysfs, truncate, verity, and readpage ext4l: bring in xattr files ext4l: bring in Kconfig and Makefile ext4l: bring in jbd2 header file fs/ext4l/Kconfig | 92 + fs/ext4l/Makefile | 20 + fs/ext4l/acl.c | 304 ++ fs/ext4l/acl.h | 74 + fs/ext4l/balloc.c | 1003 +++++ fs/ext4l/bitmap.c | 99 + fs/ext4l/block_validity.c | 370 ++ fs/ext4l/crypto.c | 241 ++ fs/ext4l/dir.c | 693 ++++ fs/ext4l/ext4.h | 3932 +++++++++++++++++++ fs/ext4l/ext4_extents.h | 268 ++ fs/ext4l/ext4_jbd2.c | 408 ++ fs/ext4l/ext4_jbd2.h | 461 +++ fs/ext4l/extents.c | 6189 ++++++++++++++++++++++++++++++ fs/ext4l/extents_status.c | 2306 ++++++++++++ fs/ext4l/extents_status.h | 254 ++ fs/ext4l/fast_commit.c | 2343 ++++++++++++ fs/ext4l/fast_commit.h | 186 + fs/ext4l/file.c | 995 +++++ fs/ext4l/fsmap.c | 792 ++++ fs/ext4l/fsmap.h | 56 + fs/ext4l/fsync.c | 177 + fs/ext4l/hash.c | 323 ++ fs/ext4l/ialloc.c | 1621 ++++++++ fs/ext4l/indirect.c | 1474 ++++++++ fs/ext4l/inline.c | 1982 ++++++++++ fs/ext4l/inode-test.c | 283 ++ fs/ext4l/inode.c | 6756 +++++++++++++++++++++++++++++++++ fs/ext4l/ioctl.c | 2020 ++++++++++ fs/ext4l/mballoc-test.c | 999 +++++ fs/ext4l/mballoc.c | 7175 +++++++++++++++++++++++++++++++++++ fs/ext4l/mballoc.h | 273 ++ fs/ext4l/migrate.c | 672 ++++ fs/ext4l/mmp.c | 408 ++ fs/ext4l/move_extent.c | 706 ++++ fs/ext4l/namei.c | 4241 +++++++++++++++++++++ fs/ext4l/orphan.c | 659 ++++ fs/ext4l/page-io.c | 593 +++ fs/ext4l/readpage.c | 422 +++ fs/ext4l/resize.c | 2193 +++++++++++ fs/ext4l/super.c | 7516 +++++++++++++++++++++++++++++++++++++ fs/ext4l/symlink.c | 136 + fs/ext4l/sysfs.c | 648 ++++ fs/ext4l/truncate.h | 52 + fs/ext4l/verity.c | 399 ++ fs/ext4l/xattr.c | 3225 ++++++++++++++++ fs/ext4l/xattr.h | 236 ++ fs/ext4l/xattr_hurd.c | 52 + fs/ext4l/xattr_security.c | 66 + fs/ext4l/xattr_trusted.c | 47 + fs/ext4l/xattr_user.c | 50 + include/linux/jbd2.h | 1815 +++++++++ 52 files changed, 68305 insertions(+) create mode 100644 fs/ext4l/Kconfig create mode 100644 fs/ext4l/Makefile create mode 100644 fs/ext4l/acl.c create mode 100644 fs/ext4l/acl.h create mode 100644 fs/ext4l/balloc.c create mode 100644 fs/ext4l/bitmap.c create mode 100644 fs/ext4l/block_validity.c create mode 100644 fs/ext4l/crypto.c create mode 100644 fs/ext4l/dir.c create mode 100644 fs/ext4l/ext4.h create mode 100644 fs/ext4l/ext4_extents.h create mode 100644 fs/ext4l/ext4_jbd2.c create mode 100644 fs/ext4l/ext4_jbd2.h create mode 100644 fs/ext4l/extents.c create mode 100644 fs/ext4l/extents_status.c create mode 100644 fs/ext4l/extents_status.h create mode 100644 fs/ext4l/fast_commit.c create mode 100644 fs/ext4l/fast_commit.h create mode 100644 fs/ext4l/file.c create mode 100644 fs/ext4l/fsmap.c create mode 100644 fs/ext4l/fsmap.h create mode 100644 fs/ext4l/fsync.c create mode 100644 fs/ext4l/hash.c create mode 100644 fs/ext4l/ialloc.c create mode 100644 fs/ext4l/indirect.c create mode 100644 fs/ext4l/inline.c create mode 100644 fs/ext4l/inode-test.c create mode 100644 fs/ext4l/inode.c create mode 100644 fs/ext4l/ioctl.c create mode 100644 fs/ext4l/mballoc-test.c create mode 100644 fs/ext4l/mballoc.c create mode 100644 fs/ext4l/mballoc.h create mode 100644 fs/ext4l/migrate.c create mode 100644 fs/ext4l/mmp.c create mode 100644 fs/ext4l/move_extent.c create mode 100644 fs/ext4l/namei.c create mode 100644 fs/ext4l/orphan.c create mode 100644 fs/ext4l/page-io.c create mode 100644 fs/ext4l/readpage.c create mode 100644 fs/ext4l/resize.c create mode 100644 fs/ext4l/super.c create mode 100644 fs/ext4l/symlink.c create mode 100644 fs/ext4l/sysfs.c create mode 100644 fs/ext4l/truncate.h create mode 100644 fs/ext4l/verity.c create mode 100644 fs/ext4l/xattr.c create mode 100644 fs/ext4l/xattr.h create mode 100644 fs/ext4l/xattr_hurd.c create mode 100644 fs/ext4l/xattr_security.c create mode 100644 fs/ext4l/xattr_trusted.c create mode 100644 fs/ext4l/xattr_user.c create mode 100644 include/linux/jbd2.h -- 2.43.0 base-commit: 7764e43798d244dc088e0a6eb2a19bc9c82c1764 branch: exta