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()
722 struct dasd_device *device, in reset_summary_unit_check() argument
741 cqr->startdev = device; in reset_summary_unit_check()
742 cqr->memdev = device; in reset_summary_unit_check()
755 struct dasd_device *device; in _restart_all_base_devices_on_lcu() local
760 list_for_each_entry(device, &lcu->active_devices, alias_list) { in _restart_all_base_devices_on_lcu()
761 private = (struct dasd_eckd_private *) device->private; in _restart_all_base_devices_on_lcu()
762 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
764 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _restart_all_base_devices_on_lcu()
768 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
769 dasd_schedule_block_bh(device->block); in _restart_all_base_devices_on_lcu()
770 dasd_schedule_device_bh(device); in _restart_all_base_devices_on_lcu()
772 list_for_each_entry(device, &lcu->inactive_devices, alias_list) { in _restart_all_base_devices_on_lcu()
773 private = (struct dasd_eckd_private *) device->private; in _restart_all_base_devices_on_lcu()
774 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
776 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _restart_all_base_devices_on_lcu()
780 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _restart_all_base_devices_on_lcu()
781 dasd_schedule_block_bh(device->block); in _restart_all_base_devices_on_lcu()
782 dasd_schedule_device_bh(device); in _restart_all_base_devices_on_lcu()
785 list_for_each_entry(device, &pavgroup->baselist, alias_list) { in _restart_all_base_devices_on_lcu()
786 dasd_schedule_block_bh(device->block); in _restart_all_base_devices_on_lcu()
787 dasd_schedule_device_bh(device); in _restart_all_base_devices_on_lcu()
795 struct dasd_device *device, *temp; in flush_all_alias_devices_on_lcu() local
813 list_for_each_entry_safe(device, temp, &lcu->active_devices, in flush_all_alias_devices_on_lcu()
815 private = (struct dasd_eckd_private *) device->private; in flush_all_alias_devices_on_lcu()
818 list_move(&device->alias_list, &active); in flush_all_alias_devices_on_lcu()
825 device = list_first_entry(&active, struct dasd_device, in flush_all_alias_devices_on_lcu()
828 rc = dasd_flush_device_queue(device); in flush_all_alias_devices_on_lcu()
834 if (device == list_first_entry(&active, in flush_all_alias_devices_on_lcu()
836 list_move(&device->alias_list, &lcu->active_devices); in flush_all_alias_devices_on_lcu()
837 private = (struct dasd_eckd_private *) device->private; in flush_all_alias_devices_on_lcu()
844 static void __stop_device_on_lcu(struct dasd_device *device, in __stop_device_on_lcu() argument
848 if (pos == device) { in __stop_device_on_lcu()
862 struct dasd_device *device) in _stop_all_devices_on_lcu() argument
868 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
870 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
873 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
875 __stop_device_on_lcu(device, pos); in _stop_all_devices_on_lcu()
882 struct dasd_device *device; in _unstop_all_devices_on_lcu() local
885 list_for_each_entry(device, &lcu->active_devices, alias_list) { in _unstop_all_devices_on_lcu()
886 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
887 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
888 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
891 list_for_each_entry(device, &lcu->inactive_devices, alias_list) { in _unstop_all_devices_on_lcu()
892 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
893 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
894 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
898 list_for_each_entry(device, &pavgroup->baselist, alias_list) { in _unstop_all_devices_on_lcu()
899 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
900 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
901 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _unstop_all_devices_on_lcu()
904 list_for_each_entry(device, &pavgroup->aliaslist, alias_list) { in _unstop_all_devices_on_lcu()
905 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in _unstop_all_devices_on_lcu()
906 dasd_device_remove_stop_bits(device, DASD_STOPPED_SU); in _unstop_all_devices_on_lcu()
907 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), in _unstop_all_devices_on_lcu()
918 struct dasd_device *device; in summary_unit_check_handling_work() local
923 device = suc_data->device; in summary_unit_check_handling_work()
929 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in summary_unit_check_handling_work()
930 dasd_device_remove_stop_bits(device, in summary_unit_check_handling_work()
932 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in summary_unit_check_handling_work()
933 reset_summary_unit_check(lcu, device, suc_data->reason); in summary_unit_check_handling_work()
939 _schedule_lcu_update(lcu, device); in summary_unit_check_handling_work()
940 lcu->suc_data.device = NULL; in summary_unit_check_handling_work()
941 dasd_put_device(device); in summary_unit_check_handling_work()
948 void dasd_alias_handle_summary_unit_check(struct dasd_device *device, in dasd_alias_handle_summary_unit_check() argument
956 private = (struct dasd_eckd_private *) device->private; in dasd_alias_handle_summary_unit_check()
961 DBF_DEV_EVENT(DBF_NOTICE, device, "%s %x", in dasd_alias_handle_summary_unit_check()
964 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
972 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
978 _stop_all_devices_on_lcu(lcu, device); in dasd_alias_handle_summary_unit_check()
984 if (list_empty(&device->alias_list)) { in dasd_alias_handle_summary_unit_check()
985 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
991 if (lcu->suc_data.device) { in dasd_alias_handle_summary_unit_check()
993 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_alias_handle_summary_unit_check()
1000 lcu->suc_data.device = device; in dasd_alias_handle_summary_unit_check()
1001 dasd_get_device(device); in dasd_alias_handle_summary_unit_check()
1004 dasd_put_device(device); in dasd_alias_handle_summary_unit_check()