Lines Matching refs:io

40 	closure_type(io, struct moving_io, cl);
42 kfree(io);
47 closure_type(io, struct moving_io, cl);
48 struct bio *bio = &io->bio.bio;
52 if (io->op.replace_collision)
53 trace_bcache_gc_copy_collision(&io->w->key);
55 bch_keybuf_del(&io->op.c->moving_gc_keys, io->w);
57 up(&io->op.c->moving_in_flight);
65 struct moving_io *io = container_of(bio->bi_private,
69 io->op.status = bio->bi_status;
71 ptr_stale(io->op.c, &b->key, 0)) {
72 io->op.status = BLK_STS_IOERR;
75 bch_bbio_endio(io->op.c, bio, bio->bi_status, "reading data to move");
78 static void moving_init(struct moving_io *io)
80 struct bio *bio = &io->bio.bio;
83 DIV_ROUND_UP(KEY_SIZE(&io->w->key), PAGE_SECTORS), 0);
87 bio->bi_iter.bi_size = KEY_SIZE(&io->w->key) << 9;
88 bio->bi_private = &io->cl;
94 closure_type(io, struct moving_io, cl);
95 struct data_insert_op *op = &io->op;
98 moving_init(io);
100 io->bio.bio.bi_iter.bi_sector = KEY_START(&io->w->key);
102 op->bio = &io->bio.bio;
104 op->writeback = KEY_DIRTY(&io->w->key);
105 op->csum = KEY_CSUM(&io->w->key);
107 bkey_copy(&op->replace_key, &io->w->key);
118 closure_type(io, struct moving_io, cl);
119 struct bio *bio = &io->bio.bio;
121 bch_submit_bbio(bio, io->op.c, &io->w->key, 0);
123 continue_at(cl, write_moving, io->op.wq);
129 struct moving_io *io;
148 io = kzalloc(struct_size(io, bio.bio.bi_inline_vecs,
151 if (!io)
154 w->private = io;
155 io->w = w;
156 io->op.inode = KEY_INODE(&w->key);
157 io->op.c = c;
158 io->op.wq = c->moving_gc_wq;
160 moving_init(io);
161 bio = &io->bio.bio;
172 closure_call(&io->cl, read_moving_submit, NULL, &cl);