Commit Graph

26 Commits (mbed-os-5.5)

Author SHA1 Message Date
Christopher Haster 94aea467c9 fatfs: Fix unaligned access in disk_ioctl
Unlike the other disk_ioctl options, GET_SECTOR_SIZE is interpreted
as a 16-bit WORD, instead of a 32-bit DWORD. This caused an unaligned
access error on M0 platforms.
2017-07-14 15:13:32 +01:00
Christopher Haster b92b4232da fatfs: Added full support for multiple fs volume prefixes
This is only an issue when multiple fatfss are used simultaneously.
Repeated use of a single fatfs instance (even with different storages)
do not show this issue.

Full support requires path prefixes being applied for every function
that takes a path. Note: this is only required filesystems after the
first mounted filesystem. The first filesystem has no penalty.
2017-07-14 15:13:31 +01:00
Christopher Haster 17601c0e17 fatfs: Removed unused fat_filesystem_set_errno function
At some point this was replaced by fat_error_remap
2017-07-03 11:47:03 +01:00
Christopher Haster 8206b4282e fatfs: Fixed initialization of block device in mount/unmount functions
At some point the "mount" parameter for "f_mount" was name "force". This
led to a bit of confusion that ended with the default mount function
never calling block device init.

This is fine, since the block device can be manually initialized, but
a better user experience is where the filesystem initializes the block
device for the user.

This is backwards compatible due to the repeatability of the block
device init functions.
2017-06-20 17:13:35 +01:00
Christopher Haster c0aa841ffd FAT: Added support for block sizes of 512-4096 bytes
This is necessary for support of block devices with >512 byte
blocks, such as most SPI flash parts.

- Enabled support of up to 4096 byte blocks
- Added support for heap-backed buffers using _FS_HEAPBUF
  - Necessary to avoid stack overflows
  - Avoids over-aggresive allocations of _MAX_SS
- Enabled _FS_TINY to further reduce memory footprint
  - Haven't found a downside for this yet except for possible
    thread contention
2017-06-03 07:10:48 +01:00
Kevin Bracey 533910cb87 Correct return type of FileHandle::size()
File size should be off_t, not size_t.
2017-05-31 15:02:11 +03:00
Christopher Haster 3f92a15960 FAT: Added support for multiple active filesystems
- Increased _VOLUMES to 4
- Fixed a few issues in the FATFileSystem's _fsid
- Added tests for multiple partitions of fatfs
2017-05-24 11:18:47 -05:00
Christopher Haster d1468a68ab FAT: Removed implicit MBR from FAT filesystem during format
- Implicit MBR still allowed during mount
  - maintains storage compatibility
- Not needed
  - MBR utility is not exposed through the FAT filesystem,
    so the only used partition was always the first. Omitting
    the MBR is functionally equivalent
  - Saves a few blocks on storage for MBR + offset
    for FAT alignment
- Duplicated with MBRBlockDevice
  - The implicit MBR actually prevents nesting a FAT filesystem
    in the MBRBlockDevice
2017-05-23 11:56:00 -05:00
Christopher Haster c4649afba5 Filesystem: Last minute changes due to feedback on directory iteration
- Changed to use dirent structure type
- Fixed memory leak in closedir
2017-02-24 12:03:14 -06:00
Christopher Haster b9122c73f9 Filesystem: Integrate error handling between c++/posix layers 2017-02-24 12:03:09 -06:00
Christopher Haster eea5c9f08a Filesystem: Integration with retarget code 2017-02-24 11:55:37 -06:00
Christopher Haster e5197ceaca Filesystem: Initial integration with the FATFileSystem 2017-02-24 11:53:17 -06:00
Simon Hughes 410c2f8dc0 STORAGE: rebased with master and fixed FATFileSystem.cpp merge conflicts. 2017-02-23 16:50:34 +00:00
Christopher Haster ea5ac4bb4d Storage: Last minute changes to the block device api
- Remove write set of functions
  - Caused confusion with small benefit
  - Trivial to add later
- Remove unused error codes
  - Initial expirementation indicates most of these may not be useful
  - Trivial to add later
- Removed bd_error_t
  - Carries to additional type information, int already carries
    sufficient connotation
  - Trivial to add later

per @c1728p9, @sg-
2017-02-23 16:39:49 +00:00
Simon Hughes 840c77793b STORAGE: Pull request 3762 review feedback changes.
- Fixing code formatting errors with astyle tool.
- Replaced use of TOOLCHAIN_xxx macros with compiler emitted macros.
- Added const to BlockDevice::get_xxx_size() member functions.
- Added documentation for FAT filesystem thread support.
- Added documentation for fat_filesystem_set_errno().
- Added documentation clarifying the reasons for errno/stat symbol definitions in retarget.h.
- Removed FAT filesystem from mbed 2 testing.
- Fixed FATMisc.h Copyright (c) 2016 year to 2017 as its a new file.
- Removed #ifndef NDEBUG from HeapBlockDevice.cpp.
- Removed unnecessary todo comment in retarget.cpp.
2017-02-23 16:39:42 +00:00
Simon Hughes 2b96c74f84 STORAGE: Pull Request 3704 requested minor changes including:
- renaming FATFileSystemSetErrno() fat_file_system_set_errno.
- changing FATFileSystem::format() to be mount fs internally in function, rather than expecting fs to be mounted.
- requested const char *filename change.
2017-02-23 16:39:21 +00:00
Simon Hughes 860d7f03f2 STORAGE: fixing error handling for fopen() and other upper edge filesystem API methods.
- integrated work with new block api.
- Conflicts: features/filesystem/fat/FATFileSystem.cpp
2017-02-23 16:39:11 +00:00
Simon Hughes 0b7a2ca030 STORAGE: fixes for merging in format test with new block device implementation of format. 2017-02-23 16:38:22 +00:00
Simon Hughes 01baa72ab9 STORAGE: change FATFileSystem::format() to include allocation_unit argument, to facilitate fixing of inconsistent file systems.
Conflicts:
	features/filesystem/fat/FATFileSystem.cpp
	features/filesystem/fat/FATFileSystem.h
2017-02-23 16:38:19 +00:00
Simon Hughes 4f5e94c746 STORAGE: test case fixes to support ARMCC and IAR toolchains.
Conflicts:
	features/TESTS/filesystem/fopen/fopen.cpp
2017-02-23 16:38:15 +00:00
Christopher Haster 0176450c5a bd: Adopted the block storage api in the FATFileSystem 2017-02-23 16:37:13 +00:00
Simon D Hughes aefb03ccd6 ARMCC temporary fixes for undefined errno symbols. 2017-02-23 16:36:16 +00:00
Simon Hughes 0c87537f10 Added errno codes to retarget, mkdir() and ftell() tests. 2017-02-23 16:36:03 +00:00
Christopher Haster 39a1eddb93 Filesystem: Added EEXIST reporting to mkdir through errno 2017-02-23 16:34:56 +00:00
Christopher Haster 9299a88e8f Filesystem: Add support for stat
Provided through FileSystemLike::stat
2017-02-23 16:30:42 +00:00
Simon Hughes 4acf33f436 FILESYSTEM: moved FAT filesystem implemenation to features/filesystem subdir, and fs-fat tests to features/TESTS. 2017-02-23 16:30:21 +00:00