projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a66ff26
)
bcachefs: Fix nocow locks deadlock
author
Kent Overstreet
<kent.overstreet@linux.dev>
Mon, 11 Dec 2023 23:40:17 +0000
(18:40 -0500)
committer
Kent Overstreet
<kent.overstreet@linux.dev>
Tue, 12 Dec 2023 01:43:11 +0000
(20:43 -0500)
On trylock failure we were waiting for outstanding reads to complete -
but nocow locks need to be held until the whole move is finished.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/data_update.c
patch
|
blob
|
history
diff --git
a/fs/bcachefs/data_update.c
b/fs/bcachefs/data_update.c
index 2418c528c5333b6e621df17e1579cd2205264e36..b05457d284a6009c8077ba01d401bd8fe42e63bf 100644
(file)
--- a/
fs/bcachefs/data_update.c
+++ b/
fs/bcachefs/data_update.c
@@
-560,7
+560,8
@@
int bch2_data_update_init(struct btree_trans *trans,
move_ctxt_wait_event(ctxt,
(locked = bch2_bucket_nocow_trylock(&c->nocow_locks,
PTR_BUCKET_POS(c, &p.ptr), 0)) ||
- !atomic_read(&ctxt->read_sectors));
+ (!atomic_read(&ctxt->read_sectors) &&
+ !atomic_read(&ctxt->write_sectors)));
if (!locked)
bch2_bucket_nocow_lock(&c->nocow_locks,