Lines Matching refs:io

99 ctl_scsi_tur(union ctl_io *io, ctl_tag_type tag_type, uint8_t control)
104 ctl_scsi_zero_io(io);
106 io->io_hdr.io_type = CTL_IO_SCSI;
107 ctsio = &io->scsiio;
112 io->io_hdr.flags = CTL_FLAG_DATA_NONE;
123 ctl_scsi_inquiry(union ctl_io *io, uint8_t *data_ptr, int32_t data_len,
130 ctl_scsi_zero_io(io);
132 io->io_hdr.io_type = CTL_IO_SCSI;
133 ctsio = &io->scsiio;
141 io->io_hdr.io_type = CTL_IO_SCSI;
142 io->io_hdr.flags = CTL_FLAG_DATA_IN;
153 ctl_scsi_request_sense(union ctl_io *io, uint8_t *data_ptr,
160 ctl_scsi_zero_io(io);
162 io->io_hdr.io_type = CTL_IO_SCSI;
163 ctsio = &io->scsiio;
170 io->io_hdr.io_type = CTL_IO_SCSI;
171 io->io_hdr.flags = CTL_FLAG_DATA_IN;
182 ctl_scsi_report_luns(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len,
189 ctl_scsi_zero_io(io);
191 io->io_hdr.io_type = CTL_IO_SCSI;
192 ctsio = &io->scsiio;
199 io->io_hdr.io_type = CTL_IO_SCSI;
200 io->io_hdr.flags = CTL_FLAG_DATA_IN;
211 ctl_scsi_read_write_buffer(union ctl_io *io, uint8_t *data_ptr,
219 ctl_scsi_zero_io(io);
221 io->io_hdr.io_type = CTL_IO_SCSI;
222 ctsio = &io->scsiio;
235 io->io_hdr.io_type = CTL_IO_SCSI;
237 io->io_hdr.flags = CTL_FLAG_DATA_IN;
239 io->io_hdr.flags = CTL_FLAG_DATA_OUT;
250 ctl_scsi_read_write(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len,
257 ctl_scsi_zero_io(io);
259 io->io_hdr.io_type = CTL_IO_SCSI;
260 ctsio = &io->scsiio;
337 io->io_hdr.io_type = CTL_IO_SCSI;
339 io->io_hdr.flags = CTL_FLAG_DATA_IN;
341 io->io_hdr.flags = CTL_FLAG_DATA_OUT;
351 ctl_scsi_write_same(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len,
358 ctl_scsi_zero_io(io);
360 io->io_hdr.io_type = CTL_IO_SCSI;
361 ctsio = &io->scsiio;
371 io->io_hdr.io_type = CTL_IO_SCSI;
372 io->io_hdr.flags = CTL_FLAG_DATA_OUT;
382 ctl_scsi_read_capacity(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len,
388 ctl_scsi_zero_io(io);
390 io->io_hdr.io_type = CTL_IO_SCSI;
391 cdb = (struct scsi_read_capacity *)io->scsiio.cdb;
400 io->io_hdr.io_type = CTL_IO_SCSI;
401 io->io_hdr.flags = CTL_FLAG_DATA_IN;
402 io->scsiio.tag_type = tag_type;
403 io->scsiio.ext_data_ptr = data_ptr;
404 io->scsiio.ext_data_len = data_len;
405 io->scsiio.ext_sg_entries = 0;
406 io->scsiio.ext_data_filled = 0;
407 io->scsiio.sense_len = SSD_FULL_SIZE;
411 ctl_scsi_read_capacity_16(union ctl_io *io, uint8_t *data_ptr,
417 ctl_scsi_zero_io(io);
419 io->io_hdr.io_type = CTL_IO_SCSI;
420 cdb = (struct scsi_read_capacity_16 *)io->scsiio.cdb;
432 io->io_hdr.io_type = CTL_IO_SCSI;
433 io->io_hdr.flags = CTL_FLAG_DATA_IN;
434 io->scsiio.tag_type = tag_type;
435 io->scsiio.ext_data_ptr = data_ptr;
436 io->scsiio.ext_data_len = data_len;
437 io->scsiio.ext_sg_entries = 0;
438 io->scsiio.ext_data_filled = 0;
439 io->scsiio.sense_len = SSD_FULL_SIZE;
443 ctl_scsi_mode_sense(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len,
448 ctl_scsi_zero_io(io);
455 cdb = (struct scsi_mode_sense_6 *)io->scsiio.cdb;
467 cdb = (struct scsi_mode_sense_10 *)io->scsiio.cdb;
480 io->io_hdr.io_type = CTL_IO_SCSI;
481 io->io_hdr.flags = CTL_FLAG_DATA_IN;
482 io->scsiio.tag_type = tag_type;
483 io->scsiio.ext_data_ptr = data_ptr;
484 io->scsiio.ext_data_len = data_len;
485 io->scsiio.ext_sg_entries = 0;
486 io->scsiio.ext_data_filled = 0;
487 io->scsiio.sense_len = SSD_FULL_SIZE;
491 ctl_scsi_start_stop(union ctl_io *io, int start, int load_eject, int immediate,
496 cdb = (struct scsi_start_stop_unit *)io->scsiio.cdb;
498 ctl_scsi_zero_io(io);
509 io->io_hdr.io_type = CTL_IO_SCSI;
510 io->io_hdr.flags = CTL_FLAG_DATA_NONE;
511 io->scsiio.tag_type = tag_type;
512 io->scsiio.ext_data_ptr = NULL;
513 io->scsiio.ext_data_len = 0;
514 io->scsiio.ext_sg_entries = 0;
515 io->scsiio.ext_data_filled = 0;
516 io->scsiio.sense_len = SSD_FULL_SIZE;
520 ctl_scsi_sync_cache(union ctl_io *io, int immed, int reladr,
525 ctl_scsi_zero_io(io);
532 cdb = (struct scsi_sync_cache *)io->scsiio.cdb;
547 cdb = (struct scsi_sync_cache_16 *)io->scsiio.cdb;
560 io->io_hdr.io_type = CTL_IO_SCSI;
561 io->io_hdr.flags = CTL_FLAG_DATA_NONE;
562 io->scsiio.tag_type = tag_type;
563 io->scsiio.ext_data_ptr = NULL;
564 io->scsiio.ext_data_len = 0;
565 io->scsiio.ext_sg_entries = 0;
566 io->scsiio.ext_data_filled = 0;
567 io->scsiio.sense_len = SSD_FULL_SIZE;
571 ctl_scsi_persistent_res_in(union ctl_io *io, uint8_t *data_ptr,
578 ctl_scsi_zero_io(io);
580 cdb = (struct scsi_per_res_in *)io->scsiio.cdb;
586 io->io_hdr.io_type = CTL_IO_SCSI;
587 io->io_hdr.flags = CTL_FLAG_DATA_IN;
588 io->scsiio.tag_type = tag_type;
589 io->scsiio.ext_data_ptr = data_ptr;
590 io->scsiio.ext_data_len = data_len;
591 io->scsiio.ext_sg_entries = 0;
592 io->scsiio.ext_data_filled = 0;
593 io->scsiio.sense_len = SSD_FULL_SIZE;
597 ctl_scsi_persistent_res_out(union ctl_io *io, uint8_t *data_ptr,
606 ctl_scsi_zero_io(io);
608 cdb = (struct scsi_per_res_out *)io->scsiio.cdb;
643 io->io_hdr.io_type = CTL_IO_SCSI;
644 io->io_hdr.flags = CTL_FLAG_DATA_OUT;
645 io->scsiio.tag_type = tag_type;
646 io->scsiio.ext_data_ptr = data_ptr;
647 io->scsiio.ext_data_len = data_len;
648 io->scsiio.ext_sg_entries = 0;
649 io->scsiio.ext_data_filled = 0;
650 io->scsiio.sense_len = SSD_FULL_SIZE;
655 ctl_scsi_maintenance_in(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len,
660 ctl_scsi_zero_io(io);
662 cdb = (struct scsi_maintenance_in *)io->scsiio.cdb;
668 io->io_hdr.io_type = CTL_IO_SCSI;
669 io->io_hdr.flags = CTL_FLAG_DATA_IN;
670 io->scsiio.tag_type = tag_type;
671 io->scsiio.ext_data_ptr = data_ptr;
672 io->scsiio.ext_data_len = data_len;
673 io->scsiio.ext_sg_entries = 0;
674 io->scsiio.ext_data_filled = 0;
675 io->scsiio.sense_len = SSD_FULL_SIZE;
682 union ctl_io *io;
684 io = (union ctl_io *)malloc(sizeof(*io));
685 if (io == NULL)
688 io->io_hdr.nexus.initid = initid;
691 return (io);
695 ctl_scsi_free_io(union ctl_io *io)
697 free(io);
701 ctl_scsi_zero_io(union ctl_io *io)
705 if (io == NULL)
708 pool_ref = io->io_hdr.pool;
709 memset(io, 0, sizeof(*io));
710 io->io_hdr.pool = pool_ref;
730 ctl_io_sbuf(union ctl_io *io, struct sbuf *sb)
735 ctl_scsi_path_string(io, path_str, sizeof(path_str));
737 switch (io->io_hdr.io_type) {
740 ctl_scsi_command_string(&io->scsiio, NULL, sb);
742 io->scsiio.tag_num, io->scsiio.tag_type);
746 task_desc = ctl_scsi_task_string(&io->taskio);
749 io->taskio.task_action, io->taskio.task_action);
752 switch (io->taskio.task_action) {
755 io->taskio.tag_num, io->taskio.tag_type);
768 ctl_io_error_sbuf(union ctl_io *io, struct scsi_inquiry_data *inq_data,
775 ctl_io_sbuf(io, sb);
780 if ((io->io_hdr.status & CTL_STATUS_MASK) ==
787 ctl_scsi_path_string(io, path_str, sizeof(path_str));
792 io->io_hdr.status);
796 if ((io->io_hdr.io_type == CTL_IO_SCSI)
797 && ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SCSI_ERROR)) {
800 ctl_scsi_status_string(&io->scsiio));
802 if (io->scsiio.scsi_status == SCSI_STATUS_CHECK_COND)
803 ctl_scsi_sense_sbuf(&io->scsiio, inq_data,
809 ctl_io_string(union ctl_io *io, char *str, int str_len)
814 ctl_io_sbuf(io, &sb);
820 ctl_io_error_string(union ctl_io *io, struct scsi_inquiry_data *inq_data,
826 ctl_io_error_sbuf(io, inq_data, &sb);
834 ctl_io_print(union ctl_io *io)
838 printf("%s", ctl_io_string(io, str, sizeof(str)));
842 ctl_io_error_print(union ctl_io *io, struct scsi_inquiry_data *inq_data)
846 printf("%s", ctl_io_error_string(io, inq_data, str, sizeof(str)));
851 ctl_data_print(union ctl_io *io)
858 if (io->io_hdr.io_type != CTL_IO_SCSI)
860 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
862 if (io->scsiio.kern_sg_entries > 0) /* XXX: Implement */
864 ctl_scsi_path_string(io, path_str, sizeof(path_str));
865 len = min(io->scsiio.kern_data_len, 4096);
869 sbuf_printf(&sb, " %#6x:%04x:", io->scsiio.tag_num, i);
873 sbuf_printf(&sb, " %02x", io->scsiio.kern_data_ptr[i]);
884 ctl_io_error_print(union ctl_io *io, struct scsi_inquiry_data *inq_data,
889 fprintf(ofile, "%s", ctl_io_error_string(io, inq_data, str,