Lines Matching refs:softc

171 static	void		passiocleanup(struct pass_softc *softc, 
236 struct pass_softc *softc; in passrejectios() local
238 softc = (struct pass_softc *)periph->softc; in passrejectios()
244 TAILQ_FOREACH_SAFE(io_req, &softc->done_queue, links, io_req2) { in passrejectios()
245 TAILQ_REMOVE(&softc->done_queue, io_req, links); in passrejectios()
246 passiocleanup(softc, io_req); in passrejectios()
247 uma_zfree(softc->pass_zone, io_req); in passrejectios()
255 TAILQ_FOREACH_SAFE(io_req, &softc->incoming_queue, links, io_req2) { in passrejectios()
256 TAILQ_REMOVE(&softc->incoming_queue, io_req, links); in passrejectios()
257 passiocleanup(softc, io_req); in passrejectios()
258 uma_zfree(softc->pass_zone, io_req); in passrejectios()
270 TAILQ_FOREACH_SAFE(io_req, &softc->active_queue, links, io_req2) { in passrejectios()
271 TAILQ_REMOVE(&softc->active_queue, io_req, links); in passrejectios()
273 TAILQ_INSERT_TAIL(&softc->abandoned_queue, io_req, links); in passrejectios()
279 if ((!TAILQ_EMPTY(&softc->abandoned_queue)) in passrejectios()
280 && ((softc->flags & PASS_FLAG_ABANDONED_REF_SET) == 0)) { in passrejectios()
282 softc->flags |= PASS_FLAG_ABANDONED_REF_SET; in passrejectios()
291 struct pass_softc *softc; in passdevgonecb() local
298 softc = (struct pass_softc *)periph->softc; in passdevgonecb()
299 KASSERT(softc->open_count >= 0, ("Negative open count %d", in passdevgonecb()
300 softc->open_count)); in passdevgonecb()
307 for (i = 0; i < softc->open_count; i++) in passdevgonecb()
310 softc->open_count = 0; in passdevgonecb()
333 taskqueue_enqueue(taskqueue_thread, &softc->shutdown_kqueue_task); in passdevgonecb()
339 struct pass_softc *softc; in passoninvalidate() local
341 softc = (struct pass_softc *)periph->softc; in passoninvalidate()
348 softc->flags |= PASS_FLAG_INVALID; in passoninvalidate()
354 destroy_dev_sched_cb(softc->dev, passdevgonecb, periph); in passoninvalidate()
360 struct pass_softc *softc; in passcleanup() local
362 softc = (struct pass_softc *)periph->softc; in passcleanup()
365 KASSERT(TAILQ_EMPTY(&softc->active_queue), in passcleanup()
368 KASSERT(TAILQ_EMPTY(&softc->abandoned_queue), in passcleanup()
371 KASSERT(TAILQ_EMPTY(&softc->incoming_queue), in passcleanup()
374 KASSERT(TAILQ_EMPTY(&softc->done_queue), in passcleanup()
378 devstat_remove_entry(softc->device_stats); in passcleanup()
398 taskqueue_drain(taskqueue_thread, &softc->add_physpath_task); in passcleanup()
407 if (softc->pass_zone != NULL) in passcleanup()
408 uma_zdestroy(softc->pass_zone); in passcleanup()
409 if (softc->pass_io_zone != NULL) in passcleanup()
410 uma_zdestroy(softc->pass_io_zone); in passcleanup()
414 free(softc, M_DEVBUF); in passcleanup()
421 struct pass_softc *softc; in pass_shutdown_kqueue() local
424 softc = periph->softc; in pass_shutdown_kqueue()
426 knlist_clear(&softc->read_select.si_note, /*is_locked*/ 0); in pass_shutdown_kqueue()
427 knlist_destroy(&softc->read_select.si_note); in pass_shutdown_kqueue()
439 struct pass_softc *softc; in pass_add_physpath() local
448 softc = periph->softc; in pass_add_physpath()
461 &softc->alias_dev, softc->dev, in pass_add_physpath()
462 softc->alias_dev, physpath); in pass_add_physpath()
471 if ((softc->flags & PASS_FLAG_INITIAL_PHYSPATH) == 0) in pass_add_physpath()
472 softc->flags |= PASS_FLAG_INITIAL_PHYSPATH; in pass_add_physpath()
532 struct pass_softc *softc; in passasync() local
534 softc = (struct pass_softc *)periph->softc; in passasync()
545 &softc->add_physpath_task); in passasync()
558 struct pass_softc *softc; in passregister() local
570 softc = (struct pass_softc *)malloc(sizeof(*softc), in passregister()
573 if (softc == NULL) { in passregister()
579 bzero(softc, sizeof(*softc)); in passregister()
580 softc->state = PASS_STATE_NORMAL; in passregister()
582 softc->pd_type = SID_TYPE(&cgd->inq_data); in passregister()
584 softc->pd_type = T_ENCLOSURE; in passregister()
586 softc->pd_type = T_DIRECT; in passregister()
588 periph->softc = softc; in passregister()
589 softc->periph = periph; in passregister()
590 TAILQ_INIT(&softc->incoming_queue); in passregister()
591 TAILQ_INIT(&softc->active_queue); in passregister()
592 TAILQ_INIT(&softc->abandoned_queue); in passregister()
593 TAILQ_INIT(&softc->done_queue); in passregister()
594 snprintf(softc->zone_name, sizeof(softc->zone_name), "%s%d", in passregister()
596 snprintf(softc->io_zone_name, sizeof(softc->io_zone_name), "%s%dIO", in passregister()
598 softc->io_zone_size = maxphys; in passregister()
599 knlist_init_mtx(&softc->read_select.si_note, cam_periph_mtx(periph)); in passregister()
604 softc->maxio = DFLTPHYS; /* traditional default */ in passregister()
606 softc->maxio = maxphys; /* for safety */ in passregister()
608 softc->maxio = cpi.maxio; /* real value */ in passregister()
611 softc->flags |= PASS_FLAG_UNMAPPED_CAPABLE; in passregister()
624 softc->device_stats = devstat_new_entry(PERIPH_NAME, in passregister()
628 softc->pd_type | in passregister()
636 TASK_INIT(&softc->shutdown_kqueue_task, /*priority*/ 0, in passregister()
671 error = make_dev_s(&args, &softc->dev, "%s%d", periph->periph_name, in passregister()
692 TASK_INIT(&softc->add_physpath_task, /*priority*/0, in passregister()
698 taskqueue_enqueue(taskqueue_thread, &softc->add_physpath_task); in passregister()
719 struct pass_softc *softc; in passopen() local
728 softc = (struct pass_softc *)periph->softc; in passopen()
730 if (softc->flags & PASS_FLAG_INVALID) { in passopen()
765 softc->open_count++; in passopen()
776 struct pass_softc *softc; in passclose() local
783 softc = periph->softc; in passclose()
784 softc->open_count--; in passclose()
786 if (softc->open_count == 0) { in passclose()
789 TAILQ_FOREACH_SAFE(io_req, &softc->done_queue, links, io_req2) { in passclose()
790 TAILQ_REMOVE(&softc->done_queue, io_req, links); in passclose()
791 passiocleanup(softc, io_req); in passclose()
792 uma_zfree(softc->pass_zone, io_req); in passclose()
795 TAILQ_FOREACH_SAFE(io_req, &softc->incoming_queue, links, in passclose()
797 TAILQ_REMOVE(&softc->incoming_queue, io_req, links); in passclose()
798 passiocleanup(softc, io_req); in passclose()
799 uma_zfree(softc->pass_zone, io_req); in passclose()
808 io_req = TAILQ_FIRST(&softc->active_queue); in passclose()
810 && (softc->flags & PASS_FLAG_ABANDONED_REF_SET) == 0) { in passclose()
812 softc->flags |= PASS_FLAG_ABANDONED_REF_SET; in passclose()
823 TAILQ_FOREACH_SAFE(io_req, &softc->active_queue, links, in passclose()
825 TAILQ_REMOVE(&softc->active_queue, io_req, links); in passclose()
827 TAILQ_INSERT_TAIL(&softc->abandoned_queue, io_req, in passclose()
854 struct pass_softc *softc; in passstart() local
856 softc = (struct pass_softc *)periph->softc; in passstart()
858 switch (softc->state) { in passstart()
866 io_req = TAILQ_FIRST(&softc->incoming_queue); in passstart()
871 TAILQ_REMOVE(&softc->incoming_queue, io_req, links); in passstart()
872 TAILQ_INSERT_TAIL(&softc->active_queue, io_req, links); in passstart()
882 devstat_start_transaction(softc->device_stats, in passstart()
890 if (!TAILQ_EMPTY(&softc->incoming_queue)) in passstart()
902 struct pass_softc *softc; in passdone() local
905 softc = (struct pass_softc *)periph->softc; in passdone()
945 devstat_end_transaction(softc->device_stats, in passdone()
955 devstat_end_transaction(softc->device_stats, in passdone()
975 devstat_end_transaction(softc->device_stats, in passdone()
983 devstat_end_transaction(softc->device_stats, 0, in passdone()
995 TAILQ_REMOVE(&softc->active_queue, io_req, links); in passdone()
996 TAILQ_INSERT_TAIL(&softc->done_queue, io_req, links); in passdone()
997 selwakeuppri(&softc->read_select, PRIBIO); in passdone()
998 KNOTE_LOCKED(&softc->read_select.si_note, 0); in passdone()
1005 TAILQ_REMOVE(&softc->abandoned_queue, io_req, links); in passdone()
1006 passiocleanup(softc, io_req); in passdone()
1007 uma_zfree(softc->pass_zone, io_req); in passdone()
1021 if ((TAILQ_EMPTY(&softc->abandoned_queue)) in passdone()
1022 && (softc->flags & PASS_FLAG_ABANDONED_REF_SET)) { in passdone()
1023 softc->flags &= ~PASS_FLAG_ABANDONED_REF_SET; in passdone()
1042 struct pass_softc *softc; in passcreatezone() local
1046 softc = (struct pass_softc *)periph->softc; in passcreatezone()
1049 KASSERT(((softc->flags & PASS_FLAG_ZONE_VALID) == 0), in passcreatezone()
1051 KASSERT((softc->pass_zone == NULL), in passcreatezone()
1054 if ((softc->flags & PASS_FLAG_ZONE_INPROG) == 0) { in passcreatezone()
1059 softc->flags |= PASS_FLAG_ZONE_INPROG; in passcreatezone()
1067 softc->pass_zone = uma_zcreate(softc->zone_name, in passcreatezone()
1071 softc->pass_io_zone = uma_zcreate(softc->io_zone_name, in passcreatezone()
1072 softc->io_zone_size, NULL, NULL, NULL, NULL, in passcreatezone()
1077 if ((softc->pass_zone == NULL) in passcreatezone()
1078 || (softc->pass_io_zone == NULL)) { in passcreatezone()
1079 if (softc->pass_zone == NULL) in passcreatezone()
1085 softc->flags &= ~PASS_FLAG_ZONE_INPROG; in passcreatezone()
1092 softc->flags &= ~PASS_FLAG_ZONE_INPROG; in passcreatezone()
1093 softc->flags |= PASS_FLAG_ZONE_VALID; in passcreatezone()
1094 wakeup(&softc->pass_zone); in passcreatezone()
1102 while ((softc->flags & PASS_FLAG_ZONE_INPROG) in passcreatezone()
1103 && ((softc->flags & PASS_FLAG_ZONE_VALID) == 0)) { in passcreatezone()
1104 error = msleep(&softc->pass_zone, in passcreatezone()
1113 if ((softc->flags & PASS_FLAG_ZONE_VALID) == 0){ in passcreatezone()
1123 passiocleanup(struct pass_softc *softc, struct pass_io_req *io_req) in passiocleanup() argument
1195 uma_zfree(softc->pass_io_zone, (uint8_t *)(uintptr_t) in passiocleanup()
1290 struct pass_softc *softc; in passmemsetup() local
1302 softc = periph->softc; in passmemsetup()
1352 maxmap = softc->maxio; in passmemsetup()
1370 maxmap = softc->maxio; in passmemsetup()
1382 maxmap = softc->maxio; in passmemsetup()
1408 maxmap = softc->maxio; in passmemsetup()
1528 if (lengths[0] <= softc->io_zone_size) in passmemsetup()
1531 num_segs_needed = lengths[0] / softc->io_zone_size; in passmemsetup()
1532 if ((lengths[0] % softc->io_zone_size) != 0) in passmemsetup()
1580 alloc_size = min(size_to_go, softc->io_zone_size); in passmemsetup()
1581 kern_ptr = uma_zalloc(softc->pass_io_zone, M_WAITOK); in passmemsetup()
1676 passiocleanup(softc, io_req); in passmemsetup()
1684 struct pass_softc *softc; in passmemdone() local
1689 softc = (struct pass_softc *)periph->softc; in passmemdone()
1740 passiocleanup(softc, io_req); in passmemdone()
1760 struct pass_softc *softc; in passdoioctl() local
1766 softc = (struct pass_softc *)periph->softc; in passdoioctl()
1851 if ((softc->flags & PASS_FLAG_ZONE_VALID) == 0) { in passdoioctl()
1863 io_req = uma_zalloc(softc->pass_zone, M_WAITOK | M_ZERO); in passdoioctl()
1977 TAILQ_INSERT_TAIL(&softc->incoming_queue, io_req, links); in passdoioctl()
1998 TAILQ_REMOVE(&softc->incoming_queue, io_req, links); in passdoioctl()
1999 TAILQ_INSERT_TAIL(&softc->active_queue, io_req, links); in passdoioctl()
2009 TAILQ_REMOVE(&softc->active_queue, io_req, links); in passdoioctl()
2010 TAILQ_INSERT_TAIL(&softc->done_queue, io_req, links); in passdoioctl()
2015 uma_zfree(softc->pass_zone, io_req); in passdoioctl()
2034 io_req = TAILQ_FIRST(&softc->done_queue); in passdoioctl()
2043 TAILQ_REMOVE(&softc->done_queue, io_req, links); in passdoioctl()
2089 uma_zfree(softc->pass_zone, io_req); in passdoioctl()
2107 struct pass_softc *softc; in passpoll() local
2111 softc = (struct pass_softc *)periph->softc; in passpoll()
2117 if (!TAILQ_EMPTY(&softc->done_queue)) { in passpoll()
2122 selrecord(td, &softc->read_select); in passpoll()
2132 struct pass_softc *softc; in passkqfilter() local
2135 softc = (struct pass_softc *)periph->softc; in passkqfilter()
2139 knlist_add(&softc->read_select.si_note, kn, 0); in passkqfilter()
2148 struct pass_softc *softc; in passreadfiltdetach() local
2151 softc = (struct pass_softc *)periph->softc; in passreadfiltdetach()
2153 knlist_remove(&softc->read_select.si_note, kn, 0); in passreadfiltdetach()
2160 struct pass_softc *softc; in passreadfilt() local
2164 softc = (struct pass_softc *)periph->softc; in passreadfilt()
2168 if (TAILQ_EMPTY(&softc->done_queue)) in passreadfilt()
2183 struct pass_softc *softc; in passsendccb() local
2189 softc = (struct pass_softc *)periph->softc; in passsendccb()
2222 error = cam_periph_mapmem(ccb, &mapinfo, softc->maxio); in passsendccb()
2245 sense_flags, softc->device_stats); in passsendccb()