v2.2
What's new?
This release brings in a revamped testing framework intended to improve the rate of bug isolation and fixes. There are new runtime contexts for tests such as simulated power-loss and Valgrind based memory checking, and additional scripts for printing out metadata to debug the filesystem (readtree.py/readmdir.py/readblock.py in the scripts directory). This also comes with a large number of bug fixes as detailed in #372.
More details on this can be found in the overly wordy #372.
Other changes:
- Introduced rambd and filebd, two block devices that replace emubd for simulating block devices locally
- Changed asserts on corrupted filesystem to return errors, allowing additional user recover
- A number of quality-of-life improvements to logging statements
- Reenabled cache bypassing if the filesystem is handling data that is aligned to the block device's requirements
- Did I mention a large number of bug fixes? There's a lot of bugs fixed in this release, see #372
Changes
6372f51 Allow debug prints without VA_ARGS
6622f3d Bumped minor version to v2.2
5137e4b Last minute tweaks to debug scripts
ff84902 Moved out block device tracing into separate define
f9dbec3 Added test case catching issues with errors during a lookahead scan
f17d3d7 Minor cleanup
5e5b5d8 (chore) updates from PR, we decided not to move forward with changing v1 code since it can be risky. Let's improve the future! Also renamed and moved around a the lookahead free / reset function
d498b9f (bugfix) adding line function to clear out all the global 'free' information so that we can reset it after a failed traversal
4677421 Added "evil" tests and detecion/recovery from bad pointers and infinite loops
cb26157 Change assert to runtime check.
a7dfae4 Minor tweaks to debugging scripts, fixed explode_asserts.py off-by-1
50fe8ae Renamed test_format -> test_superblocks, tweaked superblock tests
0990296 Limited byte-level tests to native testing due to time
d04b077 Fixed minor things to get CI passing again
c7987a3 Restructured .travis.yml to span more jobs
dcae185 Fixed typo in LFS_MKTAG_IF_ELSE
f4b17b3 Added test.py support for tmpfs-backed disks
9f546f1 Updated .travis.yml and added additional geometry constraints
b69cf89 Fixed CRC check when prog_size causes multiple CRCs per commit
02c84ac Cleaned up dependent fixes on branch
6530cb3 Fixed lfs_fs_size doubling metadata-pairs
fe957de Fixed broken wear-leveling when block_cycles = 2n-1
6a55084 Modified readmdir/readtree to make reading non-truncated data easier
f9c2fd9 Removed file outlining on ENOSPC in lfs_file_sync
44d7112 Fixed tests/.toml. in .gitignore
77e3078 Added/fixed tests for noop writes (where bd error can't be trusted)
517d341 Fixed more bugs, mostly related to ENOSPC on different geometries
4fb1883 Update SPEC.md
c8e9a64 Indicate C99 standard as target for LittleFS code
aab6aa0 Cleaned up test script and directory naming
52ef0c1 Fixed a crazy consistency issue in test.py
b9d0695 Rewrote explode_asserts.py to be more efficient
a5d614f Added tests for power-cycled-relocations and fixed the bugs that fell out
f4b6a6b Fixed issues with neighbor updates during moves
9453ebd Added/improved disk-reading debug scripts
fb65057 Restructured block devices again for better test exploitation
ecc2857 Migrated bad-block tests
5181ce6 Migrated the first of the tests with internal knowledge
b06ce54 Migrated the bulk of the feature-specific tests
1d2688a Migrated test_files, test_dirs, test_format suites to new framework
eeaf536 Replaced emubd with rambd and filebd
626006a Fix incorrect comment on lfs_npw2
53d2b02 Added reentrant and gdb testing mechanisms to test framework
ed8341e Reworked permutation generation in test framework and cleanup
f42e007 Created initial implementation of revamped test.py
5a12c44 Revert "Don't bypass cache in lfs_cache_prog()
and lfs_cache_read()
"