summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2022-11-22 23:47:22 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:46 -0400
commita2519a9688d3eeb6c4b2df3ab80b70e62458528d (patch)
tree9673969877ebf29328d714224778e522bf59eb11 /fs
parentc9ee99ad8c52a9d7f93e2e9f786a172a849622fd (diff)
downloadlwn-a2519a9688d3eeb6c4b2df3ab80b70e62458528d.tar.gz
lwn-a2519a9688d3eeb6c4b2df3ab80b70e62458528d.zip
bcachefs: Tiny bch2_trans_update_by_path_trace() optimization
This just removes a redundant comparison - there's more work we could do here to remove some redundant copying. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs')
-rw-r--r--fs/bcachefs/btree_update_leaf.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index 7029391496cb..3782dd56088f 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -1459,6 +1459,7 @@ bch2_trans_update_by_path_trace(struct btree_trans *trans, struct btree_path *pa
{
struct bch_fs *c = trans->c;
struct btree_insert_entry *i, n;
+ int cmp;
EBUG_ON(!path->should_be_locked);
EBUG_ON(trans->nr_updates >= BTREE_ITER_MAX);
@@ -1485,12 +1486,13 @@ bch2_trans_update_by_path_trace(struct btree_trans *trans, struct btree_path *pa
* Pending updates are kept sorted: first, find position of new update,
* then delete/trim any updates the new update overwrites:
*/
- trans_for_each_update(trans, i)
- if (btree_insert_entry_cmp(&n, i) <= 0)
+ trans_for_each_update(trans, i) {
+ cmp = btree_insert_entry_cmp(&n, i);
+ if (cmp <= 0)
break;
+ }
- if (i < trans->updates + trans->nr_updates &&
- !btree_insert_entry_cmp(&n, i)) {
+ if (!cmp && i < trans->updates + trans->nr_updates) {
EBUG_ON(i->insert_trigger_run || i->overwrite_trigger_run);
bch2_path_put(trans, i->path, true);