diff options
author | Liu Bo <bo.liu@linux.alibaba.com> | 2018-08-23 03:51:50 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-10-15 17:23:33 +0200 |
commit | e3d039656384288bbe952413d8d404b3035fe7d7 (patch) | |
tree | 0a1f7bfe1f829f2ba99c938ab0ffb03eb27fa6ac /fs/btrfs/backref.c | |
parent | 5c9d028b3b174e5cf3678a7b0c14e21e51665793 (diff) | |
download | linux-stable-e3d039656384288bbe952413d8d404b3035fe7d7.tar.gz linux-stable-e3d039656384288bbe952413d8d404b3035fe7d7.tar.bz2 linux-stable-e3d039656384288bbe952413d8d404b3035fe7d7.zip |
Btrfs: delayed-refs: use rb_first_cached for ref_tree
rb_first_cached() trades an extra pointer "leftmost" for doing the same
job as rb_first() but in O(1).
Functions manipulating href->ref_tree need to get the first entry, this
converts href->ref_tree to use rb_first_cached().
For more details about the optimization see patch "Btrfs: delayed-refs:
use rb_first_cached for href_root".
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/backref.c')
-rw-r--r-- | fs/btrfs/backref.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 84006e3dd105..1854835e082b 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -769,7 +769,7 @@ static int add_delayed_refs(const struct btrfs_fs_info *fs_info, btrfs_disk_key_to_cpu(&tmp_op_key, &extent_op->key); spin_lock(&head->lock); - for (n = rb_first(&head->ref_tree); n; n = rb_next(n)) { + for (n = rb_first_cached(&head->ref_tree); n; n = rb_next(n)) { node = rb_entry(n, struct btrfs_delayed_ref_node, ref_node); if (node->seq > seq) |