summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-08-03 13:58:36 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2020-08-03 14:00:32 -0400
commit8198cc36bd1d47efcb490cd6af3f8f933da6ff4c (patch)
tree2e0749677a525f0e1b7fd1ad177e2c7197322774
parentcb9bbd60836147b11efa525fd825eb49914fb855 (diff)
bcachefs: Don't disallow btree writes to RO devices
There's an inherent race with setting devices RO when they have dirty btree nodes on them. We already check if a btree node is on an RO device before we dirty it, so this patch just allows those writes so that we don't have errors forcing the entire filesystem read only when trying to remove a device. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/io.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c
index 19b79e60126a..1d6f0e4e7cb3 100644
--- a/fs/bcachefs/io.c
+++ b/fs/bcachefs/io.c
@@ -471,7 +471,8 @@ void bch2_submit_wbio_replicas(struct bch_write_bio *wbio, struct bch_fs *c,
n->c = c;
n->dev = ptr->dev;
- n->have_ioref = bch2_dev_get_ioref(ca, WRITE);
+ n->have_ioref = bch2_dev_get_ioref(ca,
+ type == BCH_DATA_btree ? READ : WRITE);
n->submit_time = local_clock();
n->bio.bi_iter.bi_sector = ptr->offset;