• Kent Overstreet's avatar
    bcachefs: Improved copygc pipelining · 8fcdf814
    Kent Overstreet authored
    This improves copygc pipelining across multiple buckets: we now track
    each in flight bucket we're evacuating, with separate moving_contexts.
    
    This means that whereas previously we had to wait for outstanding moves
    to complete to ensure we didn't try to evacuate the same bucket twice,
    we can now just check buckets we want to evacuate against the pending
    list.
    
    This also mean we can run the verify_bucket_evacuated() check without
    killing pipelining - meaning it can now always be enabled, not just on
    debug builds.
    
    This is going to be important for the upcoming erasure coding work,
    where moving IOs that are being erasure coded will now skip the initial
    replication step; instead the IOs will wait on the stripe to complete.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    8fcdf814
move.h 2.44 KB