[U-Boot] [PATCH V2 00/10] Replace the FAT filesystem code

Stephen Warren swarren at wwwdotorg.org
Tue Aug 11 16:55:35 CEST 2015


The existing FAT filesystem implementation in U-Boot has some bugs that
are tricky to fix cleanly without significant rework of the code. For
example, see:

http://lists.denx.de/pipermail/u-boot/2015-July/221054.html
[PATCH] fat: handle paths that include ../

This series replaces U-Boot's FAT filesystem implementation with the "ff"
project; http://elm-chan.org/fsw/ff/00index_e.html. This project appears
to be actively maintained, does not have at least the bug referenced in
the patch link above, and is quite easy to integrate into U-Boot. An
earlier version is also used in Barebox, so presumably it's had some
level of testing/exposure there.

Note that this series is based on u-boot/master without the patch linked
above applied. I wonder if it's a little risky to apply this series after
-rc1; perhaps the patch above should be applied to v2015.10, and this
series immediately after the release?

v2:
* buildman passes for everything it can build:
  * Implemented FAT functions used only by SPL code.
  * Fixed a warning in ff.c.
* Fixed types in integer.h so that >64KiB files are loaded correctly.
* ./test/fs/fs-test.sh passes.
* Tested on a Raspberry Pi as well as sandbox.
* Use a define for a hard-coded array size in ff-uboot.c.

Binary size changes due to this series:
* Text size increases around 1-6KiB depending on target.
* Data size sometimes goes up, sometimes down, depending on target.
* Nearly 200KiB of BSS is saved.

Stephen Warren (10):
  disk: support host devices in dev_print()
  fat: move to a different directory
  fat: add ff.c implementation
  fat: apply upstream bugfix to ff.c
  fat: ff: add ifdef to avoid unused function warning
  fat: ffconf.h changes for U-Boot port
  fat: port integer.h to U-Boot types
  fat: add U-Boot to ff.c API conversion wrapper
  fat: switch to new FAT implementation
  fat: remove old implementation

 disk/part.c        |    3 +
 fs/fat/Makefile    |    8 +-
 fs/fat/diskio.h    |   80 +
 fs/fat/fat.c       | 1323 ---------------
 fs/fat/fat_write.c | 1115 -------------
 fs/fat/ff-uboot.c  |  403 +++++
 fs/fat/ff.c        | 4634 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/fat/ff.h        |  350 ++++
 fs/fat/ffconf.h    |  277 ++++
 fs/fat/file.c      |  183 ---
 fs/fat/integer.h   |   35 +
 11 files changed, 5784 insertions(+), 2627 deletions(-)
 create mode 100644 fs/fat/diskio.h
 delete mode 100644 fs/fat/fat.c
 delete mode 100644 fs/fat/fat_write.c
 create mode 100644 fs/fat/ff-uboot.c
 create mode 100644 fs/fat/ff.c
 create mode 100644 fs/fat/ff.h
 create mode 100644 fs/fat/ffconf.h
 delete mode 100644 fs/fat/file.c
 create mode 100644 fs/fat/integer.h

-- 
1.9.1



More information about the U-Boot mailing list