• Kent Overstreet's avatar
    bcache: Incremental gc · a1f0358b
    Kent Overstreet authored
    Big garbage collection rewrite; now, garbage collection uses the same
    mechanisms as used elsewhere for inserting/updating btree node pointers,
    instead of rewriting interior btree nodes in place.
    
    This makes the code significantly cleaner and less fragile, and means we
    can now make garbage collection incremental - it doesn't have to hold a
    write lock on the root of the btree for the entire duration of garbage
    collection.
    
    This means that there's less of a latency hit for doing garbage
    collection, which means we can gc more frequently (and do a better job
    of reclaiming from the cache), and we can coalesce across more btree
    nodes (improving our space efficiency).
    Signed-off-by: default avatarKent Overstreet <kmo@daterainc.com>
    a1f0358b
btree.h 11.3 KB