pw_kvs: Fix garbage collection for redundant entries

Fix garbage collection when using redudant entries.
- Improve "find sector to write entry to" and "find sector to GC"
  algorithms so they work better with redundant entries.
- Add support in GC to be aware of partially written keys, where the
  first entry is written to flash, but GC is needed to free space for
  the redundant entries to have space to be written.

Tested with kEntryRedundancy up to 2.

Change-Id: Iff88d970714fa1ece634af926a1838a5f7d5d7e7
7 files changed
tree: 116bbc43331477c97f4899637bc90bcd057391b6
  1. docs/
  2. pw_assert/
  3. pw_assert_basic/
  4. pw_base64/
  5. pw_bloat/
  6. pw_boot_armv7m/
  7. pw_build/
  8. pw_checksum/
  9. pw_cli/
  10. pw_containers/
  11. pw_cpu_exception/
  12. pw_cpu_exception_armv7m/
  13. pw_docgen/
  14. pw_doctor/
  15. pw_env_setup/
  16. pw_kvs/
  17. pw_log/
  18. pw_log_basic/
  19. pw_minimal_cpp_stdlib/
  20. pw_module/
  21. pw_polyfill/
  22. pw_preprocessor/
  23. pw_presubmit/
  24. pw_protobuf/
  25. pw_protobuf_compiler/
  26. pw_span/
  27. pw_status/
  28. pw_string/
  29. pw_sys_io/
  30. pw_sys_io_baremetal_stm32f429/
  31. pw_sys_io_stdio/
  32. pw_target_runner/
  33. pw_tokenizer/
  34. pw_toolchain/
  35. pw_unit_test/
  36. pw_varint/
  37. pw_watch/
  38. targets/
  39. .clang-format
  40. .gitignore
  41. .gn
  42. .pylintrc
  45. BUILD
  48. CMakeLists.txt
  52. modules.gni
  53. pw_vars_default.gni


Pigweed is an open source collection of embedded-targeted libraries--or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

Pigweed is in the early stages of development, and should be considered experimental. We’re continuing to evolve the platform and add new modules. We value developer feedback along the way.

Pigweed is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

Getting Started

If you'd like to get set up with Pigweed, please visit the setup guide, and then check out the Pigweed developer's guide for more information on how to get the most out of Pigweed.