Lines Matching defs:io

98 static void cfcs_datamove(union ctl_io *io);
99 static void cfcs_done(union ctl_io *io);
288 cfcs_datamove(union ctl_io *io)
299 ccb = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr;
326 io->scsiio.kern_rel_offset) {
328 cam_sg_offset = io->scsiio.kern_rel_offset -
342 cam_sg_offset = io->scsiio.kern_rel_offset;
348 if (io->scsiio.kern_sg_entries > 0) {
349 ctl_sglist = (struct ctl_sg_entry *)io->scsiio.kern_data_ptr;
350 ctl_sg_count = io->scsiio.kern_sg_entries;
353 ctl_sglist->addr = io->scsiio.kern_data_ptr;
354 ctl_sglist->len = io->scsiio.kern_data_len;
369 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR) {
381 if ((io->io_hdr.flags & CTL_FLAG_DATA_MASK) ==
396 io->scsiio.ext_data_filled += len_to_copy;
397 io->scsiio.kern_data_resid -= len_to_copy;
412 if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SUCCESS) {
413 io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = NULL;
414 io->io_hdr.flags |= CTL_FLAG_STATUS_SENT;
416 io->scsiio.ext_data_filled;
422 io->scsiio.be_move_done(io);
426 cfcs_done(union ctl_io *io)
430 ccb = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr;
432 ctl_free_io(io);
439 KASSERT(((io->io_hdr.status & CTL_STATUS_MASK) != CTL_STATUS_NONE),
440 ("invalid CTL status %#x", io->io_hdr.status));
447 io->scsiio.ext_data_filled;
450 switch (io->io_hdr.status & CTL_STATUS_MASK) {
456 ccb->csio.scsi_status = io->scsiio.scsi_status;
457 bcopy(&io->scsiio.sense_data, &ccb->csio.sense_data,
458 min(io->scsiio.sense_len, ccb->csio.sense_len));
459 if (ccb->csio.sense_len > io->scsiio.sense_len)
461 io->scsiio.sense_len;
478 ctl_free_io(io);
497 union ctl_io *io;
524 io = ctl_alloc_io_nowait(softc->port.ctl_pool_ref);
525 if (io == NULL) {
532 ctl_zero_io(io);
534 io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = ccb;
535 ccb->ccb_h.io_ptr = io;
541 io->io_hdr.io_type = CTL_IO_SCSI;
542 io->io_hdr.nexus.initid = 1;
543 io->io_hdr.nexus.targ_port = softc->port.targ_port;
544 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
553 io->scsiio.tag_num = atomic_fetchadd_32(&softc->cur_tag_num, 1);
554 csio->tag_id = io->scsiio.tag_num;
557 io->scsiio.tag_type = CTL_TAG_UNTAGGED;
560 io->scsiio.tag_type = CTL_TAG_SIMPLE;
563 io->scsiio.tag_type = CTL_TAG_HEAD_OF_QUEUE;
566 io->scsiio.tag_type = CTL_TAG_ORDERED;
569 io->scsiio.tag_type = CTL_TAG_ACA;
572 io->scsiio.tag_type = CTL_TAG_UNTAGGED;
577 if (csio->cdb_len > sizeof(io->scsiio.cdb)) {
579 __func__, csio->cdb_len, sizeof(io->scsiio.cdb));
581 io->scsiio.cdb_len = min(csio->cdb_len, sizeof(io->scsiio.cdb));
582 bcopy(scsiio_cdb_ptr(csio), io->scsiio.cdb, io->scsiio.cdb_len);
585 err = ctl_queue(io);
590 ctl_free_io(io);
598 union ctl_io *io;
617 io = ctl_alloc_io_nowait(softc->port.ctl_pool_ref);
618 if (io == NULL) {
625 ctl_zero_io(io);
627 io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = ccb;
628 ccb->ccb_h.io_ptr = io;
630 io->io_hdr.io_type = CTL_IO_TASK;
631 io->io_hdr.nexus.initid = 1;
632 io->io_hdr.nexus.targ_port = softc->port.targ_port;
633 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
635 io->taskio.task_action = CTL_TASK_ABORT_TASK;
636 io->taskio.tag_num = abort_ccb->csio.tag_id;
639 io->taskio.tag_type = CTL_TAG_UNTAGGED;
642 io->taskio.tag_type = CTL_TAG_SIMPLE;
645 io->taskio.tag_type = CTL_TAG_HEAD_OF_QUEUE;
648 io->taskio.tag_type = CTL_TAG_ORDERED;
651 io->taskio.tag_type = CTL_TAG_ACA;
654 io->taskio.tag_type = CTL_TAG_UNTAGGED;
659 err = ctl_queue(io);
664 ctl_free_io(io);
701 union ctl_io *io;
712 io = ctl_alloc_io_nowait(softc->port.ctl_pool_ref);
713 if (io == NULL) {
720 ctl_zero_io(io);
723 io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = ccb;
724 ccb->ccb_h.io_ptr = io;
726 io->io_hdr.io_type = CTL_IO_TASK;
727 io->io_hdr.nexus.initid = 1;
728 io->io_hdr.nexus.targ_port = softc->port.targ_port;
729 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
732 io->taskio.task_action = CTL_TASK_BUS_RESET;
734 io->taskio.task_action = CTL_TASK_LUN_RESET;
736 err = ctl_queue(io);
741 ctl_free_io(io);