Lines Matching refs:bus

8 //!	Part of Open SCSI bus manager
19 /** put request back in queue because of device/bus overflow */
24 scsi_bus_info *bus = request->bus;
37 mutex_lock(&bus->mutex);
39 was_servicable = scsi_can_service_bus(bus);
41 if (bus->left_slots++ == 0)
42 scsi_unblock_bus_noresume(bus, false);
51 // bus has overflown
52 scsi_set_bus_overflow(bus);
62 // over the bus - in this case, the bus cannot be overloaded anymore;
65 // or something - in this case, the bus state hasn't changed, but the
68 scsi_clear_bus_overflow(bus);
71 start_retry = !was_servicable && scsi_can_service_bus(bus);
73 mutex_unlock(&bus->mutex);
75 // submit requests to other devices in case bus was overloaded
77 release_sem_etc(bus->start_service, 1, 0/*B_DO_NOT_RESCHEDULE*/);
86 scsi_bus_info *bus = request->bus;
99 mutex_lock(&bus->mutex);
101 was_servicable = scsi_can_service_bus(bus);
103 if (bus->left_slots++ == 0)
104 scsi_unblock_bus_noresume(bus, false);
109 // if SIM reported overflow of device/bus, this should (hopefully) be over now
111 scsi_clear_bus_overflow(bus);
119 // if device is not blocked (anymore) add it to waiting list of bus
124 bus->waiting_devices = device;
127 start_retry = !was_servicable && scsi_can_service_bus(bus);
129 mutex_unlock(&bus->mutex);
133 release_sem_etc(bus->start_service, 1, 0/*B_DO_NOT_RESCHEDULE*/);
206 scsi_bus_info *bus = request->bus;
222 mutex_lock(&bus->mutex);
228 mutex_unlock(&bus->mutex);
241 scsi_bus_info *bus = request->bus;
266 mutex_lock(&bus->mutex);
268 was_servicable = scsi_can_service_bus(bus);
291 if (bus->left_slots++ == 0)
292 scsi_unblock_bus_noresume(bus, false);
297 // if SIM reported overflow of device/bus, this should (hopefully) be over now
299 scsi_clear_bus_overflow(bus);
302 // add it to waiting list of bus
306 start_service = !was_servicable && scsi_can_service_bus(bus);
308 mutex_unlock(&bus->mutex);
311 // (do this ASAP to keep bus/device busy)
313 release_sem_etc(bus->start_service, 1, 0/*B_DO_NOT_RESCHEDULE*/);
341 scsi_bus_info *bus = request->bus;
345 mutex_lock(&bus->mutex);
347 // if device/bus is locked, or there are waiting requests
349 // requests that got queued because bus was full)
351 || bus->lock_count > 0 || bus->waiting_devices != NULL) {
352 SHOW_FLOW0(3, "bus/device is currently locked");
356 // if bus is saturated, block it
357 if (--bus->left_slots == 0) {
358 SHOW_FLOW0(3, "bus is saturated, blocking further requests");
359 scsi_block_bus_nolock(bus, false);
376 mutex_unlock(&bus->mutex);
393 scsi_bus_info *bus = request->bus;
395 //SHOW_FLOW( 0, "path_id=%d", bus->path_id );
475 // make sure device/bus is not blocked
479 bus = request->bus;
482 bus->interface->scsi_io(bus->sim_cookie, request);
525 scsi_bus_info *bus = ccb_to_terminate->bus;
527 return bus->interface->term_io(bus->sim_cookie, ccb_to_terminate);
534 scsi_bus_info *bus = req_to_abort->bus;
536 if (bus == NULL) {
542 mutex_lock(&bus->mutex);
547 mutex_unlock(&bus->mutex);
553 was_servicable = scsi_can_service_bus(bus);
558 start_retry = scsi_can_service_bus(bus) && !was_servicable;
560 mutex_unlock(&bus->mutex);
576 release_sem(bus->start_service);
589 scsi_check_exec_service(scsi_bus_info *bus)
592 mutex_lock(&bus->mutex);
594 if (scsi_can_service_bus(bus)) {
598 SHOW_FLOW0(3, "servicing bus");
603 device = bus->waiting_devices;
604 bus->waiting_devices = bus->waiting_devices->waiting_next;
609 // if bus is saturated, block it
610 if (--bus->left_slots == 0) {
611 SHOW_FLOW0(3, "bus is saturated, blocking further requests");
612 scsi_block_bus_nolock(bus, false);
626 mutex_unlock(&bus->mutex);
629 bus->interface->scsi_io(bus->sim_cookie, request);
634 mutex_unlock(&bus->mutex);