bcachefs: Improve tracepoints slightly in commit path
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 9 Jan 2020 23:30:05 +0000 (18:30 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:34 +0000 (17:08 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_update_leaf.c

index 0c6c2b5b15b39527739b856dd1daa650bebff3e3..baf97d785774ea284540cbd61e15db21e0e3fb16 100644 (file)
@@ -706,10 +706,18 @@ int __bch2_trans_commit(struct btree_trans *trans)
                trans_trigger_run = false;
 
                trans_for_each_update(trans, i) {
-                       /* we know trans->nounlock won't be set here: */
-                       if (unlikely(!(i->iter->locks_want < 1
-                                      ? __bch2_btree_iter_upgrade(i->iter, 1)
-                                      : i->iter->uptodate <= BTREE_ITER_NEED_PEEK))) {
+                       if (unlikely(i->iter->uptodate > BTREE_ITER_NEED_PEEK)) {
+                               trace_trans_restart_traverse(trans->ip);
+                               ret = -EINTR;
+                               goto out;
+                       }
+
+                       /*
+                        * We're not using bch2_btree_iter_upgrade here because
+                        * we know trans->nounlock can't be set:
+                        */
+                       if (unlikely(i->iter->locks_want < 1 &&
+                                    !__bch2_btree_iter_upgrade(i->iter, 1))) {
                                trace_trans_restart_upgrade(trans->ip);
                                ret = -EINTR;
                                goto out;