Skip to content
  • Filipe Manana's avatar
    Btrfs: simpler and more efficient cleanup of a log tree's extent io tree · 59b0713a
    Filipe Manana authored
    
    
    We currently are in a loop finding each range (corresponding to a btree
    node/leaf) in a log root's extent io tree and then clean it up. This is a
    waste of time since we are traversing the extent io tree's rb_tree more
    times then needed (one for a range lookup and another for cleaning it up)
    without any good reason.
    
    We free the log trees when we are in the critical section of a transaction
    commit (the transaction state is set to TRANS_STATE_COMMIT_DOING), so it's
    of great convenience to do everything as fast as possible in order to
    reduce the time we block other tasks from starting a new transaction.
    
    So fix this by traversing the extent io tree once and cleaning up all its
    records in one go while traversing it.
    
    Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
    Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    59b0713a