[U-Boot] [PATCH v3 00/26] subject: fs: fat: extend FAT write operations
Akashi, Takahiro
takahiro.akashi at linaro.org
Tue Sep 11 06:58:56 UTC 2018
This patch series[1] is an attempt to address FAT write related issues
in an effort of running UEFI SCT (Self-Certification Test) to verify
UEFI support on u-boot.
SCT is a test platform as well as an extensive collection of test
cases for UEFI specification. It can run all the tests automatically
and save test results to dedicated log files.
AFAIK, what's missing in the current fat file system to safely run
SCT without errors (I don't mean test case failures) are:
* write a file located under sub-directories
* write a file with non-zero offset
* delete a file
* create a directory
What's more, this series contains a file system test; "basic" test
is directly derived from test/test-fs.sh. The others, "ext" and "mkdir,"
are solely for newly added functionality in this patch series.
Patch#1 to patch#7 are some sort of preparatory ones.
Patch#8 implements write with sub-directories path.
Patch#9 to patch#11 implement write with non-zero offset.
Patch#12 to patch#16 are related to creating a directory.
Patch#17 to patch#20 allows for deleting a file or directory.
Patch#21 fixes a minor bug in fs-test.sh.
Patch#22 updates a test result summary.
Patch#23 to patch#26 add a file system test in U-boot pytest suite.
I applied this patch series on top of v2018.09-rc along with a couple
of yet-to--be-upstreamed UEFI-related patches, and could successfully
run unmodified SCT[2] on qemu-arm(arm64).
=== future TODO list ===
1. set creation (,access and modification) time
2. debug() vs. printf()
3. open()'s parameter checks
4. precisely detect and prevent write() beyond out-of-space
5. create an unique short name from a long file name
6. fat32's fsInfo support
Without (5) or (6), fsck may issue warnings.
[1] https://git.linaro.org/people/takahiro.akashi/u-boot.git fat_write
[2] http://uefi.org/testtools
Changes in v3 (Sep 11, 2018)
* remove v2's patch#4 which tries to make iterator symbols global
* add unlink operation along with a pytest script
* use guestmount, if available, for non-root user
* remove all the filesystem images created in tests
Changes in v2 (Sep 4, 2018)
* guard the whole content of fat.h with CONFIG_FS_FAT against a compiler
warning
* determine total_sect in struct fsdata correctly, depending on fat type
(12/16 or 32)
* explicitly revert "fs: fat: cannot write to subdirectories"
* add test scripts with pytest, mostly the same as RFC, but
removing "sudo" for ext4 case
AKASHI Takahiro (25):
fs: fat: guard the content of include/fat.h
fs: fat: extend get_fs_info() for write use
fs: fat: handle "." and ".." of root dir correctly with
fat_itr_resolve()
fs: fat: assure iterator's ->dent belongs to ->clust
Revert "fs: fat: cannot write to subdirectories"
fs: fat: check and normalize file name
fs: fat: write returns error code instead of -1
fs: fat: support write with sub-directory path
fs: fat: refactor write interface for a file offset
fs: fat: support write with non-zero offset
cmd: fat: add offset parameter to fatwrite
fs: add mkdir interface
fs: fat: remember the starting cluster number of directory
fs: fat: support mkdir
cmd: fat: add fatmkdir command
efi_loader: file: support creating a directory
fs: add unlink interface
fs: fat: support unlink
cmd: fat: add fatrm command
efi_loader: implement a file delete
fs-test: fix false positive error at Test Case 12
fs-test: update the test result as of v2018.09
test/py: convert fs-test.sh to pytest
test/py: fs: add extended write operation test
test/py: fs: add fstest/mkdir test
Akashi, Takahiro (1):
test/py: fs: add fstest/unlink test
cmd/fat.c | 34 +-
fs/fat/fat.c | 65 +-
fs/fat/fat_write.c | 1183 +++++++++++++++++---------
fs/fs.c | 87 ++
include/fat.h | 7 +
include/fs.h | 22 +
lib/efi_loader/efi_file.c | 28 +-
test/fs/fs-test.sh | 24 +-
test/py/tests/test_fs/conftest.py | 392 +++++++++
test/py/tests/test_fs/fstest_defs.py | 13 +
test/py/tests/test_fs/test_basic.py | 287 +++++++
test/py/tests/test_fs/test_ext.py | 224 +++++
test/py/tests/test_fs/test_mkdir.py | 112 +++
test/py/tests/test_fs/test_unlink.py | 109 +++
14 files changed, 2136 insertions(+), 451 deletions(-)
create mode 100644 test/py/tests/test_fs/conftest.py
create mode 100644 test/py/tests/test_fs/fstest_defs.py
create mode 100644 test/py/tests/test_fs/test_basic.py
create mode 100644 test/py/tests/test_fs/test_ext.py
create mode 100644 test/py/tests/test_fs/test_mkdir.py
create mode 100644 test/py/tests/test_fs/test_unlink.py
--
2.18.0
More information about the U-Boot
mailing list