Lines Matching refs:device
186 int dasd_alias_make_device_known_to_lcu(struct dasd_device *device) in dasd_alias_make_device_known_to_lcu() argument
194 private = (struct dasd_eckd_private *) device->private; in dasd_alias_make_device_known_to_lcu()
196 device->discipline->get_uid(device, &uid); in dasd_alias_make_device_known_to_lcu()
232 list_add(&device->alias_list, &lcu->inactive_devices); in dasd_alias_make_device_known_to_lcu()
245 void dasd_alias_disconnect_device_from_lcu(struct dasd_device *device) in dasd_alias_disconnect_device_from_lcu() argument
254 private = (struct dasd_eckd_private *) device->private; in dasd_alias_disconnect_device_from_lcu()
259 device->discipline->get_uid(device, &uid); in dasd_alias_disconnect_device_from_lcu()
261 list_del_init(&device->alias_list); in dasd_alias_disconnect_device_from_lcu()
263 if (device == lcu->suc_data.device) { in dasd_alias_disconnect_device_from_lcu()
267 if (device == lcu->suc_data.device) { in dasd_alias_disconnect_device_from_lcu()
268 dasd_put_device(device); in dasd_alias_disconnect_device_from_lcu()
269 lcu->suc_data.device = NULL; in dasd_alias_disconnect_device_from_lcu()
273 if (device == lcu->ruac_data.device) { in dasd_alias_disconnect_device_from_lcu()
278 if (device == lcu->ruac_data.device) { in dasd_alias_disconnect_device_from_lcu()
279 dasd_put_device(device); in dasd_alias_disconnect_device_from_lcu()
280 lcu->ruac_data.device = NULL; in dasd_alias_disconnect_device_from_lcu()
315 struct dasd_device *device, in _add_device_to_lcu() argument
324 private = (struct dasd_eckd_private *) device->private; in _add_device_to_lcu()
327 if (device != pos) in _add_device_to_lcu()
328 spin_lock_irqsave_nested(get_ccwdev_lock(device->cdev), flags, in _add_device_to_lcu()
335 if (device != pos) in _add_device_to_lcu()
336 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _add_device_to_lcu()
340 list_move(&device->alias_list, &lcu->active_devices); in _add_device_to_lcu()
363 list_move(&device->alias_list, &group->baselist); in _add_device_to_lcu()
365 list_move(&device->alias_list, &group->aliaslist); in _add_device_to_lcu()
371 struct dasd_device *device) in _remove_device_from_lcu() argument
376 private = (struct dasd_eckd_private *) device->private; in _remove_device_from_lcu()
377 list_move(&device->alias_list, &lcu->inactive_devices); in _remove_device_from_lcu()
387 if (group->next == device) in _remove_device_from_lcu()
414 static int read_unit_address_configuration(struct dasd_device *device, in read_unit_address_configuration() argument
425 device); in read_unit_address_configuration()
428 cqr->startdev = device; in read_unit_address_configuration()
429 cqr->memdev = device; in read_unit_address_configuration()
481 struct dasd_device *device, *tempdev; in _lcu_update() local
487 list_for_each_entry_safe(device, tempdev, &pavgroup->baselist, in _lcu_update()
489 list_move(&device->alias_list, &lcu->active_devices); in _lcu_update()
490 private = (struct dasd_eckd_private *) device->private; in _lcu_update()
493 list_for_each_entry_safe(device, tempdev, &pavgroup->aliaslist, in _lcu_update()
495 list_move(&device->alias_list, &lcu->active_devices); in _lcu_update()
496 private = (struct dasd_eckd_private *) device->private; in _lcu_update()
526 list_for_each_entry_safe(device, tempdev, &lcu->active_devices, in _lcu_update()
528 _add_device_to_lcu(lcu, device, refdev); in _lcu_update()
539 struct dasd_device *device; in lcu_update_work() local
545 device = ruac_data->device; in lcu_update_work()
546 rc = _lcu_update(device, lcu); in lcu_update_work()
554 DBF_DEV_EVENT(DBF_WARNING, device, "could not update" in lcu_update_work()
557 dasd_put_device(device); in lcu_update_work()
559 dasd_put_device(device); in lcu_update_work()
560 lcu->ruac_data.device = NULL; in lcu_update_work()
567 struct dasd_device *device) in _schedule_lcu_update() argument
573 if (lcu->ruac_data.device) { in _schedule_lcu_update()
577 if (device && !list_empty(&device->alias_list)) in _schedule_lcu_update()
578 usedev = device; in _schedule_lcu_update()
603 lcu->ruac_data.device = usedev; in _schedule_lcu_update()
609 int dasd_alias_add_device(struct dasd_device *device) in dasd_alias_add_device() argument
616 private = (struct dasd_eckd_private *) device->private; in dasd_alias_add_device()
621 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_alias_add_device()
624 rc = _add_device_to_lcu(lcu, device, device); in dasd_alias_add_device()
629 list_move(&device->alias_list, &lcu->active_devices); in dasd_alias_add_device()
630 _schedule_lcu_update(lcu, device); in dasd_alias_add_device()
633 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_alias_add_device()
637 int dasd_alias_update_add_device(struct dasd_device *device) in dasd_alias_update_add_device() argument
640 private = (struct dasd_eckd_private *) device->private; in dasd_alias_update_add_device()
642 return dasd_alias_add_device(device); in dasd_alias_update_add_device()
645 int dasd_alias_remove_device(struct dasd_device *device) in dasd_alias_remove_device() argument
651 private = (struct dasd_eckd_private *) device->private; in dasd_alias_remove_device()
657 _remove_device_from_lcu(lcu, device); in dasd_alias_remove_device()
721 struct dasd_device *device, in reset_summary_unit_check() argument
740 cqr->startdev = device; in reset_summary_unit_check()
741 cqr->memdev = device; in reset_summary_unit_check()
754 struct dasd_device *device; in _restart_all_base_devices_on_lcu() local
759 list_for_each_entry(device, &lcu->active_devices, alias_list) { in _restart_all_base_devices_on_lcu()
760 private = (struct dasd_eckd_private *) device->private; in _restart_all_base_devices_on_lcu()
761 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
763 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _restart_all_base_devices_on_lcu()
767 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
768 dasd_schedule_block_bh(device->block); in _restart_all_base_devices_on_lcu()
769 dasd_schedule_device_bh(device); in _restart_all_base_devices_on_lcu()
771 list_for_each_entry(device, &lcu->inactive_devices, alias_list) { in _restart_all_base_devices_on_lcu()
772 private = (struct dasd_eckd_private *) device->private; in _restart_all_base_devices_on_lcu()
773 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
775 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _restart_all_base_devices_on_lcu()
779 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
780 dasd_schedule_block_bh(device->block); in _restart_all_base_devices_on_lcu()
781 dasd_schedule_device_bh(device); in _restart_all_base_devices_on_lcu()
784 list_for_each_entry(device, &pavgroup->baselist, alias_list) { in _restart_all_base_devices_on_lcu()
785 dasd_schedule_block_bh(device->block); in _restart_all_base_devices_on_lcu()
786 dasd_schedule_device_bh(device); in _restart_all_base_devices_on_lcu()
794 struct dasd_device *device, *temp; in flush_all_alias_devices_on_lcu() local
812 list_for_each_entry_safe(device, temp, &lcu->active_devices, in flush_all_alias_devices_on_lcu()
814 private = (struct dasd_eckd_private *) device->private; in flush_all_alias_devices_on_lcu()
817 list_move(&device->alias_list, &active); in flush_all_alias_devices_on_lcu()
824 device = list_first_entry(&active, struct dasd_device, in flush_all_alias_devices_on_lcu()
827 rc = dasd_flush_device_queue(device); in flush_all_alias_devices_on_lcu()
833 if (device == list_first_entry(&active, in flush_all_alias_devices_on_lcu()
835 list_move(&device->alias_list, &lcu->active_devices); in flush_all_alias_devices_on_lcu()
840 static void __stop_device_on_lcu(struct dasd_device *device, in __stop_device_on_lcu() argument
844 if (pos == device) { in __stop_device_on_lcu()
858 struct dasd_device *device) in _stop_all_devices_on_lcu() argument
864 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
866 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
869 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
871 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
878 struct dasd_device *device; in _unstop_all_devices_on_lcu() local
881 list_for_each_entry(device, &lcu->active_devices, alias_list) { in _unstop_all_devices_on_lcu()
882 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
883 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
884 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
887 list_for_each_entry(device, &lcu->inactive_devices, alias_list) { in _unstop_all_devices_on_lcu()
888 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
889 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
890 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
894 list_for_each_entry(device, &pavgroup->baselist, alias_list) { in _unstop_all_devices_on_lcu()
895 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
896 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
897 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _unstop_all_devices_on_lcu()
900 list_for_each_entry(device, &pavgroup->aliaslist, alias_list) { in _unstop_all_devices_on_lcu()
901 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
902 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
903 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _unstop_all_devices_on_lcu()
914 struct dasd_device *device; in summary_unit_check_handling_work() local
919 device = suc_data->device; in summary_unit_check_handling_work()
925 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in summary_unit_check_handling_work()
926 dasd_device_remove_stop_bits(device, in summary_unit_check_handling_work()
928 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in summary_unit_check_handling_work()
929 reset_summary_unit_check(lcu, device, suc_data->reason); in summary_unit_check_handling_work()
935 _schedule_lcu_update(lcu, device); in summary_unit_check_handling_work()
936 lcu->suc_data.device = NULL; in summary_unit_check_handling_work()
937 dasd_put_device(device); in summary_unit_check_handling_work()
944 void dasd_alias_handle_summary_unit_check(struct dasd_device *device, in dasd_alias_handle_summary_unit_check() argument
952 private = (struct dasd_eckd_private *) device->private; in dasd_alias_handle_summary_unit_check()
957 DBF_DEV_EVENT(DBF_NOTICE, device, "%s %x", in dasd_alias_handle_summary_unit_check()
960 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
968 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
974 _stop_all_devices_on_lcu(lcu, device); in dasd_alias_handle_summary_unit_check()
980 if (list_empty(&device->alias_list)) { in dasd_alias_handle_summary_unit_check()
981 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
987 if (lcu->suc_data.device) { in dasd_alias_handle_summary_unit_check()
989 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
996 lcu->suc_data.device = device; in dasd_alias_handle_summary_unit_check()
997 dasd_get_device(device); in dasd_alias_handle_summary_unit_check()
1000 dasd_put_device(device); in dasd_alias_handle_summary_unit_check()