• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/cam/scsi/

Lines Matching refs:io_req

175 				      struct pass_io_req *io_req);
177 struct pass_io_req *io_req,
180 struct pass_io_req *io_req);
182 struct pass_io_req *io_req);
236 struct pass_io_req *io_req, *io_req2;
245 TAILQ_FOREACH_SAFE(io_req, &softc->done_queue, links, io_req2) {
246 TAILQ_REMOVE(&softc->done_queue, io_req, links);
247 passiocleanup(softc, io_req);
248 uma_zfree(softc->pass_zone, io_req);
256 TAILQ_FOREACH_SAFE(io_req, &softc->incoming_queue, links, io_req2) {
257 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
258 passiocleanup(softc, io_req);
259 uma_zfree(softc->pass_zone, io_req);
271 TAILQ_FOREACH_SAFE(io_req, &softc->active_queue, links, io_req2) {
272 TAILQ_REMOVE(&softc->active_queue, io_req, links);
273 io_req->flags |= PASS_IO_ABANDONED;
274 TAILQ_INSERT_TAIL(&softc->abandoned_queue, io_req, links);
771 struct pass_io_req *io_req, *io_req2;
773 TAILQ_FOREACH_SAFE(io_req, &softc->done_queue, links, io_req2) {
774 TAILQ_REMOVE(&softc->done_queue, io_req, links);
775 passiocleanup(softc, io_req);
776 uma_zfree(softc->pass_zone, io_req);
779 TAILQ_FOREACH_SAFE(io_req, &softc->incoming_queue, links,
781 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
782 passiocleanup(softc, io_req);
783 uma_zfree(softc->pass_zone, io_req);
792 io_req = TAILQ_FIRST(&softc->active_queue);
793 if ((io_req != NULL)
807 TAILQ_FOREACH_SAFE(io_req, &softc->active_queue, links,
809 TAILQ_REMOVE(&softc->active_queue, io_req, links);
810 io_req->flags |= PASS_IO_ABANDONED;
811 TAILQ_INSERT_TAIL(&softc->abandoned_queue, io_req,
844 struct pass_io_req *io_req;
850 io_req = TAILQ_FIRST(&softc->incoming_queue);
851 if (io_req == NULL) {
855 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
856 TAILQ_INSERT_TAIL(&softc->active_queue, io_req, links);
860 xpt_merge_ccb(start_ccb, &io_req->ccb);
862 start_ccb->ccb_h.ccb_ioreq = io_req;
864 io_req->alloced_ccb = start_ccb;
865 binuptime(&io_req->start_time);
867 &io_req->start_time);
896 struct pass_io_req *io_req;
898 io_req = done_ccb->ccb_h.ccb_ioreq;
901 __func__, io_req->user_ccb_ptr);
905 && ((io_req->flags & PASS_IO_ABANDONED) == 0)) {
924 bcopy(done_ccb, &io_req->ccb, sizeof(*done_ccb));
938 &io_req->start_time);
948 &io_req->start_time);
965 &io_req->start_time);
970 &io_req->start_time);
979 if ((io_req->flags & PASS_IO_ABANDONED) == 0) {
980 TAILQ_REMOVE(&softc->active_queue, io_req, links);
981 TAILQ_INSERT_TAIL(&softc->done_queue, io_req, links);
990 TAILQ_REMOVE(&softc->abandoned_queue, io_req, links);
991 passiocleanup(softc, io_req);
992 uma_zfree(softc->pass_zone, io_req);
1108 passiocleanup(struct pass_softc *softc, struct pass_io_req *io_req)
1114 ccb = &io_req->ccb;
1118 numbufs = min(io_req->num_bufs, 2);
1130 numbufs = min(io_req->num_bufs, 1);
1134 numbufs = min(io_req->num_bufs, 1);
1137 numbufs = min(io_req->num_bufs, 2);
1142 numbufs = min(io_req->num_bufs, 1);
1148 numbufs = min(io_req->num_bufs, 1);
1156 if (io_req->flags & PASS_IO_USER_SEG_MALLOC) {
1157 free(io_req->user_segptr, M_SCSIPASS);
1158 io_req->user_segptr = NULL;
1164 if (io_req->data_flags == CAM_DATA_VADDR) {
1165 for (i = 0; i < io_req->num_bufs; i++) {
1166 if (io_req->kern_bufs[i] == NULL)
1169 free(io_req->kern_bufs[i], M_SCSIPASS);
1170 io_req->kern_bufs[i] = NULL;
1172 } else if (io_req->data_flags == CAM_DATA_SG) {
1173 for (i = 0; i < io_req->num_kern_segs; i++) {
1175 io_req->kern_segptr[i].ds_addr == NULL)
1179 io_req->kern_segptr[i].ds_addr);
1180 io_req->kern_segptr[i].ds_addr = 0;
1184 if (io_req->flags & PASS_IO_KERN_SEG_MALLOC) {
1185 free(io_req->kern_segptr, M_SCSIPASS);
1186 io_req->kern_segptr = NULL;
1189 if (io_req->data_flags != CAM_DATA_PADDR) {
1195 if (io_req->user_bufs[i] != NULL)
1196 *data_ptrs[i] = io_req->user_bufs[i];
1203 passcopysglist(struct cam_periph *periph, struct pass_io_req *io_req,
1215 user_sglist = io_req->user_segptr;
1216 kern_sglist = io_req->kern_segptr;
1218 for (i = 0, j = 0; i < io_req->num_user_segs &&
1219 j < io_req->num_kern_segs;) {
1272 passmemsetup(struct cam_periph *periph, struct pass_io_req *io_req)
1290 ccb = &io_req->ccb;
1315 io_req->data_flags = CAM_DATA_VADDR;
1328 io_req->data_flags = ccb->ccb_h.flags & CAM_DATA_MASK;
1348 io_req->data_flags = CAM_DATA_VADDR;
1357 io_req->data_flags = CAM_DATA_VADDR;
1372 io_req->data_flags = CAM_DATA_VADDR;
1384 io_req->data_flags = ccb->ccb_h.flags & CAM_DATA_MASK;
1399 io_req->num_bufs = numbufs;
1408 io_req->user_bufs[i] = *data_ptrs[i];
1409 io_req->dirs[i] = dirs[i];
1410 io_req->lengths[i] = lengths[i];
1424 switch (io_req->data_flags) {
1434 if (io_req->lengths[i] == 0)
1439 io_req->kern_bufs[i] = tmp_buf;
1445 tmp_buf, lengths[i], io_req->user_bufs[i],
1454 error = copyin(io_req->user_bufs[i],
1455 io_req->kern_bufs[i], lengths[i]);
1460 io_req->user_bufs[i],
1461 io_req->kern_bufs[i], error);
1522 io_req->num_user_segs = num_segs;
1523 io_req->num_kern_segs = num_segs_needed;
1526 io_req->user_bufs[0] = *data_ptrs[0];
1533 io_req->user_segptr = malloc(sizeof(bus_dma_segment_t) *
1535 io_req->flags |= PASS_IO_USER_SEG_MALLOC;
1537 io_req->user_segptr = io_req->user_segs;
1539 error = copyin(*data_ptrs[0], io_req->user_segptr, sg_length);
1543 __func__, *data_ptrs[0], io_req->user_segptr,
1549 io_req->kern_segptr = malloc(sizeof(bus_dma_segment_t) *
1551 io_req->flags |= PASS_IO_KERN_SEG_MALLOC;
1553 io_req->kern_segptr = io_req->kern_segs;
1566 io_req->kern_segptr[i].ds_addr =
1568 io_req->kern_segptr[i].ds_len = alloc_size;
1577 *data_ptrs[0] = (uint8_t *)io_req->kern_segptr;
1578 *seg_cnt_ptr = io_req->num_kern_segs;
1584 error = passcopysglist(periph, io_req, dirs[0]);
1623 io_req->num_user_segs = num_segs;
1624 io_req->num_kern_segs = io_req->num_user_segs;
1627 io_req->user_bufs[0] = *data_ptrs[0];
1630 io_req->user_segptr = malloc(sizeof(bus_dma_segment_t) *
1632 io_req->flags |= PASS_IO_USER_SEG_MALLOC;
1634 io_req->user_segptr = io_req->user_segs;
1636 io_req->kern_segptr = io_req->user_segptr;
1638 error = copyin(*data_ptrs[0], io_req->user_segptr, sg_length);
1642 __func__, *data_ptrs[0], io_req->user_segptr,
1660 passiocleanup(softc, io_req);
1666 passmemdone(struct cam_periph *periph, struct pass_io_req *io_req)
1675 switch (io_req->data_flags) {
1680 for (i = 0; i < io_req->num_bufs; i++) {
1681 if (io_req->dirs[i] != CAM_DIR_IN)
1684 error = copyout(io_req->kern_bufs[i],
1685 io_req->user_bufs[i], io_req->lengths[i]);
1689 io_req->lengths[i],
1690 io_req->kern_bufs[i],
1691 io_req->user_bufs[i]);
1704 if (io_req->dirs[0] == CAM_DIR_IN)
1705 error = passcopysglist(periph, io_req, io_req->dirs[0]);
1724 passiocleanup(softc, io_req);
1825 struct pass_io_req *io_req;
1847 io_req = uma_zalloc(softc->pass_zone, M_WAITOK | M_ZERO);
1848 ccb = &io_req->ccb;
1912 io_req->user_ccb_ptr = *user_ccb;
1913 io_req->user_periph_links = ccb->ccb_h.periph_links;
1914 io_req->user_periph_priv = ccb->ccb_h.periph_priv;
1920 ccb->ccb_h.ccb_ioreq = io_req;
1950 error = passmemsetup(periph, io_req);
1954 io_req->mapinfo.num_bufs_used = 0;
1961 TAILQ_INSERT_TAIL(&softc->incoming_queue, io_req, links);
1982 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
1983 TAILQ_INSERT_TAIL(&softc->active_queue, io_req, links);
1993 TAILQ_REMOVE(&softc->active_queue, io_req, links);
1994 TAILQ_INSERT_TAIL(&softc->done_queue, io_req, links);
1999 uma_zfree(softc->pass_zone, io_req);
2006 struct pass_io_req *io_req;
2018 io_req = TAILQ_FIRST(&softc->done_queue);
2019 if (io_req == NULL) {
2027 TAILQ_REMOVE(&softc->done_queue, io_req, links);
2039 error = passmemdone(periph, io_req);
2043 io_req->ccb.ccb_h.periph_links = io_req->user_periph_links;
2044 io_req->ccb.ccb_h.periph_priv = io_req->user_periph_priv;
2048 "kernel address %p\n", *user_ccb, &io_req->ccb);
2051 error = copyout(&io_req->ccb, *user_ccb, sizeof(union ccb));
2055 *user_ccb, &io_req->ccb, error);
2073 uma_zfree(softc->pass_zone, io_req);