summaryrefslogtreecommitdiff
path: root/fs/bcachefs/snapshot.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-10-19 15:23:56 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-31 12:18:11 -0400
commit0dd092bf1091a114f22136e5776aec21e6e4af2a (patch)
tree7ee7fa78f9a323b46723d353f114634cd6e436a4 /fs/bcachefs/snapshot.c
parent20e425d301d673dbd5df0c9d4b186c70b43813bb (diff)
downloadlwn-0dd092bf1091a114f22136e5776aec21e6e4af2a.tar.gz
lwn-0dd092bf1091a114f22136e5776aec21e6e4af2a.zip
bcachefs: Fix lock ordering with snapshot_create_lock
We must not hold btree locks while taking snapshot_create_lock - this fixes a lockdep splat. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/snapshot.c')
-rw-r--r--fs/bcachefs/snapshot.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/bcachefs/snapshot.c b/fs/bcachefs/snapshot.c
index 4982468bfe11..5a62d2e14cb4 100644
--- a/fs/bcachefs/snapshot.c
+++ b/fs/bcachefs/snapshot.c
@@ -1447,6 +1447,7 @@ int bch2_delete_dead_snapshots(struct bch_fs *c)
}
}
+ bch2_trans_unlock(trans);
down_write(&c->snapshot_create_lock);
for_each_btree_key(trans, iter, BTREE_ID_snapshots,