Skip to content

Commit ad29cf9

Browse files
author
Kent Overstreet
committed
bcachefs: set_btree_iter_dontneed also clears should_be_locked
This is part of a larger series cleaning up the semantics of should_be_locked and adding assertions around it; if we don't need an iterator/path anymore, it clearly doesn't need to be locked. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
1 parent 3078e05 commit ad29cf9

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

fs/bcachefs/btree_iter.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,13 @@ static inline void set_btree_iter_dontneed(struct btree_iter *iter)
498498
{
499499
struct btree_trans *trans = iter->trans;
500500

501-
if (!trans->restarted)
502-
btree_iter_path(trans, iter)->preserve = false;
501+
if (!iter->path || trans->restarted)
502+
return;
503+
504+
struct btree_path *path = btree_iter_path(trans, iter);
505+
path->preserve = false;
506+
if (path->ref == 1)
507+
path->should_be_locked = false;
503508
}
504509

505510
void *__bch2_trans_kmalloc(struct btree_trans *, size_t);

0 commit comments

Comments
 (0)