• Kent Overstreet's avatar
    bcachefs: Pin btree cache in ram for random access in fsck · 91dcad18
    Kent Overstreet authored
    Various phases of fsck involve checking references from one btree to
    another: this means doing a sequential scan of one btree, and then
    mostly random access into the second.
    
    This is particularly painful for checking extents <-> backpointers; we
    can prefetch btree node access on the sequential scan, but not on the
    random access portion, and this is particularly painful on spinning
    rust, where we'd like to keep the pipeline fairly full of btree node
    reads so that the elevator can reduce seeking.
    
    This patch implements prefetching and pinning of the portion of the
    btree that we'll be doing random access to. We already calculate how
    much of the random access btree will fit in memory so it's a fairly
    straightforward change.
    
    This will put more pressure on system memory usage, so we introduce a
    new option, fsck_memory_usage_percent, which is the percentage of total
    system ram that fsck is allowed to pin.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    91dcad18
btree_cache.c 30.1 KB