Lines Matching refs:bdev_io
188 vbdev_error_reset(struct error_disk *error_disk, struct spdk_bdev_io *bdev_io)
190 spdk_for_each_channel(&error_disk->part, vbdev_error_ch_abort_ios, bdev_io,
230 vbdev_error_corrupt_io_data(struct spdk_bdev_io *bdev_io, uint64_t corrupt_offset,
236 if (bdev_io->u.bdev.iovs == NULL || bdev_io->u.bdev.iovs[0].iov_base == NULL) {
240 for (i = 0; i < bdev_io->u.bdev.iovcnt; i++) {
241 if (bdev_io->u.bdev.iovs[i].iov_len > corrupt_offset) {
242 buf = (uint8_t *)bdev_io->u.bdev.iovs[i].iov_base;
248 corrupt_offset -= bdev_io->u.bdev.iovs[i].iov_len;
253 vbdev_error_complete_request(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
255 struct error_io *error_io = (struct error_io *)bdev_io->driver_ctx;
257 struct error_disk *error_disk = bdev_io->bdev->ctxt;
258 struct error_channel *ch = spdk_io_channel_get_ctx(spdk_bdev_io_get_io_channel(bdev_io));
263 if (success && bdev_io->type == SPDK_BDEV_IO_TYPE_READ) {
265 vbdev_error_corrupt_io_data(bdev_io,
266 error_disk->error_vector[bdev_io->type].corrupt_offset,
267 error_disk->error_vector[bdev_io->type].corrupt_value);
271 spdk_bdev_io_complete(bdev_io, status);
275 vbdev_error_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
277 struct error_io *error_io = (struct error_io *)bdev_io->driver_ctx;
279 struct error_disk *error_disk = bdev_io->bdev->ctxt;
282 if (bdev_io->type == SPDK_BDEV_IO_TYPE_RESET) {
283 vbdev_error_reset(error_disk, bdev_io);
287 error_io->error_type = vbdev_error_get_error_type(error_disk, ch, bdev_io->type);
291 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
294 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_NOMEM);
300 if (bdev_io->type == SPDK_BDEV_IO_TYPE_WRITE) {
301 vbdev_error_corrupt_io_data(bdev_io,
302 error_disk->error_vector[bdev_io->type].corrupt_offset,
303 error_disk->error_vector[bdev_io->type].corrupt_value);
308 rc = spdk_bdev_part_submit_request_ext(&ch->part_ch, bdev_io,
313 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);