aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-10-21 19:58:06 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:08:30 -0400
commitfbc519ab2e3e8cfb7d9a660fa319d9c44bdd937e (patch)
tree5fc66e4f0fbfbb32e6051f56908b308d1f3a6084 /fs
parent2d78737d9686faa363dde0b8fdef224ae29cff55 (diff)
bcachefs: Don't submit bio in write path under lock
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs')
-rw-r--r--fs/bcachefs/io.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c
index d6d777bb53da..6d416f71f055 100644
--- a/fs/bcachefs/io.c
+++ b/fs/bcachefs/io.c
@@ -1008,6 +1008,8 @@ do_write:
bkey_start_pos(&key_to_write->k),
total_input >> 9);
+ bch2_alloc_sectors_done(c, wp);
+
dst->bi_end_io = bch2_write_endio;
dst->bi_private = &op->cl;
dst->bi_opf = REQ_OP_WRITE;
@@ -1022,6 +1024,8 @@ csum_err:
"rewriting existing data (memory corruption?)");
ret = -EIO;
err:
+ bch2_alloc_sectors_done(c, wp);
+
if (to_wbio(dst)->bounce)
bch2_bio_free_pages_pool(c, dst);
if (to_wbio(dst)->put_bio)
@@ -1072,10 +1076,9 @@ again:
goto flush_io;
}
- ret = bch2_write_extent(op, wp);
-
bch2_open_bucket_get(c, wp, &op->open_buckets);
- bch2_alloc_sectors_done(c, wp);
+
+ ret = bch2_write_extent(op, wp);
if (ret < 0)
goto err;