Lines Matching full:io
99 ctl_scsi_tur(union ctl_io *io, ctl_tag_type tag_type, uint8_t control) in ctl_scsi_tur() argument
104 ctl_scsi_zero_io(io); in ctl_scsi_tur()
106 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_tur()
107 ctsio = &io->scsiio; in ctl_scsi_tur()
112 io->io_hdr.flags = CTL_FLAG_DATA_NONE; in ctl_scsi_tur()
123 ctl_scsi_inquiry(union ctl_io *io, uint8_t *data_ptr, int32_t data_len, in ctl_scsi_inquiry() argument
130 ctl_scsi_zero_io(io); in ctl_scsi_inquiry()
132 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_inquiry()
133 ctsio = &io->scsiio; in ctl_scsi_inquiry()
141 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_inquiry()
142 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_inquiry()
153 ctl_scsi_request_sense(union ctl_io *io, uint8_t *data_ptr, in ctl_scsi_request_sense() argument
160 ctl_scsi_zero_io(io); in ctl_scsi_request_sense()
162 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_request_sense()
163 ctsio = &io->scsiio; in ctl_scsi_request_sense()
170 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_request_sense()
171 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_request_sense()
182 ctl_scsi_report_luns(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len, in ctl_scsi_report_luns() argument
189 ctl_scsi_zero_io(io); in ctl_scsi_report_luns()
191 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_report_luns()
192 ctsio = &io->scsiio; in ctl_scsi_report_luns()
199 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_report_luns()
200 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_report_luns()
211 ctl_scsi_read_write_buffer(union ctl_io *io, uint8_t *data_ptr, in ctl_scsi_read_write_buffer() argument
219 ctl_scsi_zero_io(io); in ctl_scsi_read_write_buffer()
221 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_write_buffer()
222 ctsio = &io->scsiio; in ctl_scsi_read_write_buffer()
235 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_write_buffer()
237 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_read_write_buffer()
239 io->io_hdr.flags = CTL_FLAG_DATA_OUT; in ctl_scsi_read_write_buffer()
250 ctl_scsi_read_write(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len, in ctl_scsi_read_write() argument
257 ctl_scsi_zero_io(io); in ctl_scsi_read_write()
259 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_write()
260 ctsio = &io->scsiio; in ctl_scsi_read_write()
337 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_write()
339 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_read_write()
341 io->io_hdr.flags = CTL_FLAG_DATA_OUT; in ctl_scsi_read_write()
351 ctl_scsi_write_same(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len, in ctl_scsi_write_same() argument
358 ctl_scsi_zero_io(io); in ctl_scsi_write_same()
360 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_write_same()
361 ctsio = &io->scsiio; in ctl_scsi_write_same()
371 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_write_same()
372 io->io_hdr.flags = CTL_FLAG_DATA_OUT; in ctl_scsi_write_same()
382 ctl_scsi_read_capacity(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len, in ctl_scsi_read_capacity() argument
388 ctl_scsi_zero_io(io); in ctl_scsi_read_capacity()
390 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_capacity()
391 cdb = (struct scsi_read_capacity *)io->scsiio.cdb; in ctl_scsi_read_capacity()
400 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_capacity()
401 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_read_capacity()
402 io->scsiio.tag_type = tag_type; in ctl_scsi_read_capacity()
403 io->scsiio.ext_data_ptr = data_ptr; in ctl_scsi_read_capacity()
404 io->scsiio.ext_data_len = data_len; in ctl_scsi_read_capacity()
405 io->scsiio.ext_sg_entries = 0; in ctl_scsi_read_capacity()
406 io->scsiio.ext_data_filled = 0; in ctl_scsi_read_capacity()
407 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_read_capacity()
411 ctl_scsi_read_capacity_16(union ctl_io *io, uint8_t *data_ptr, in ctl_scsi_read_capacity_16() argument
417 ctl_scsi_zero_io(io); in ctl_scsi_read_capacity_16()
419 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_capacity_16()
420 cdb = (struct scsi_read_capacity_16 *)io->scsiio.cdb; in ctl_scsi_read_capacity_16()
432 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_read_capacity_16()
433 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_read_capacity_16()
434 io->scsiio.tag_type = tag_type; in ctl_scsi_read_capacity_16()
435 io->scsiio.ext_data_ptr = data_ptr; in ctl_scsi_read_capacity_16()
436 io->scsiio.ext_data_len = data_len; in ctl_scsi_read_capacity_16()
437 io->scsiio.ext_sg_entries = 0; in ctl_scsi_read_capacity_16()
438 io->scsiio.ext_data_filled = 0; in ctl_scsi_read_capacity_16()
439 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_read_capacity_16()
443 ctl_scsi_mode_sense(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len, in ctl_scsi_mode_sense() argument
448 ctl_scsi_zero_io(io); in ctl_scsi_mode_sense()
455 cdb = (struct scsi_mode_sense_6 *)io->scsiio.cdb; in ctl_scsi_mode_sense()
467 cdb = (struct scsi_mode_sense_10 *)io->scsiio.cdb; in ctl_scsi_mode_sense()
480 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_mode_sense()
481 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_mode_sense()
482 io->scsiio.tag_type = tag_type; in ctl_scsi_mode_sense()
483 io->scsiio.ext_data_ptr = data_ptr; in ctl_scsi_mode_sense()
484 io->scsiio.ext_data_len = data_len; in ctl_scsi_mode_sense()
485 io->scsiio.ext_sg_entries = 0; in ctl_scsi_mode_sense()
486 io->scsiio.ext_data_filled = 0; in ctl_scsi_mode_sense()
487 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_mode_sense()
491 ctl_scsi_start_stop(union ctl_io *io, int start, int load_eject, int immediate, in ctl_scsi_start_stop() argument
496 cdb = (struct scsi_start_stop_unit *)io->scsiio.cdb; in ctl_scsi_start_stop()
498 ctl_scsi_zero_io(io); in ctl_scsi_start_stop()
509 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_start_stop()
510 io->io_hdr.flags = CTL_FLAG_DATA_NONE; in ctl_scsi_start_stop()
511 io->scsiio.tag_type = tag_type; in ctl_scsi_start_stop()
512 io->scsiio.ext_data_ptr = NULL; in ctl_scsi_start_stop()
513 io->scsiio.ext_data_len = 0; in ctl_scsi_start_stop()
514 io->scsiio.ext_sg_entries = 0; in ctl_scsi_start_stop()
515 io->scsiio.ext_data_filled = 0; in ctl_scsi_start_stop()
516 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_start_stop()
520 ctl_scsi_sync_cache(union ctl_io *io, int immed, int reladr, in ctl_scsi_sync_cache() argument
525 ctl_scsi_zero_io(io); in ctl_scsi_sync_cache()
532 cdb = (struct scsi_sync_cache *)io->scsiio.cdb; in ctl_scsi_sync_cache()
547 cdb = (struct scsi_sync_cache_16 *)io->scsiio.cdb; in ctl_scsi_sync_cache()
560 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_sync_cache()
561 io->io_hdr.flags = CTL_FLAG_DATA_NONE; in ctl_scsi_sync_cache()
562 io->scsiio.tag_type = tag_type; in ctl_scsi_sync_cache()
563 io->scsiio.ext_data_ptr = NULL; in ctl_scsi_sync_cache()
564 io->scsiio.ext_data_len = 0; in ctl_scsi_sync_cache()
565 io->scsiio.ext_sg_entries = 0; in ctl_scsi_sync_cache()
566 io->scsiio.ext_data_filled = 0; in ctl_scsi_sync_cache()
567 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_sync_cache()
571 ctl_scsi_persistent_res_in(union ctl_io *io, uint8_t *data_ptr, in ctl_scsi_persistent_res_in() argument
578 ctl_scsi_zero_io(io); in ctl_scsi_persistent_res_in()
580 cdb = (struct scsi_per_res_in *)io->scsiio.cdb; in ctl_scsi_persistent_res_in()
586 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_persistent_res_in()
587 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_persistent_res_in()
588 io->scsiio.tag_type = tag_type; in ctl_scsi_persistent_res_in()
589 io->scsiio.ext_data_ptr = data_ptr; in ctl_scsi_persistent_res_in()
590 io->scsiio.ext_data_len = data_len; in ctl_scsi_persistent_res_in()
591 io->scsiio.ext_sg_entries = 0; in ctl_scsi_persistent_res_in()
592 io->scsiio.ext_data_filled = 0; in ctl_scsi_persistent_res_in()
593 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_persistent_res_in()
597 ctl_scsi_persistent_res_out(union ctl_io *io, uint8_t *data_ptr, in ctl_scsi_persistent_res_out() argument
606 ctl_scsi_zero_io(io); in ctl_scsi_persistent_res_out()
608 cdb = (struct scsi_per_res_out *)io->scsiio.cdb; in ctl_scsi_persistent_res_out()
643 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_persistent_res_out()
644 io->io_hdr.flags = CTL_FLAG_DATA_OUT; in ctl_scsi_persistent_res_out()
645 io->scsiio.tag_type = tag_type; in ctl_scsi_persistent_res_out()
646 io->scsiio.ext_data_ptr = data_ptr; in ctl_scsi_persistent_res_out()
647 io->scsiio.ext_data_len = data_len; in ctl_scsi_persistent_res_out()
648 io->scsiio.ext_sg_entries = 0; in ctl_scsi_persistent_res_out()
649 io->scsiio.ext_data_filled = 0; in ctl_scsi_persistent_res_out()
650 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_persistent_res_out()
655 ctl_scsi_maintenance_in(union ctl_io *io, uint8_t *data_ptr, uint32_t data_len, in ctl_scsi_maintenance_in() argument
660 ctl_scsi_zero_io(io); in ctl_scsi_maintenance_in()
662 cdb = (struct scsi_maintenance_in *)io->scsiio.cdb; in ctl_scsi_maintenance_in()
668 io->io_hdr.io_type = CTL_IO_SCSI; in ctl_scsi_maintenance_in()
669 io->io_hdr.flags = CTL_FLAG_DATA_IN; in ctl_scsi_maintenance_in()
670 io->scsiio.tag_type = tag_type; in ctl_scsi_maintenance_in()
671 io->scsiio.ext_data_ptr = data_ptr; in ctl_scsi_maintenance_in()
672 io->scsiio.ext_data_len = data_len; in ctl_scsi_maintenance_in()
673 io->scsiio.ext_sg_entries = 0; in ctl_scsi_maintenance_in()
674 io->scsiio.ext_data_filled = 0; in ctl_scsi_maintenance_in()
675 io->scsiio.sense_len = SSD_FULL_SIZE; in ctl_scsi_maintenance_in()
682 union ctl_io *io; in ctl_scsi_alloc_io() local
684 io = (union ctl_io *)malloc(sizeof(*io)); in ctl_scsi_alloc_io()
685 if (io == NULL) in ctl_scsi_alloc_io()
688 io->io_hdr.nexus.initid = initid; in ctl_scsi_alloc_io()
691 return (io); in ctl_scsi_alloc_io()
695 ctl_scsi_free_io(union ctl_io *io) in ctl_scsi_free_io() argument
697 free(io); in ctl_scsi_free_io()
701 ctl_scsi_zero_io(union ctl_io *io) in ctl_scsi_zero_io() argument
705 if (io == NULL) in ctl_scsi_zero_io()
708 pool_ref = io->io_hdr.pool; in ctl_scsi_zero_io()
709 memset(io, 0, sizeof(*io)); in ctl_scsi_zero_io()
710 io->io_hdr.pool = pool_ref; in ctl_scsi_zero_io()
730 ctl_io_sbuf(union ctl_io *io, struct sbuf *sb) in ctl_io_sbuf() argument
735 ctl_scsi_path_string(&io->io_hdr, path_str, sizeof(path_str)); in ctl_io_sbuf()
737 switch (io->io_hdr.io_type) { in ctl_io_sbuf()
740 ctl_scsi_command_string(&io->scsiio, NULL, sb); in ctl_io_sbuf()
742 io->scsiio.tag_num, io->scsiio.tag_type, in ctl_io_sbuf()
743 io->scsiio.priority); in ctl_io_sbuf()
747 task_desc = ctl_scsi_task_string(&io->taskio); in ctl_io_sbuf()
750 io->taskio.task_action, io->taskio.task_action); in ctl_io_sbuf()
753 switch (io->taskio.task_action) { in ctl_io_sbuf()
756 io->taskio.tag_num, io->taskio.tag_type); in ctl_io_sbuf()
766 ctl_nvme_command_string(&io->nvmeio, sb); in ctl_io_sbuf()
767 sbuf_printf(sb, " CID: 0x%x\n", le16toh(io->nvmeio.cmd.cid)); in ctl_io_sbuf()
775 ctl_io_error_sbuf(union ctl_io *io, struct scsi_inquiry_data *inq_data, in ctl_io_error_sbuf() argument
782 ctl_io_sbuf(io, sb); in ctl_io_error_sbuf()
787 if ((io->io_hdr.status & CTL_STATUS_MASK) == in ctl_io_error_sbuf()
794 ctl_scsi_path_string(&io->io_hdr, path_str, sizeof(path_str)); in ctl_io_error_sbuf()
799 io->io_hdr.status); in ctl_io_error_sbuf()
803 switch (io->io_hdr.io_type) { in ctl_io_error_sbuf()
805 if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SCSI_ERROR) { in ctl_io_error_sbuf()
808 ctl_scsi_status_string(&io->scsiio)); in ctl_io_error_sbuf()
810 if (io->scsiio.scsi_status == SCSI_STATUS_CHECK_COND) in ctl_io_error_sbuf()
811 ctl_scsi_sense_sbuf(&io->scsiio, inq_data, in ctl_io_error_sbuf()
817 if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_NVME_ERROR) { in ctl_io_error_sbuf()
820 ctl_nvme_status_string(&io->nvmeio, sb); in ctl_io_error_sbuf()
830 ctl_io_string(union ctl_io *io, char *str, int str_len) in ctl_io_string() argument
835 ctl_io_sbuf(io, &sb); in ctl_io_string()
841 ctl_io_error_string(union ctl_io *io, struct scsi_inquiry_data *inq_data, in ctl_io_error_string() argument
847 ctl_io_error_sbuf(io, inq_data, &sb); in ctl_io_error_string()
855 ctl_io_print(union ctl_io *io) in ctl_io_print() argument
859 printf("%s", ctl_io_string(io, str, sizeof(str))); in ctl_io_print()
863 ctl_io_error_print(union ctl_io *io, struct scsi_inquiry_data *inq_data) in ctl_io_error_print() argument
867 printf("%s", ctl_io_error_string(io, inq_data, str, sizeof(str))); in ctl_io_error_print()
872 ctl_data_print(union ctl_io *io) in ctl_data_print() argument
880 switch (io->io_hdr.io_type) { in ctl_data_print()
882 tag_num = io->scsiio.tag_num; in ctl_data_print()
886 tag_num = le16toh(io->nvmeio.cmd.cid); in ctl_data_print()
891 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR) in ctl_data_print()
893 if (ctl_kern_sg_entries(io) > 0) /* XXX: Implement */ in ctl_data_print()
895 ctl_scsi_path_string(&io->io_hdr, path_str, sizeof(path_str)); in ctl_data_print()
896 len = min(ctl_kern_data_len(io), 4096); in ctl_data_print()
904 sbuf_printf(&sb, " %02x", ctl_kern_data_ptr(io)[i]); in ctl_data_print()
915 ctl_io_error_print(union ctl_io *io, struct scsi_inquiry_data *inq_data, in ctl_io_error_print() argument
920 fprintf(ofile, "%s", ctl_io_error_string(io, inq_data, str, in ctl_io_error_print()