mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 08:48:31 +01:00
Added lfs_fs_size function for finding a count of used blocks
This has existed for some time in the form of the lfs_traverse function, however lfs_traverse is relatively unconventional and has proven to not have been the most intuitive for users.
This commit is contained in:
16
lfs.c
16
lfs.c
@@ -3183,3 +3183,19 @@ int lfs_fs_setattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count) {
|
|||||||
|
|
||||||
return lfs_dir_setattrs(lfs, &dir, &entry, attrs, count);
|
return lfs_dir_setattrs(lfs, &dir, &entry, attrs, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lfs_fs_size_count(void *p, lfs_block_t block) {
|
||||||
|
lfs_size_t *size = p;
|
||||||
|
*size += 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lfs_ssize_t lfs_fs_size(lfs_t *lfs) {
|
||||||
|
lfs_size_t size = 0;
|
||||||
|
int err = lfs_traverse(lfs, lfs_fs_size_count, &size);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|||||||
8
lfs.h
8
lfs.h
@@ -590,6 +590,14 @@ int lfs_fs_getattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count);
|
|||||||
// Returns a negative error code on failure.
|
// Returns a negative error code on failure.
|
||||||
int lfs_fs_setattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count);
|
int lfs_fs_setattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count);
|
||||||
|
|
||||||
|
// Finds the current size of the filesystem
|
||||||
|
//
|
||||||
|
// Note: Result is best effort. If files share COW structures, the returned
|
||||||
|
// size may be larger than the filesystem actually is.
|
||||||
|
//
|
||||||
|
// Returns the number of allocated blocks, or a negative error code on failure.
|
||||||
|
lfs_ssize_t lfs_fs_size(lfs_t *lfs);
|
||||||
|
|
||||||
|
|
||||||
/// Miscellaneous littlefs specific operations ///
|
/// Miscellaneous littlefs specific operations ///
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user