diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-03-22 06:42:46 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-04-30 17:17:04 -0400 |
commit | 666a9c167494b4526c097f09617568a8a0a30d54 (patch) | |
tree | 87c092ae81f0be3314c502e5709da65dd87db0d0 | |
parent | fa3291a8fe990d45dd4ffbd58bdb73fd7f151205 (diff) |
update path microoptimizations
-rw-r--r-- | fs/bcachefs/btree_locking.h | 2 | ||||
-rw-r--r-- | fs/bcachefs/btree_update_leaf.c | 15 |
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) && |