Lines Matching refs:io

113 static int ctl_backend_ramdisk_move_done(union ctl_io *io);
114 static int ctl_backend_ramdisk_submit(union ctl_io *io);
115 static void ctl_backend_ramdisk_continue(union ctl_io *io);
128 static int ctl_backend_ramdisk_config_write(union ctl_io *io);
129 static int ctl_backend_ramdisk_config_read(union ctl_io *io);
212 ctl_backend_ramdisk_move_done(union ctl_io *io) in ctl_backend_ramdisk_move_done() argument
221 cbe_lun = (struct ctl_be_lun *)io->io_hdr.ctl_private[ in ctl_backend_ramdisk_move_done()
226 bintime_sub(&cur_bt, &io->io_hdr.dma_start_bt); in ctl_backend_ramdisk_move_done()
227 bintime_add(&io->io_hdr.dma_bt, &cur_bt); in ctl_backend_ramdisk_move_done()
229 io->io_hdr.num_dmas++; in ctl_backend_ramdisk_move_done()
230 if (io->scsiio.kern_sg_entries > 0) in ctl_backend_ramdisk_move_done()
231 free(io->scsiio.kern_data_ptr, M_RAMDISK); in ctl_backend_ramdisk_move_done()
232 io->scsiio.kern_rel_offset += io->scsiio.kern_data_len; in ctl_backend_ramdisk_move_done()
233 if (io->io_hdr.flags & CTL_FLAG_ABORT) { in ctl_backend_ramdisk_move_done()
235 } else if ((io->io_hdr.port_status == 0) && in ctl_backend_ramdisk_move_done()
236 ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_STATUS_NONE)) { in ctl_backend_ramdisk_move_done()
237 if (io->io_hdr.ctl_private[CTL_PRIV_BACKEND].integer > 0) { in ctl_backend_ramdisk_move_done()
240 &io->io_hdr, links); in ctl_backend_ramdisk_move_done()
246 ctl_set_success(&io->scsiio); in ctl_backend_ramdisk_move_done()
247 } else if ((io->io_hdr.port_status != 0) && in ctl_backend_ramdisk_move_done()
248 ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_STATUS_NONE || in ctl_backend_ramdisk_move_done()
249 (io->io_hdr.status & CTL_STATUS_MASK) == CTL_SUCCESS)) { in ctl_backend_ramdisk_move_done()
258 ctl_set_internal_failure(&io->scsiio, in ctl_backend_ramdisk_move_done()
261 io->io_hdr.port_status); in ctl_backend_ramdisk_move_done()
263 ctl_data_submit_done(io); in ctl_backend_ramdisk_move_done()
268 ctl_backend_ramdisk_submit(union ctl_io *io) in ctl_backend_ramdisk_submit() argument
273 cbe_lun = (struct ctl_be_lun *)io->io_hdr.ctl_private[ in ctl_backend_ramdisk_submit()
275 lbalen = (struct ctl_lba_len_flags *)&io->io_hdr.ctl_private[CTL_PRIV_LBA_LEN]; in ctl_backend_ramdisk_submit()
277 ctl_set_success(&io->scsiio); in ctl_backend_ramdisk_submit()
278 ctl_data_submit_done(io); in ctl_backend_ramdisk_submit()
281 io->io_hdr.ctl_private[CTL_PRIV_BACKEND].integer = in ctl_backend_ramdisk_submit()
283 ctl_backend_ramdisk_continue(io); in ctl_backend_ramdisk_submit()
288 ctl_backend_ramdisk_continue(union ctl_io *io) in ctl_backend_ramdisk_continue() argument
298 len = io->io_hdr.ctl_private[CTL_PRIV_BACKEND].integer; in ctl_backend_ramdisk_continue()
302 io->scsiio.kern_data_ptr = malloc(sizeof(struct ctl_sg_entry) * in ctl_backend_ramdisk_continue()
305 sg_entries = (struct ctl_sg_entry *)io->scsiio.kern_data_ptr; in ctl_backend_ramdisk_continue()
314 io->scsiio.kern_data_ptr = softc->ramdisk_pages[0]; in ctl_backend_ramdisk_continue()
319 io->scsiio.kern_data_ptr = softc->ramdisk_buffer; in ctl_backend_ramdisk_continue()
322 io->scsiio.be_move_done = ctl_backend_ramdisk_move_done; in ctl_backend_ramdisk_continue()
323 io->scsiio.kern_data_resid = 0; in ctl_backend_ramdisk_continue()
324 io->scsiio.kern_data_len = len_filled; in ctl_backend_ramdisk_continue()
325 io->scsiio.kern_sg_entries = sg_filled; in ctl_backend_ramdisk_continue()
326 io->io_hdr.flags |= CTL_FLAG_ALLOCATED; in ctl_backend_ramdisk_continue()
327 io->io_hdr.ctl_private[CTL_PRIV_BACKEND].integer -= len_filled; in ctl_backend_ramdisk_continue()
329 getbinuptime(&io->io_hdr.dma_start_bt); in ctl_backend_ramdisk_continue()
331 ctl_datamove(io); in ctl_backend_ramdisk_continue()
338 union ctl_io *io; in ctl_backend_ramdisk_worker() local
344 io = (union ctl_io *)STAILQ_FIRST(&be_lun->cont_queue); in ctl_backend_ramdisk_worker()
345 if (io != NULL) { in ctl_backend_ramdisk_worker()
346 STAILQ_REMOVE(&be_lun->cont_queue, &io->io_hdr, in ctl_backend_ramdisk_worker()
349 ctl_backend_ramdisk_continue(io); in ctl_backend_ramdisk_worker()
843 ctl_backend_ramdisk_config_write(union ctl_io *io) in ctl_backend_ramdisk_config_write() argument
848 cbe_lun = (struct ctl_be_lun *)io->io_hdr.ctl_private[ in ctl_backend_ramdisk_config_write()
851 switch (io->scsiio.cdb[0]) { in ctl_backend_ramdisk_config_write()
869 ctl_set_success(&io->scsiio); in ctl_backend_ramdisk_config_write()
870 ctl_config_write_done(io); in ctl_backend_ramdisk_config_write()
875 cdb = (struct scsi_start_stop_unit *)io->scsiio.cdb; in ctl_backend_ramdisk_config_write()
877 ctl_set_success(&io->scsiio); in ctl_backend_ramdisk_config_write()
878 ctl_config_write_done(io); in ctl_backend_ramdisk_config_write()
890 ctl_set_success(&io->scsiio); in ctl_backend_ramdisk_config_write()
891 ctl_config_write_done(io); in ctl_backend_ramdisk_config_write()
898 ctl_set_success(&io->scsiio); in ctl_backend_ramdisk_config_write()
899 ctl_config_write_done(io); in ctl_backend_ramdisk_config_write()
902 ctl_set_invalid_opcode(&io->scsiio); in ctl_backend_ramdisk_config_write()
903 ctl_config_write_done(io); in ctl_backend_ramdisk_config_write()
912 ctl_backend_ramdisk_config_read(union ctl_io *io) in ctl_backend_ramdisk_config_read() argument
916 switch (io->scsiio.cdb[0]) { in ctl_backend_ramdisk_config_read()
918 if (io->scsiio.cdb[1] == SGLS_SERVICE_ACTION) { in ctl_backend_ramdisk_config_read()
920 ctl_config_read_done(io); in ctl_backend_ramdisk_config_read()
924 ctl_set_invalid_field(&io->scsiio, in ctl_backend_ramdisk_config_read()
930 ctl_config_read_done(io); in ctl_backend_ramdisk_config_read()
934 ctl_set_invalid_opcode(&io->scsiio); in ctl_backend_ramdisk_config_read()
935 ctl_config_read_done(io); in ctl_backend_ramdisk_config_read()