From 005def8ff16885743b9d711fe19fc039c0254eed Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 21 Oct 2022 17:37:42 -0400 Subject: bcachefs: Optimize __bch2_btree_node_iter_advance() This replaces an expensive memmove() call with an open-coded version. Signed-off-by: Kent Overstreet --- fs/bcachefs/bset.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'fs/bcachefs') diff --git a/fs/bcachefs/bset.c b/fs/bcachefs/bset.c index e92737eb34e6..aa8508efca00 100644 --- a/fs/bcachefs/bset.c +++ b/fs/bcachefs/bset.c @@ -1429,7 +1429,10 @@ static inline void __bch2_btree_node_iter_advance(struct btree_node_iter *iter, EBUG_ON(iter->data->k > iter->data->end); if (unlikely(__btree_node_iter_set_end(iter, 0))) { - bch2_btree_node_iter_set_drop(iter, iter->data); + /* avoid an expensive memmove call: */ + iter->data[0] = iter->data[1]; + iter->data[1] = iter->data[2]; + iter->data[2] = (struct btree_node_iter_set) { 0, 0 }; return; } -- cgit v1.2.3