btrfs: account ticket size at add/delete time
Instead of iterating all pending tickets on the normal/priority list to sum their total size the cost can be amortized across ticket addition/ removal. This turns O(n) + O(m) (where n is the size of the normal list and m of the priority list) into O(1). This will mostly have effect in workloads that experience heavy flushing. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:

committed by
David Sterba

parent
f8e6608180
commit
db161806dc
@@ -54,6 +54,13 @@ struct btrfs_space_info {
|
||||
struct list_head ro_bgs;
|
||||
struct list_head priority_tickets;
|
||||
struct list_head tickets;
|
||||
|
||||
/*
|
||||
* Size of space that needs to be reclaimed in order to satisfy pending
|
||||
* tickets
|
||||
*/
|
||||
u64 reclaim_size;
|
||||
|
||||
/*
|
||||
* tickets_id just indicates the next ticket will be handled, so note
|
||||
* it's not stored per ticket.
|
||||
|
Reference in New Issue
Block a user