Lines Matching refs:io_req

171 				      struct pass_io_req *io_req);
173 struct pass_io_req *io_req,
176 struct pass_io_req *io_req);
178 struct pass_io_req *io_req);
234 struct pass_io_req *io_req, *io_req2;
243 TAILQ_FOREACH_SAFE(io_req, &softc->done_queue, links, io_req2) {
244 TAILQ_REMOVE(&softc->done_queue, io_req, links);
245 passiocleanup(softc, io_req);
246 uma_zfree(softc->pass_zone, io_req);
254 TAILQ_FOREACH_SAFE(io_req, &softc->incoming_queue, links, io_req2) {
255 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
256 passiocleanup(softc, io_req);
257 uma_zfree(softc->pass_zone, io_req);
269 TAILQ_FOREACH_SAFE(io_req, &softc->active_queue, links, io_req2) {
270 TAILQ_REMOVE(&softc->active_queue, io_req, links);
271 io_req->flags |= PASS_IO_ABANDONED;
272 TAILQ_INSERT_TAIL(&softc->abandoned_queue, io_req, links);
782 struct pass_io_req *io_req, *io_req2;
784 TAILQ_FOREACH_SAFE(io_req, &softc->done_queue, links, io_req2) {
785 TAILQ_REMOVE(&softc->done_queue, io_req, links);
786 passiocleanup(softc, io_req);
787 uma_zfree(softc->pass_zone, io_req);
790 TAILQ_FOREACH_SAFE(io_req, &softc->incoming_queue, links,
792 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
793 passiocleanup(softc, io_req);
794 uma_zfree(softc->pass_zone, io_req);
803 io_req = TAILQ_FIRST(&softc->active_queue);
804 if ((io_req != NULL)
818 TAILQ_FOREACH_SAFE(io_req, &softc->active_queue, links,
820 TAILQ_REMOVE(&softc->active_queue, io_req, links);
821 io_req->flags |= PASS_IO_ABANDONED;
822 TAILQ_INSERT_TAIL(&softc->abandoned_queue, io_req,
855 struct pass_io_req *io_req;
861 io_req = TAILQ_FIRST(&softc->incoming_queue);
862 if (io_req == NULL) {
866 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
867 TAILQ_INSERT_TAIL(&softc->active_queue, io_req, links);
871 xpt_merge_ccb(start_ccb, &io_req->ccb);
873 start_ccb->ccb_h.ccb_ioreq = io_req;
875 io_req->alloced_ccb = start_ccb;
876 binuptime(&io_req->start_time);
878 &io_req->start_time);
907 struct pass_io_req *io_req;
909 io_req = done_ccb->ccb_h.ccb_ioreq;
912 __func__, io_req->user_ccb_ptr);
915 ((io_req->flags & PASS_IO_ABANDONED) == 0)) {
933 bcopy(done_ccb, &io_req->ccb, sizeof(*done_ccb));
947 &io_req->start_time);
957 &io_req->start_time);
974 &io_req->start_time);
979 &io_req->start_time);
988 if ((io_req->flags & PASS_IO_ABANDONED) == 0) {
989 TAILQ_REMOVE(&softc->active_queue, io_req, links);
990 TAILQ_INSERT_TAIL(&softc->done_queue, io_req, links);
999 TAILQ_REMOVE(&softc->abandoned_queue, io_req, links);
1000 passiocleanup(softc, io_req);
1001 uma_zfree(softc->pass_zone, io_req);
1117 passiocleanup(struct pass_softc *softc, struct pass_io_req *io_req)
1123 ccb = &io_req->ccb;
1127 numbufs = min(io_req->num_bufs, 2);
1139 numbufs = min(io_req->num_bufs, 1);
1143 numbufs = min(io_req->num_bufs, 1);
1146 numbufs = min(io_req->num_bufs, 2);
1151 numbufs = min(io_req->num_bufs, 1);
1157 numbufs = min(io_req->num_bufs, 1);
1165 if (io_req->flags & PASS_IO_USER_SEG_MALLOC) {
1166 free(io_req->user_segptr, M_SCSIPASS);
1167 io_req->user_segptr = NULL;
1173 if (io_req->data_flags == CAM_DATA_VADDR) {
1174 for (i = 0; i < io_req->num_bufs; i++) {
1175 if (io_req->kern_bufs[i] == NULL)
1178 free(io_req->kern_bufs[i], M_SCSIPASS);
1179 io_req->kern_bufs[i] = NULL;
1181 } else if (io_req->data_flags == CAM_DATA_SG) {
1182 for (i = 0; i < io_req->num_kern_segs; i++) {
1184 io_req->kern_segptr[i].ds_addr == NULL)
1188 io_req->kern_segptr[i].ds_addr);
1189 io_req->kern_segptr[i].ds_addr = 0;
1193 if (io_req->flags & PASS_IO_KERN_SEG_MALLOC) {
1194 free(io_req->kern_segptr, M_SCSIPASS);
1195 io_req->kern_segptr = NULL;
1198 if (io_req->data_flags != CAM_DATA_PADDR) {
1204 if (io_req->user_bufs[i] != NULL)
1205 *data_ptrs[i] = io_req->user_bufs[i];
1212 passcopysglist(struct cam_periph *periph, struct pass_io_req *io_req,
1223 user_sglist = io_req->user_segptr;
1224 kern_sglist = io_req->kern_segptr;
1226 for (i = 0, j = 0; i < io_req->num_user_segs &&
1227 j < io_req->num_kern_segs;) {
1278 passmemsetup(struct cam_periph *periph, struct pass_io_req *io_req)
1296 ccb = &io_req->ccb;
1321 io_req->data_flags = CAM_DATA_VADDR;
1334 io_req->data_flags = ccb->ccb_h.flags & CAM_DATA_MASK;
1354 io_req->data_flags = CAM_DATA_VADDR;
1363 io_req->data_flags = CAM_DATA_VADDR;
1378 io_req->data_flags = CAM_DATA_VADDR;
1390 io_req->data_flags = ccb->ccb_h.flags & CAM_DATA_MASK;
1405 io_req->num_bufs = numbufs;
1414 io_req->user_bufs[i] = *data_ptrs[i];
1415 io_req->dirs[i] = dirs[i];
1416 io_req->lengths[i] = lengths[i];
1430 switch (io_req->data_flags) {
1440 if (io_req->lengths[i] == 0)
1445 io_req->kern_bufs[i] = tmp_buf;
1451 tmp_buf, lengths[i], io_req->user_bufs[i],
1460 error = copyin(io_req->user_bufs[i],
1461 io_req->kern_bufs[i], lengths[i]);
1466 io_req->user_bufs[i],
1467 io_req->kern_bufs[i], error);
1528 io_req->num_user_segs = num_segs;
1529 io_req->num_kern_segs = num_segs_needed;
1532 io_req->user_bufs[0] = *data_ptrs[0];
1539 io_req->user_segptr = malloc(sizeof(bus_dma_segment_t) *
1541 io_req->flags |= PASS_IO_USER_SEG_MALLOC;
1543 io_req->user_segptr = io_req->user_segs;
1545 error = copyin(*data_ptrs[0], io_req->user_segptr, sg_length);
1549 __func__, *data_ptrs[0], io_req->user_segptr,
1555 io_req->kern_segptr = malloc(sizeof(bus_dma_segment_t) *
1557 io_req->flags |= PASS_IO_KERN_SEG_MALLOC;
1559 io_req->kern_segptr = io_req->kern_segs;
1572 io_req->kern_segptr[i].ds_addr =
1574 io_req->kern_segptr[i].ds_len = alloc_size;
1583 *data_ptrs[0] = (uint8_t *)io_req->kern_segptr;
1584 *seg_cnt_ptr = io_req->num_kern_segs;
1590 error = passcopysglist(periph, io_req, dirs[0]);
1629 io_req->num_user_segs = num_segs;
1630 io_req->num_kern_segs = io_req->num_user_segs;
1633 io_req->user_bufs[0] = *data_ptrs[0];
1636 io_req->user_segptr = malloc(sizeof(bus_dma_segment_t) *
1638 io_req->flags |= PASS_IO_USER_SEG_MALLOC;
1640 io_req->user_segptr = io_req->user_segs;
1642 io_req->kern_segptr = io_req->user_segptr;
1644 error = copyin(*data_ptrs[0], io_req->user_segptr, sg_length);
1648 __func__, *data_ptrs[0], io_req->user_segptr,
1666 passiocleanup(softc, io_req);
1672 passmemdone(struct cam_periph *periph, struct pass_io_req *io_req)
1681 switch (io_req->data_flags) {
1686 for (i = 0; i < io_req->num_bufs; i++) {
1687 if (io_req->dirs[i] != CAM_DIR_IN)
1690 error = copyout(io_req->kern_bufs[i],
1691 io_req->user_bufs[i], io_req->lengths[i]);
1695 io_req->lengths[i],
1696 io_req->kern_bufs[i],
1697 io_req->user_bufs[i]);
1710 if (io_req->dirs[0] == CAM_DIR_IN)
1711 error = passcopysglist(periph, io_req, io_req->dirs[0]);
1730 passiocleanup(softc, io_req);
1831 struct pass_io_req *io_req;
1853 io_req = uma_zalloc(softc->pass_zone, M_WAITOK | M_ZERO);
1854 ccb = &io_req->ccb;
1918 io_req->user_ccb_ptr = *user_ccb;
1919 io_req->user_periph_links = ccb->ccb_h.periph_links;
1920 io_req->user_periph_priv = ccb->ccb_h.periph_priv;
1926 ccb->ccb_h.ccb_ioreq = io_req;
1956 error = passmemsetup(periph, io_req);
1960 io_req->mapinfo.num_bufs_used = 0;
1967 TAILQ_INSERT_TAIL(&softc->incoming_queue, io_req, links);
1988 TAILQ_REMOVE(&softc->incoming_queue, io_req, links);
1989 TAILQ_INSERT_TAIL(&softc->active_queue, io_req, links);
1999 TAILQ_REMOVE(&softc->active_queue, io_req, links);
2000 TAILQ_INSERT_TAIL(&softc->done_queue, io_req, links);
2005 uma_zfree(softc->pass_zone, io_req);
2012 struct pass_io_req *io_req;
2024 io_req = TAILQ_FIRST(&softc->done_queue);
2025 if (io_req == NULL) {
2033 TAILQ_REMOVE(&softc->done_queue, io_req, links);
2045 error = passmemdone(periph, io_req);
2049 io_req->ccb.ccb_h.periph_links = io_req->user_periph_links;
2050 io_req->ccb.ccb_h.periph_priv = io_req->user_periph_priv;
2054 "kernel address %p\n", *user_ccb, &io_req->ccb);
2057 error = copyout(&io_req->ccb, *user_ccb, sizeof(union ccb));
2061 *user_ccb, &io_req->ccb, error);
2079 uma_zfree(softc->pass_zone, io_req);