zephyr/subsys/fs
Damian Krolik 74e4ac0883 nvs: implement NVS cache
The NVS data lookup time grows linearly with the number of
allocation table entries to walk through, meaning that if
some data pair in the NVS changes frequently, access to
other data pairs that change rarely can take a lot of time.

It is particularly visible when the NVS is used as the
settings backend since the backend needs to perform multiple
NVS reads to find a requested key.

Implement a simple cache that stores an address of the most
recent ATE for all NVS IDs that fall into the given cache
position. CRC8/16 is used as a hash function used to
distribute NVS IDs across the cache entries.

The cache entries are only invalidated when an NVS sector
is erased as part of the garbage collector task.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
2022-06-05 14:43:59 +02:00
..
fcb fs: fcb: Make FCB work with sectors larger than 16K 2022-05-25 14:57:45 +02:00
nvs nvs: implement NVS cache 2022-06-05 14:43:59 +02:00
CMakeLists.txt modules: littlefs: move CMake glue code from littlefs repo into Zephyr 2022-03-02 15:34:11 +01:00
fat_fs.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
fs_impl.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
fs_impl.h subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
fs.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
fuse_fs_access.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
Kconfig fs: Kconifg: use rsource instead of source for local Kconfigs 2022-04-11 12:12:20 +02:00
Kconfig.fatfs kconfig: remove Enable from boolean prompts 2022-03-09 15:35:54 +01:00
Kconfig.littlefs kconfig: remove Enable from boolean prompts 2022-03-09 15:35:54 +01:00
littlefs_fs.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
shell.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00