• Kent Overstreet's avatar
    bcachefs: Allow existing stripes to be updated with new data buckets · 0ba95acc
    Kent Overstreet authored
    This solves internal fragmentation within stripes. We already have
    copygc, which evacuates buckets that are partially or mostly empty, but
    it's up to the ec code that manages stripes to deal with stripes that
    have empty buckets in them.
    
    This patch changes the path for creating new stripes to check if there's
    existing stripes with empty buckets - and if so, update them with new
    data buckets instead of creating new stripes.
    
    TODO: improve the disk space accounting so that we can only use this
    (more expensive path) when we have too much fragmentation in existing
    stripes.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    0ba95acc
ec.c 35.6 KB