Skip to content

Commit 9c13cc9

Browse files
alanskindKent Overstreet
authored andcommitted
Revert "bcachefs: Fix bch2_btree_node_upgrade()"
This reverts commit 62448af. six_lock_tryupgrade fails only if there is an intent lock held, it won't fail no matter how many read locks are held. Signed-off-by: Alan Huang <mmpgouride@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
1 parent c72deb0 commit 9c13cc9

File tree

1 file changed

+4
-18
lines changed

1 file changed

+4
-18
lines changed

fs/bcachefs/btree_locking.c

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,6 @@ bool bch2_btree_node_upgrade(struct btree_trans *trans,
512512
struct btree_path *path, unsigned level)
513513
{
514514
struct btree *b = path->l[level].b;
515-
struct six_lock_count count = bch2_btree_node_lock_counts(trans, path, &b->c, level);
516515

517516
if (!is_btree_node(path, level))
518517
return false;
@@ -536,24 +535,11 @@ bool bch2_btree_node_upgrade(struct btree_trans *trans,
536535
if (race_fault())
537536
return false;
538537

539-
if (btree_node_locked(path, level)) {
540-
bool ret;
541-
542-
six_lock_readers_add(&b->c.lock, -count.n[SIX_LOCK_read]);
543-
ret = six_lock_tryupgrade(&b->c.lock);
544-
six_lock_readers_add(&b->c.lock, count.n[SIX_LOCK_read]);
545-
546-
if (ret)
547-
goto success;
548-
} else {
549-
if (six_relock_type(&b->c.lock, SIX_LOCK_intent, path->l[level].lock_seq))
550-
goto success;
551-
}
538+
if (btree_node_locked(path, level)
539+
? six_lock_tryupgrade(&b->c.lock)
540+
: six_relock_type(&b->c.lock, SIX_LOCK_intent, path->l[level].lock_seq))
541+
goto success;
552542

553-
/*
554-
* Do we already have an intent lock via another path? If so, just bump
555-
* lock count:
556-
*/
557543
if (btree_node_lock_seq_matches(path, b, level) &&
558544
btree_node_lock_increment(trans, &b->c, level, BTREE_NODE_INTENT_LOCKED)) {
559545
btree_node_unlock(trans, path, level);

0 commit comments

Comments
 (0)