summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-03-22 06:42:46 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2019-04-30 17:17:04 -0400
commit666a9c167494b4526c097f09617568a8a0a30d54 (patch)
tree87c092ae81f0be3314c502e5709da65dd87db0d0
parentfa3291a8fe990d45dd4ffbd58bdb73fd7f151205 (diff)
update path microoptimizations
-rw-r--r--fs/bcachefs/btree_locking.h2
-rw-r--r--fs/bcachefs/btree_update_leaf.c15
2 files changed, 7 insertions, 10 deletions
diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
index e9686197a908..e6a0c55b6952 100644
--- a/fs/bcachefs/btree_locking.h
+++ b/fs/bcachefs/btree_locking.h
@@ -213,7 +213,7 @@ static inline void bch2_btree_node_lock_write(struct btree *b, struct btree_iter
EBUG_ON(iter->l[b->level].b != b);
EBUG_ON(iter->l[b->level].lock_seq != b->lock.state.seq);
- if (!six_trylock_write(&b->lock))
+ if (unlikely(!six_trylock_write(&b->lock)))
__bch2_btree_node_lock_write(b, iter);
}
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index dde1fc1f97a2..5ad864477ced 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -23,7 +23,7 @@ inline void bch2_btree_node_lock_for_insert(struct bch_fs *c, struct btree *b,
{
bch2_btree_node_lock_write(b, iter);
- if (btree_node_just_written(b) &&
+ if (unlikely(btree_node_just_written(b)) &&
bch2_btree_post_write_cleanup(c, b))
bch2_btree_iter_reinit_node(iter, b);
@@ -812,12 +812,8 @@ static int __bch2_trans_commit(struct btree_trans *trans,
int ret;
trans_for_each_update_iter(trans, i) {
- unsigned old_locks_want = i->iter->locks_want;
- unsigned old_uptodate = i->iter->uptodate;
-
if (!bch2_btree_iter_upgrade(i->iter, 1, true)) {
- trans_restart(" (failed upgrade, locks_want %u uptodate %u)",
- old_locks_want, old_uptodate);
+ trans_restart(" (failed upgrade)");
ret = -EINTR;
goto err;
}
@@ -852,7 +848,7 @@ int bch2_trans_commit(struct btree_trans *trans,
unsigned flags)
{
struct bch_fs *c = trans->c;
- struct btree_insert_entry *i;
+ struct btree_insert_entry *i = NULL;
unsigned orig_mem_top = trans->mem_top;
int ret = 0;
@@ -874,8 +870,9 @@ int bch2_trans_commit(struct btree_trans *trans,
trans->journal_seq = journal_seq;
trans->flags = flags;
- trans_for_each_update(trans, i)
- btree_insert_entry_checks(trans, i);
+ if (IS_ENABLED(CONFIG_BCACHEFS_DEBUG))
+ trans_for_each_update(trans, i)
+ btree_insert_entry_checks(trans, i);
bch2_btree_trans_verify_locks(trans);
if (unlikely(!(trans->flags & BTREE_INSERT_NOCHECK_RW) &&