• Kent Overstreet's avatar
    bcachefs: Disk space accounting rewrite · 1d16c605
    Kent Overstreet authored
    Main part of the disk accounting rewrite.
    
    This is a wholesale rewrite of the existing disk space accounting, which
    relies on percepu counters that are sharded by journal buffer, and
    rolled up and added to each journal write.
    
    With the new scheme, every set of counters is a distinct key in the
    accounting btree; this fixes scaling limitations of the old scheme,
    where counters took up space in each journal entry and required multiple
    percpu counters.
    
    Now, in memory accounting requires a single set of percpu counters - not
    multiple for each in flight journal buffer - and in the future we'll
    probably also have counters that don't use in memory percpu counters,
    they're not strictly required.
    
    An accounting update is now a normal btree update, using the btree write
    buffer path. At transaction commit time, we apply accounting updates to
    the in memory counters, which are percpu counters indexed in an
    eytzinger tree by the accounting key.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    1d16c605
btree_trans_commit.c 32.6 KB