Skip to content

GC is not trying hard enough #139

@rojer

Description

@rojer

For reasons discussed in #135 and also as the last step of in-place encryption, i am performing full GC of the filesystem and would like to guarantee that all the deleted pages have been erased.
For some reason, first pass of GC on a well-littered filesystem returns after only a few relocations.
Here is the output of this loop:

spiffs_vfs_gc_all    GC result -10001 del pages 319 -> 270
spiffs_vfs_gc_all    GC result -10001 del pages 270 -> 222
spiffs_vfs_gc_all    GC result -10001 del pages 222 -> 174
spiffs_vfs_gc_all    GC result -10001 del pages 174 -> 128
spiffs_vfs_gc_all    GC result -10001 del pages 128 -> 80
spiffs_vfs_gc_all    GC result -10001 del pages 80 -> 53
spiffs_vfs_gc_all    GC result -10001 del pages 53 -> 39
spiffs_vfs_gc_all    GC result -10001 del pages 39 -> 35
spiffs_vfs_gc_all    GC result -10001 del pages 35 -> 30
spiffs_vfs_gc_all    GC result -10001 del pages 30 -> 30

Here is a more detailed output, with SPIFFS_vis before each GC invocation.

Looking at the final state, i'm wondering: (1) why did it take so long to reach it and (2) why does it still have deleted pages?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions