Adopted upstream test_compact, readded lfsr_fs_stat

test_compat has been very useful for testing compatibility on patch and
minor releases.

Though, in porting the tests, I've realized these are actually really
flimsy w.r.t. API changes... lfsp_config notably relies on compatible
struct layouts, which is _not_ guaranteed by littlefs's compatibility
rules.

For this reason I've restricted these tests to only run if LFS_VERSION
doesn't change, though this may be worth reinvestigating in the future.
test_compat on minor API releases would be quite valuable...

lfsr_fs_stat is also not quite up to date with upstream yet. It's really
just a small shim copying over static configs at the moment (except for
name_limit/file_limit). This is because we're still missing most of what
would actually be interesting here: variable block counts, minor
versions, etc.

And of course a minimal lfsr_fs_stat means minimal code changes:

           code          stack
  before: 33642           2592
  after:  33670 (+0.1%)   2592 (+0.0%)
This commit is contained in:
Christopher Haster
2024-06-08 22:37:52 -05:00
parent 396d243c6a
commit 2d4168776f
3 changed files with 1549 additions and 1 deletions
+26
View File
@@ -321,6 +321,26 @@ struct lfs_info {
char name[LFS_NAME_MAX+1];
};
// Filesystem info structure
struct lfs_fsinfo {
// On-disk version
uint32_t disk_version;
// TODO should we add rcompat/wcompat flags here?
// Size of a logical block in bytes.
lfs_size_t block_size;
// Number of logical blocks in the filesystem.
lfs_size_t block_count;
// Upper limit on the length of file names in bytes.
lfs_size_t name_limit;
// Upper limit on the size of files in bytes.
lfs_size_t file_limit;
};
//// Custom attribute structure, used to describe custom attributes
//// committed atomically during file writes.
//struct lfs_attr {
@@ -939,6 +959,12 @@ int lfsr_dir_rewind(lfs_t *lfs, lfsr_dir_t *dir);
/// Filesystem-level filesystem operations
// Find on-disk info about the filesystem
//
// Fills out the fsinfo structure based on the filesystem found on-disk.
// Returns a negative error code on failure.
int lfsr_fs_stat(lfs_t *lfs, struct lfs_fsinfo *fsinfo);
// Finds the current size of the filesystem
//
// Note: Result is best effort. If files share COW structures, the returned