summaryrefslogtreecommitdiff
path: root/libbcachefs/fs-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/fs-io.c')
-rw-r--r--libbcachefs/fs-io.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/libbcachefs/fs-io.c b/libbcachefs/fs-io.c
index 5eb62f9d..8b41be87 100644
--- a/libbcachefs/fs-io.c
+++ b/libbcachefs/fs-io.c
@@ -974,7 +974,8 @@ alloc_io:
(struct disk_reservation) {
.nr_replicas = c->opts.data_replicas,
},
- foreground_write_point(c, inode->ei_last_dirtied),
+ c->fastest_devs,
+ inode->ei_last_dirtied,
POS(inum, 0),
&inode->ei_journal_seq,
BCH_WRITE_THROTTLE);
@@ -1545,10 +1546,11 @@ static void bch2_do_direct_IO_write(struct dio_write *dio)
dio->iop.is_dio = true;
dio->iop.new_i_size = U64_MAX;
bch2_write_op_init(&dio->iop.op, dio->c, dio->res,
- foreground_write_point(dio->c, (unsigned long) current),
- POS(inode->v.i_ino, (dio->offset + dio->written) >> 9),
- &inode->ei_journal_seq,
- flags|BCH_WRITE_THROTTLE);
+ dio->c->fastest_devs,
+ (unsigned long) dio->task,
+ POS(inode->v.i_ino, (dio->offset + dio->written) >> 9),
+ &inode->ei_journal_seq,
+ flags|BCH_WRITE_THROTTLE);
dio->iop.op.index_update_fn = bchfs_write_index_update;
dio->res.sectors -= bio_sectors(bio);
@@ -1568,13 +1570,13 @@ static void bch2_dio_write_loop_async(struct closure *cl)
bch2_dio_write_done(dio);
if (dio->iter.count && !dio->error) {
- use_mm(dio->mm);
+ use_mm(dio->task->mm);
pagecache_block_get(&mapping->add_lock);
bch2_do_direct_IO_write(dio);
pagecache_block_put(&mapping->add_lock);
- unuse_mm(dio->mm);
+ unuse_mm(dio->task->mm);
continue_at(&dio->cl, bch2_dio_write_loop_async, NULL);
} else {
@@ -1617,7 +1619,7 @@ static int bch2_direct_IO_write(struct bch_fs *c,
dio->offset = offset;
dio->iovec = NULL;
dio->iter = *iter;
- dio->mm = current->mm;
+ dio->task = current;
closure_init(&dio->cl, NULL);
if (offset + iter->count > inode->v.i_size)