Lines Matching full:adapter

51 static void zfcp_erp_adapter_block(struct zfcp_adapter *adapter, int mask)  in zfcp_erp_adapter_block()  argument
53 zfcp_erp_clear_adapter_status(adapter, in zfcp_erp_adapter_block()
61 list_for_each_entry(curr_act, &act->adapter->erp_running_head, list) in zfcp_erp_action_is_running()
69 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_action_ready() local
71 list_move(&act->list, &adapter->erp_ready_head); in zfcp_erp_action_ready()
73 wake_up(&adapter->erp_ready_wq); in zfcp_erp_action_ready()
99 spin_lock(port->adapter->scsi_host->host_lock); in zfcp_erp_action_dismiss_port()
100 __shost_for_each_device(sdev, port->adapter->scsi_host) in zfcp_erp_action_dismiss_port()
103 spin_unlock(port->adapter->scsi_host->host_lock); in zfcp_erp_action_dismiss_port()
107 static void zfcp_erp_action_dismiss_adapter(struct zfcp_adapter *adapter) in zfcp_erp_action_dismiss_adapter() argument
111 if (atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_ERP_INUSE) in zfcp_erp_action_dismiss_adapter()
112 zfcp_erp_action_dismiss(&adapter->erp_action); in zfcp_erp_action_dismiss_adapter()
114 read_lock(&adapter->port_list_lock); in zfcp_erp_action_dismiss_adapter()
115 list_for_each_entry(port, &adapter->port_list, list) in zfcp_erp_action_dismiss_adapter()
117 read_unlock(&adapter->port_list_lock); in zfcp_erp_action_dismiss_adapter()
122 enum zfcp_erp_act_type want, struct zfcp_adapter *adapter, in zfcp_erp_handle_failed() argument
148 if (atomic_read(&adapter->status) & in zfcp_erp_handle_failed()
153 adapter, ZFCP_STATUS_COMMON_ERP_FAILED); in zfcp_erp_handle_failed()
162 struct zfcp_adapter *adapter, in zfcp_erp_required_act() argument
192 a_status = atomic_read(&adapter->status); in zfcp_erp_required_act()
202 a_status = atomic_read(&adapter->status); in zfcp_erp_required_act()
207 return 0; /* shutdown requested for closed adapter */ in zfcp_erp_required_act()
215 struct zfcp_adapter *adapter, in zfcp_erp_setup_act() argument
258 kref_get(&adapter->ref); in zfcp_erp_setup_act()
259 zfcp_erp_action_dismiss_adapter(adapter); in zfcp_erp_setup_act()
260 atomic_or(ZFCP_STATUS_COMMON_ERP_INUSE, &adapter->status); in zfcp_erp_setup_act()
261 erp_action = &adapter->erp_action; in zfcp_erp_setup_act()
264 if (!(atomic_read(&adapter->status) & in zfcp_erp_setup_act()
270 WARN_ON_ONCE(erp_action->adapter != adapter); in zfcp_erp_setup_act()
282 struct zfcp_adapter *adapter, in zfcp_erp_action_enqueue() argument
290 need = zfcp_erp_handle_failed(want, adapter, port, sdev); in zfcp_erp_action_enqueue()
296 if (!adapter->erp_thread) { in zfcp_erp_action_enqueue()
301 need = zfcp_erp_required_act(want, adapter, port, sdev); in zfcp_erp_action_enqueue()
305 act = zfcp_erp_setup_act(need, act_status, adapter, port, sdev); in zfcp_erp_action_enqueue()
310 atomic_or(ZFCP_STATUS_ADAPTER_ERP_PENDING, &adapter->status); in zfcp_erp_action_enqueue()
311 ++adapter->erp_total_count; in zfcp_erp_action_enqueue()
312 list_add_tail(&act->list, &adapter->erp_ready_head); in zfcp_erp_action_enqueue()
313 wake_up(&adapter->erp_ready_wq); in zfcp_erp_action_enqueue()
315 zfcp_dbf_rec_trig(dbftag, adapter, port, sdev, want, need); in zfcp_erp_action_enqueue()
319 struct zfcp_adapter *adapter, in zfcp_erp_port_forced_no_port_dbf() argument
325 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_port_forced_no_port_dbf()
333 zfcp_dbf_rec_trig(dbftag, adapter, &tmpport, NULL, in zfcp_erp_port_forced_no_port_dbf()
336 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_port_forced_no_port_dbf()
339 static void _zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, in _zfcp_erp_adapter_reopen() argument
342 zfcp_erp_adapter_block(adapter, clear_mask); in _zfcp_erp_adapter_reopen()
343 zfcp_scsi_schedule_rports_block(adapter); in _zfcp_erp_adapter_reopen()
346 adapter, NULL, NULL, dbftag, 0); in _zfcp_erp_adapter_reopen()
350 * zfcp_erp_adapter_reopen - Reopen adapter.
351 * @adapter: Adapter to reopen.
355 void zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear, in zfcp_erp_adapter_reopen() argument
360 zfcp_erp_adapter_block(adapter, clear); in zfcp_erp_adapter_reopen()
361 zfcp_scsi_schedule_rports_block(adapter); in zfcp_erp_adapter_reopen()
363 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_adapter_reopen()
364 zfcp_erp_action_enqueue(ZFCP_ERP_ACTION_REOPEN_ADAPTER, adapter, in zfcp_erp_adapter_reopen()
366 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_adapter_reopen()
370 * zfcp_erp_adapter_shutdown - Shutdown adapter.
371 * @adapter: Adapter to shut down.
375 void zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear, in zfcp_erp_adapter_shutdown() argument
379 zfcp_erp_adapter_reopen(adapter, clear | flags, dbftag); in zfcp_erp_adapter_shutdown()
407 port->adapter, port, NULL, dbftag, 0); in _zfcp_erp_port_forced_reopen()
420 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_port_forced_reopen() local
422 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_port_forced_reopen()
424 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_port_forced_reopen()
434 port->adapter, port, NULL, dbftag, 0); in _zfcp_erp_port_reopen()
446 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_port_reopen() local
448 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_port_reopen()
450 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_port_reopen()
463 struct zfcp_adapter *adapter = zfcp_sdev->port->adapter; in _zfcp_erp_lun_reopen() local
467 zfcp_erp_action_enqueue(ZFCP_ERP_ACTION_REOPEN_LUN, adapter, in _zfcp_erp_lun_reopen()
484 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_lun_reopen() local
486 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_lun_reopen()
488 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_lun_reopen()
518 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_lun_shutdown_wait() local
521 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_lun_shutdown_wait()
523 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_lun_shutdown_wait()
525 zfcp_erp_wait(adapter); in zfcp_erp_lun_shutdown_wait()
533 static void zfcp_erp_adapter_unblock(struct zfcp_adapter *adapter) in zfcp_erp_adapter_unblock() argument
536 &adapter->status)) in zfcp_erp_adapter_unblock()
537 zfcp_dbf_rec_run("eraubl1", &adapter->erp_action); in zfcp_erp_adapter_unblock()
538 atomic_or(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status); in zfcp_erp_adapter_unblock()
561 list_move(&erp_action->list, &erp_action->adapter->erp_running_head); in zfcp_erp_action_to_running()
567 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_strategy_check_fsfreq() local
573 spin_lock(&adapter->req_list->lock); in zfcp_erp_strategy_check_fsfreq()
574 req = _zfcp_reqlist_find(adapter->req_list, act->fsf_req_id); in zfcp_erp_strategy_check_fsfreq()
591 spin_unlock(&adapter->req_list->lock); in zfcp_erp_strategy_check_fsfreq()
601 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_notify() local
604 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_notify()
609 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_notify()
644 void zfcp_erp_port_forced_reopen_all(struct zfcp_adapter *adapter, in zfcp_erp_port_forced_reopen_all() argument
650 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_port_forced_reopen_all()
651 read_lock(&adapter->port_list_lock); in zfcp_erp_port_forced_reopen_all()
652 list_for_each_entry(port, &adapter->port_list, list) in zfcp_erp_port_forced_reopen_all()
654 read_unlock(&adapter->port_list_lock); in zfcp_erp_port_forced_reopen_all()
655 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_port_forced_reopen_all()
658 static void _zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, in _zfcp_erp_port_reopen_all() argument
663 read_lock(&adapter->port_list_lock); in _zfcp_erp_port_reopen_all()
664 list_for_each_entry(port, &adapter->port_list, list) in _zfcp_erp_port_reopen_all()
666 read_unlock(&adapter->port_list_lock); in _zfcp_erp_port_reopen_all()
674 spin_lock(port->adapter->scsi_host->host_lock); in _zfcp_erp_lun_reopen_all()
675 __shost_for_each_device(sdev, port->adapter->scsi_host) in _zfcp_erp_lun_reopen_all()
678 spin_unlock(port->adapter->scsi_host->host_lock); in _zfcp_erp_lun_reopen_all()
685 _zfcp_erp_adapter_reopen(act->adapter, 0, "ersff_1"); in zfcp_erp_strategy_followup_failed()
703 _zfcp_erp_port_reopen_all(act->adapter, 0, "ersfs_1"); in zfcp_erp_strategy_followup_success()
717 static void zfcp_erp_wakeup(struct zfcp_adapter *adapter) in zfcp_erp_wakeup() argument
721 read_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_wakeup()
722 if (list_empty(&adapter->erp_ready_head) && in zfcp_erp_wakeup()
723 list_empty(&adapter->erp_running_head)) { in zfcp_erp_wakeup()
725 &adapter->status); in zfcp_erp_wakeup()
726 wake_up(&adapter->erp_done_wqh); in zfcp_erp_wakeup()
728 read_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_wakeup()
731 static void zfcp_erp_enqueue_ptp_port(struct zfcp_adapter *adapter) in zfcp_erp_enqueue_ptp_port() argument
734 port = zfcp_port_enqueue(adapter, adapter->peer_wwpn, 0, in zfcp_erp_enqueue_ptp_port()
735 adapter->peer_d_id); in zfcp_erp_enqueue_ptp_port()
746 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_adapter_strat_fsf_xconf() local
748 atomic_andnot(ZFCP_STATUS_ADAPTER_XCONFIG_OK, &adapter->status); in zfcp_erp_adapter_strat_fsf_xconf()
752 &adapter->status); in zfcp_erp_adapter_strat_fsf_xconf()
753 write_lock_irq(&adapter->erp_lock); in zfcp_erp_adapter_strat_fsf_xconf()
755 write_unlock_irq(&adapter->erp_lock); in zfcp_erp_adapter_strat_fsf_xconf()
758 &adapter->status); in zfcp_erp_adapter_strat_fsf_xconf()
762 wait_event(adapter->erp_ready_wq, in zfcp_erp_adapter_strat_fsf_xconf()
763 !list_empty(&adapter->erp_ready_head)); in zfcp_erp_adapter_strat_fsf_xconf()
767 if (!(atomic_read(&adapter->status) & in zfcp_erp_adapter_strat_fsf_xconf()
776 &adapter->status); in zfcp_erp_adapter_strat_fsf_xconf()
778 if (!(atomic_read(&adapter->status) & ZFCP_STATUS_ADAPTER_XCONFIG_OK)) in zfcp_erp_adapter_strat_fsf_xconf()
785 zfcp_erp_adapter_strategy_open_ptp_port(struct zfcp_adapter *const adapter) in zfcp_erp_adapter_strategy_open_ptp_port() argument
787 if (fc_host_port_type(adapter->scsi_host) == FC_PORTTYPE_PTP) in zfcp_erp_adapter_strategy_open_ptp_port()
788 zfcp_erp_enqueue_ptp_port(adapter); in zfcp_erp_adapter_strategy_open_ptp_port()
795 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_adapter_strategy_open_fsf_xport() local
797 write_lock_irq(&adapter->erp_lock); in zfcp_erp_adapter_strategy_open_fsf_xport()
799 write_unlock_irq(&adapter->erp_lock); in zfcp_erp_adapter_strategy_open_fsf_xport()
808 wait_event(adapter->erp_ready_wq, in zfcp_erp_adapter_strategy_open_fsf_xport()
809 !list_empty(&adapter->erp_ready_head)); in zfcp_erp_adapter_strategy_open_fsf_xport()
818 zfcp_erp_adapter_strategy_alloc_shost(struct zfcp_adapter *const adapter) in zfcp_erp_adapter_strategy_alloc_shost() argument
821 &adapter->diagnostics->config_data; in zfcp_erp_adapter_strategy_alloc_shost()
823 &adapter->diagnostics->port_data; in zfcp_erp_adapter_strategy_alloc_shost()
827 rc = zfcp_scsi_adapter_register(adapter); in zfcp_erp_adapter_strategy_alloc_shost()
845 zfcp_scsi_shost_update_config_data(adapter, &config_data->data, in zfcp_erp_adapter_strategy_alloc_shost()
849 if (adapter->adapter_features & FSF_FEATURE_HBAAPI_MANAGEMENT) { in zfcp_erp_adapter_strategy_alloc_shost()
851 zfcp_scsi_shost_update_port_data(adapter, &port_data->data); in zfcp_erp_adapter_strategy_alloc_shost()
865 zfcp_fsf_fc_host_link_down(adapter); in zfcp_erp_adapter_strategy_alloc_shost()
879 if (zfcp_erp_adapter_strategy_alloc_shost(act->adapter) == in zfcp_erp_adapter_strategy_open_fsf()
883 zfcp_erp_adapter_strategy_open_ptp_port(act->adapter); in zfcp_erp_adapter_strategy_open_fsf()
885 if (mempool_resize(act->adapter->pool.sr_data, in zfcp_erp_adapter_strategy_open_fsf()
886 act->adapter->stat_read_buf_num)) in zfcp_erp_adapter_strategy_open_fsf()
889 if (mempool_resize(act->adapter->pool.status_read_req, in zfcp_erp_adapter_strategy_open_fsf()
890 act->adapter->stat_read_buf_num)) in zfcp_erp_adapter_strategy_open_fsf()
893 atomic_set(&act->adapter->stat_miss, act->adapter->stat_read_buf_num); in zfcp_erp_adapter_strategy_open_fsf()
894 if (zfcp_status_read_refill(act->adapter)) in zfcp_erp_adapter_strategy_open_fsf()
902 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_adapter_strategy_close() local
904 /* close queues to ensure that buffers are not accessed by adapter */ in zfcp_erp_adapter_strategy_close()
905 zfcp_qdio_close(adapter->qdio); in zfcp_erp_adapter_strategy_close()
906 zfcp_fsf_req_dismiss_all(adapter); in zfcp_erp_adapter_strategy_close()
907 adapter->fsf_req_seq_no = 0; in zfcp_erp_adapter_strategy_close()
908 zfcp_fc_wka_ports_force_offline(adapter->gs); in zfcp_erp_adapter_strategy_close()
910 zfcp_erp_clear_adapter_status(adapter, ZFCP_STATUS_COMMON_OPEN); in zfcp_erp_adapter_strategy_close()
913 ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED, &adapter->status); in zfcp_erp_adapter_strategy_close()
919 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_adapter_strategy_open() local
921 if (zfcp_qdio_open(adapter->qdio)) { in zfcp_erp_adapter_strategy_open()
924 &adapter->status); in zfcp_erp_adapter_strategy_open()
933 atomic_or(ZFCP_STATUS_COMMON_OPEN, &adapter->status); in zfcp_erp_adapter_strategy_open()
941 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_adapter_strategy() local
943 if (atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_OPEN) { in zfcp_erp_adapter_strategy()
1030 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_open_ptp_port() local
1033 if (port->wwpn != adapter->peer_wwpn) { in zfcp_erp_open_ptp_port()
1037 port->d_id = adapter->peer_d_id; in zfcp_erp_open_ptp_port()
1044 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_port_strategy_open_common() local
1052 if (fc_host_port_type(adapter->scsi_host) == FC_PORTTYPE_PTP) in zfcp_erp_port_strategy_open_common()
1196 dev_err(&zfcp_sdev->port->adapter->ccw_device->dev, in zfcp_erp_strategy_check_lun()
1236 dev_err(&port->adapter->ccw_device->dev, in zfcp_erp_strategy_check_port()
1259 struct zfcp_adapter *adapter, enum zfcp_erp_act_result result) in zfcp_erp_strategy_check_adapter() argument
1263 atomic_set(&adapter->erp_counter, 0); in zfcp_erp_strategy_check_adapter()
1264 zfcp_erp_adapter_unblock(adapter); in zfcp_erp_strategy_check_adapter()
1268 atomic_inc(&adapter->erp_counter); in zfcp_erp_strategy_check_adapter()
1269 if (atomic_read(&adapter->erp_counter) > ZFCP_MAX_ERPS) { in zfcp_erp_strategy_check_adapter()
1270 dev_err(&adapter->ccw_device->dev, in zfcp_erp_strategy_check_adapter()
1273 zfcp_erp_set_adapter_status(adapter, in zfcp_erp_strategy_check_adapter()
1285 if (atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { in zfcp_erp_strategy_check_adapter()
1286 zfcp_erp_adapter_block(adapter, 0); in zfcp_erp_strategy_check_adapter()
1295 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_strategy_check_target() local
1311 result = zfcp_erp_strategy_check_adapter(adapter, result); in zfcp_erp_strategy_check_target()
1336 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_strategy_statechange() local
1344 if (zfcp_erp_strat_change_det(&adapter->status, erp_status)) { in zfcp_erp_strategy_statechange()
1345 _zfcp_erp_adapter_reopen(adapter, in zfcp_erp_strategy_statechange()
1377 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_action_dequeue() local
1380 adapter->erp_total_count--; in zfcp_erp_action_dequeue()
1382 adapter->erp_low_mem_count--; in zfcp_erp_action_dequeue()
1404 &erp_action->adapter->status); in zfcp_erp_action_dequeue()
1416 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_try_rport_unblock() local
1418 struct Scsi_Host *shost = adapter->scsi_host; in zfcp_erp_try_rport_unblock()
1421 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_try_rport_unblock()
1427 * local link down (adapter erp_failed but not clear unblock) in zfcp_erp_try_rport_unblock()
1430 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_try_rport_unblock()
1456 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_try_rport_unblock()
1465 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_try_rport_unblock()
1471 struct zfcp_adapter *adapter = act->adapter; in zfcp_erp_action_cleanup() local
1498 register_service_level(&adapter->service_level); in zfcp_erp_action_cleanup()
1499 zfcp_fc_conditional_port_scan(adapter); in zfcp_erp_action_cleanup()
1500 queue_work(adapter->work_queue, &adapter->ns_up_work); in zfcp_erp_action_cleanup()
1502 unregister_service_level(&adapter->service_level); in zfcp_erp_action_cleanup()
1504 kref_put(&adapter->ref, zfcp_adapter_release); in zfcp_erp_action_cleanup()
1530 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_strategy() local
1532 kref_get(&adapter->ref); in zfcp_erp_strategy()
1534 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_strategy()
1551 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_strategy()
1553 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_strategy()
1561 ++adapter->erp_low_mem_count; in zfcp_erp_strategy()
1564 if (adapter->erp_total_count == adapter->erp_low_mem_count) in zfcp_erp_strategy()
1565 _zfcp_erp_adapter_reopen(adapter, 0, "erstgy1"); in zfcp_erp_strategy()
1574 --adapter->erp_low_mem_count; in zfcp_erp_strategy()
1598 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_strategy()
1603 kref_put(&adapter->ref, zfcp_adapter_release); in zfcp_erp_strategy()
1609 struct zfcp_adapter *adapter = (struct zfcp_adapter *) data; in zfcp_erp_thread() local
1614 wait_event_interruptible(adapter->erp_ready_wq, in zfcp_erp_thread()
1615 !list_empty(&adapter->erp_ready_head) || in zfcp_erp_thread()
1621 write_lock_irqsave(&adapter->erp_lock, flags); in zfcp_erp_thread()
1622 act = list_first_entry_or_null(&adapter->erp_ready_head, in zfcp_erp_thread()
1624 write_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_erp_thread()
1629 zfcp_erp_wakeup(adapter); in zfcp_erp_thread()
1637 * zfcp_erp_thread_setup - Start ERP thread for adapter
1638 * @adapter: Adapter to start the ERP thread for
1642 int zfcp_erp_thread_setup(struct zfcp_adapter *adapter) in zfcp_erp_thread_setup() argument
1646 thread = kthread_run(zfcp_erp_thread, adapter, "zfcperp%s", in zfcp_erp_thread_setup()
1647 dev_name(&adapter->ccw_device->dev)); in zfcp_erp_thread_setup()
1649 dev_err(&adapter->ccw_device->dev, in zfcp_erp_thread_setup()
1654 adapter->erp_thread = thread; in zfcp_erp_thread_setup()
1660 * @adapter: Adapter where the ERP thread should be stopped.
1662 * The caller of this routine ensures that the specified adapter has
1667 void zfcp_erp_thread_kill(struct zfcp_adapter *adapter) in zfcp_erp_thread_kill() argument
1669 kthread_stop(adapter->erp_thread); in zfcp_erp_thread_kill()
1670 adapter->erp_thread = NULL; in zfcp_erp_thread_kill()
1671 WARN_ON(!list_empty(&adapter->erp_ready_head)); in zfcp_erp_thread_kill()
1672 WARN_ON(!list_empty(&adapter->erp_running_head)); in zfcp_erp_thread_kill()
1676 * zfcp_erp_wait - wait for completion of error recovery on an adapter
1677 * @adapter: adapter for which to wait for completion of its error recovery
1679 void zfcp_erp_wait(struct zfcp_adapter *adapter) in zfcp_erp_wait() argument
1681 wait_event(adapter->erp_done_wqh, in zfcp_erp_wait()
1682 !(atomic_read(&adapter->status) & in zfcp_erp_wait()
1687 * zfcp_erp_set_adapter_status - set adapter status bits
1688 * @adapter: adapter to change the status
1693 void zfcp_erp_set_adapter_status(struct zfcp_adapter *adapter, u32 mask) in zfcp_erp_set_adapter_status() argument
1700 atomic_or(mask, &adapter->status); in zfcp_erp_set_adapter_status()
1705 read_lock_irqsave(&adapter->port_list_lock, flags); in zfcp_erp_set_adapter_status()
1706 list_for_each_entry(port, &adapter->port_list, list) in zfcp_erp_set_adapter_status()
1708 read_unlock_irqrestore(&adapter->port_list_lock, flags); in zfcp_erp_set_adapter_status()
1714 if (adapter->scsi_host == NULL) in zfcp_erp_set_adapter_status()
1717 spin_lock_irqsave(adapter->scsi_host->host_lock, flags); in zfcp_erp_set_adapter_status()
1718 __shost_for_each_device(sdev, adapter->scsi_host) in zfcp_erp_set_adapter_status()
1720 spin_unlock_irqrestore(adapter->scsi_host->host_lock, flags); in zfcp_erp_set_adapter_status()
1724 * zfcp_erp_clear_adapter_status - clear adapter status bits
1725 * @adapter: adapter to change the status
1730 void zfcp_erp_clear_adapter_status(struct zfcp_adapter *adapter, u32 mask) in zfcp_erp_clear_adapter_status() argument
1738 atomic_andnot(mask, &adapter->status); in zfcp_erp_clear_adapter_status()
1744 atomic_set(&adapter->erp_counter, 0); in zfcp_erp_clear_adapter_status()
1746 read_lock_irqsave(&adapter->port_list_lock, flags); in zfcp_erp_clear_adapter_status()
1747 list_for_each_entry(port, &adapter->port_list, list) { in zfcp_erp_clear_adapter_status()
1752 read_unlock_irqrestore(&adapter->port_list_lock, flags); in zfcp_erp_clear_adapter_status()
1758 if (adapter->scsi_host == NULL) in zfcp_erp_clear_adapter_status()
1761 spin_lock_irqsave(adapter->scsi_host->host_lock, flags); in zfcp_erp_clear_adapter_status()
1762 __shost_for_each_device(sdev, adapter->scsi_host) { in zfcp_erp_clear_adapter_status()
1767 spin_unlock_irqrestore(adapter->scsi_host->host_lock, flags); in zfcp_erp_clear_adapter_status()
1788 spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_set_port_status()
1789 __shost_for_each_device(sdev, port->adapter->scsi_host) in zfcp_erp_set_port_status()
1793 spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_set_port_status()
1798 * @port: adapter to change the status
1818 spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_clear_port_status()
1819 __shost_for_each_device(sdev, port->adapter->scsi_host) in zfcp_erp_clear_port_status()
1826 spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_clear_port_status()
1857 * zfcp_erp_adapter_reset_sync() - Really reopen adapter and wait.
1858 * @adapter: Pointer to zfcp_adapter to reopen.
1861 void zfcp_erp_adapter_reset_sync(struct zfcp_adapter *adapter, char *dbftag) in zfcp_erp_adapter_reset_sync() argument
1863 zfcp_erp_set_adapter_status(adapter, ZFCP_STATUS_COMMON_RUNNING); in zfcp_erp_adapter_reset_sync()
1864 zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, dbftag); in zfcp_erp_adapter_reset_sync()
1865 zfcp_erp_wait(adapter); in zfcp_erp_adapter_reset_sync()