Lines Matching refs:port

99 static void zfcp_erp_action_dismiss_port(struct zfcp_port *port)  in zfcp_erp_action_dismiss_port()  argument
103 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_INUSE) in zfcp_erp_action_dismiss_port()
104 zfcp_erp_action_dismiss(&port->erp_action); in zfcp_erp_action_dismiss_port()
106 spin_lock(port->adapter->scsi_host->host_lock); in zfcp_erp_action_dismiss_port()
107 __shost_for_each_device(sdev, port->adapter->scsi_host) in zfcp_erp_action_dismiss_port()
108 if (sdev_to_zfcp(sdev)->port == port) in zfcp_erp_action_dismiss_port()
110 spin_unlock(port->adapter->scsi_host->host_lock); in zfcp_erp_action_dismiss_port()
116 struct zfcp_port *port; in zfcp_erp_action_dismiss_adapter() local
122 list_for_each_entry(port, &adapter->port_list, list) in zfcp_erp_action_dismiss_adapter()
123 zfcp_erp_action_dismiss_port(port); in zfcp_erp_action_dismiss_adapter()
129 struct zfcp_port *port, in zfcp_erp_required_act() argument
142 p_status = atomic_read(&port->status); in zfcp_erp_required_act()
150 p_status = atomic_read(&port->status); in zfcp_erp_required_act()
155 p_status = atomic_read(&port->status); in zfcp_erp_required_act()
181 struct zfcp_port *port, in zfcp_erp_setup_act() argument
197 erp_action->port = port; in zfcp_erp_setup_act()
206 if (!get_device(&port->dev)) in zfcp_erp_setup_act()
208 zfcp_erp_action_dismiss_port(port); in zfcp_erp_setup_act()
209 atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE, &port->status); in zfcp_erp_setup_act()
210 erp_action = &port->erp_action; in zfcp_erp_setup_act()
212 erp_action->port = port; in zfcp_erp_setup_act()
213 if (!(atomic_read(&port->status) & ZFCP_STATUS_COMMON_RUNNING)) in zfcp_erp_setup_act()
240 struct zfcp_port *port, in zfcp_erp_action_enqueue() argument
250 need = zfcp_erp_required_act(want, adapter, port, sdev); in zfcp_erp_action_enqueue()
254 act = zfcp_erp_setup_act(need, act_status, adapter, port, sdev); in zfcp_erp_action_enqueue()
263 zfcp_dbf_rec_trig(id, adapter, port, sdev, want, need); in zfcp_erp_action_enqueue()
325 void zfcp_erp_port_shutdown(struct zfcp_port *port, int clear, char *id) in zfcp_erp_port_shutdown() argument
328 zfcp_erp_port_reopen(port, clear | flags, id); in zfcp_erp_port_shutdown()
331 static void zfcp_erp_port_block(struct zfcp_port *port, int clear) in zfcp_erp_port_block() argument
333 zfcp_erp_clear_port_status(port, in zfcp_erp_port_block()
337 static void _zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear, in _zfcp_erp_port_forced_reopen() argument
340 zfcp_erp_port_block(port, clear); in _zfcp_erp_port_forced_reopen()
341 zfcp_scsi_schedule_rport_block(port); in _zfcp_erp_port_forced_reopen()
343 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_FAILED) in _zfcp_erp_port_forced_reopen()
347 port->adapter, port, NULL, id, 0); in _zfcp_erp_port_forced_reopen()
356 void zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear, char *id) in zfcp_erp_port_forced_reopen() argument
359 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_port_forced_reopen()
362 _zfcp_erp_port_forced_reopen(port, clear, id); in zfcp_erp_port_forced_reopen()
366 static int _zfcp_erp_port_reopen(struct zfcp_port *port, int clear, char *id) in _zfcp_erp_port_reopen() argument
368 zfcp_erp_port_block(port, clear); in _zfcp_erp_port_reopen()
369 zfcp_scsi_schedule_rport_block(port); in _zfcp_erp_port_reopen()
371 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { in _zfcp_erp_port_reopen()
373 zfcp_erp_set_port_status(port, ZFCP_STATUS_COMMON_ERP_FAILED); in _zfcp_erp_port_reopen()
378 port->adapter, port, NULL, id, 0); in _zfcp_erp_port_reopen()
389 int zfcp_erp_port_reopen(struct zfcp_port *port, int clear, char *id) in zfcp_erp_port_reopen() argument
393 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_port_reopen()
396 retval = _zfcp_erp_port_reopen(port, clear, id); in zfcp_erp_port_reopen()
412 struct zfcp_adapter *adapter = zfcp_sdev->port->adapter; in _zfcp_erp_lun_reopen()
420 zfcp_sdev->port, sdev, id, act_status); in _zfcp_erp_lun_reopen()
435 struct zfcp_port *port = zfcp_sdev->port; in zfcp_erp_lun_reopen() local
436 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_lun_reopen()
469 struct zfcp_port *port = zfcp_sdev->port; in zfcp_erp_lun_shutdown_wait() local
470 struct zfcp_adapter *adapter = port->adapter; in zfcp_erp_lun_shutdown_wait()
492 static void zfcp_erp_port_unblock(struct zfcp_port *port) in zfcp_erp_port_unblock() argument
494 if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status)) in zfcp_erp_port_unblock()
495 zfcp_dbf_rec_run("erpubl1", &port->erp_action); in zfcp_erp_port_unblock()
496 atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status); in zfcp_erp_port_unblock()
585 struct zfcp_port *port; in _zfcp_erp_port_reopen_all() local
588 list_for_each_entry(port, &adapter->port_list, list) in _zfcp_erp_port_reopen_all()
589 _zfcp_erp_port_reopen(port, clear, id); in _zfcp_erp_port_reopen_all()
593 static void _zfcp_erp_lun_reopen_all(struct zfcp_port *port, int clear, in _zfcp_erp_lun_reopen_all() argument
598 spin_lock(port->adapter->scsi_host->host_lock); in _zfcp_erp_lun_reopen_all()
599 __shost_for_each_device(sdev, port->adapter->scsi_host) in _zfcp_erp_lun_reopen_all()
600 if (sdev_to_zfcp(sdev)->port == port) in _zfcp_erp_lun_reopen_all()
602 spin_unlock(port->adapter->scsi_host->host_lock); in _zfcp_erp_lun_reopen_all()
612 _zfcp_erp_port_forced_reopen(act->port, 0, "ersff_2"); in zfcp_erp_strategy_followup_failed()
615 _zfcp_erp_port_reopen(act->port, 0, "ersff_3"); in zfcp_erp_strategy_followup_failed()
630 _zfcp_erp_port_reopen(act->port, 0, "ersfs_2"); in zfcp_erp_strategy_followup_success()
633 _zfcp_erp_lun_reopen_all(act->port, 0, "ersfs_3"); in zfcp_erp_strategy_followup_success()
654 struct zfcp_port *port; in zfcp_erp_enqueue_ptp_port() local
655 port = zfcp_port_enqueue(adapter, adapter->peer_wwpn, 0, in zfcp_erp_enqueue_ptp_port()
657 if (IS_ERR(port)) /* error or port already attached */ in zfcp_erp_enqueue_ptp_port()
659 _zfcp_erp_port_reopen(port, 0, "ereptp1"); in zfcp_erp_enqueue_ptp_port()
826 struct zfcp_port *port = erp_action->port; in zfcp_erp_port_forced_strategy() local
827 int status = atomic_read(&port->status); in zfcp_erp_port_forced_strategy()
873 struct zfcp_port *port = act->port; in zfcp_erp_open_ptp_port() local
875 if (port->wwpn != adapter->peer_wwpn) { in zfcp_erp_open_ptp_port()
876 zfcp_erp_set_port_status(port, ZFCP_STATUS_COMMON_ERP_FAILED); in zfcp_erp_open_ptp_port()
879 port->d_id = adapter->peer_d_id; in zfcp_erp_open_ptp_port()
886 struct zfcp_port *port = act->port; in zfcp_erp_port_strategy_open_common() local
887 int p_status = atomic_read(&port->status); in zfcp_erp_port_strategy_open_common()
895 if (!port->d_id) { in zfcp_erp_port_strategy_open_common()
896 zfcp_fc_trigger_did_lookup(port); in zfcp_erp_port_strategy_open_common()
904 if (!port->d_id) { in zfcp_erp_port_strategy_open_common()
905 zfcp_fc_trigger_did_lookup(port); in zfcp_erp_port_strategy_open_common()
910 if (port->d_id && !(p_status & ZFCP_STATUS_COMMON_NOESC)) { in zfcp_erp_port_strategy_open_common()
911 port->d_id = 0; in zfcp_erp_port_strategy_open_common()
921 struct zfcp_port *port = erp_action->port; in zfcp_erp_port_strategy() local
922 int p_status = atomic_read(&port->status); in zfcp_erp_port_strategy()
1014 dev_err(&zfcp_sdev->port->adapter->ccw_device->dev, in zfcp_erp_strategy_check_lun()
1018 (unsigned long long)zfcp_sdev->port->wwpn); in zfcp_erp_strategy_check_lun()
1032 static int zfcp_erp_strategy_check_port(struct zfcp_port *port, int result) in zfcp_erp_strategy_check_port() argument
1036 atomic_set(&port->erp_counter, 0); in zfcp_erp_strategy_check_port()
1037 zfcp_erp_port_unblock(port); in zfcp_erp_strategy_check_port()
1041 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_NOESC) { in zfcp_erp_strategy_check_port()
1042 zfcp_erp_port_block(port, 0); in zfcp_erp_strategy_check_port()
1045 atomic_inc(&port->erp_counter); in zfcp_erp_strategy_check_port()
1046 if (atomic_read(&port->erp_counter) > ZFCP_MAX_ERPS) { in zfcp_erp_strategy_check_port()
1047 dev_err(&port->adapter->ccw_device->dev, in zfcp_erp_strategy_check_port()
1049 (unsigned long long)port->wwpn); in zfcp_erp_strategy_check_port()
1050 zfcp_erp_set_port_status(port, in zfcp_erp_strategy_check_port()
1056 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { in zfcp_erp_strategy_check_port()
1057 zfcp_erp_port_block(port, 0); in zfcp_erp_strategy_check_port()
1095 struct zfcp_port *port = erp_action->port; in zfcp_erp_strategy_check_target() local
1106 result = zfcp_erp_strategy_check_port(port, result); in zfcp_erp_strategy_check_target()
1135 struct zfcp_port *port = act->port; in zfcp_erp_strategy_statechange() local
1152 if (zfcp_erp_strat_change_det(&port->status, erp_status)) { in zfcp_erp_strategy_statechange()
1153 _zfcp_erp_port_reopen(port, in zfcp_erp_strategy_statechange()
1197 &erp_action->port->status); in zfcp_erp_action_dequeue()
1210 struct zfcp_port *port = act->port; in zfcp_erp_action_cleanup() local
1221 zfcp_scsi_schedule_rport_register(port); in zfcp_erp_action_cleanup()
1224 put_device(&port->dev); in zfcp_erp_action_cleanup()
1420 struct zfcp_port *port; in zfcp_erp_set_adapter_status() local
1431 list_for_each_entry(port, &adapter->port_list, list) in zfcp_erp_set_adapter_status()
1432 atomic_set_mask(common_mask, &port->status); in zfcp_erp_set_adapter_status()
1450 struct zfcp_port *port; in zfcp_erp_clear_adapter_status() local
1465 list_for_each_entry(port, &adapter->port_list, list) { in zfcp_erp_clear_adapter_status()
1466 atomic_clear_mask(common_mask, &port->status); in zfcp_erp_clear_adapter_status()
1468 atomic_set(&port->erp_counter, 0); in zfcp_erp_clear_adapter_status()
1488 void zfcp_erp_set_port_status(struct zfcp_port *port, u32 mask) in zfcp_erp_set_port_status() argument
1494 atomic_set_mask(mask, &port->status); in zfcp_erp_set_port_status()
1499 spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_set_port_status()
1500 __shost_for_each_device(sdev, port->adapter->scsi_host) in zfcp_erp_set_port_status()
1501 if (sdev_to_zfcp(sdev)->port == port) in zfcp_erp_set_port_status()
1504 spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_set_port_status()
1514 void zfcp_erp_clear_port_status(struct zfcp_port *port, u32 mask) in zfcp_erp_clear_port_status() argument
1521 atomic_clear_mask(mask, &port->status); in zfcp_erp_clear_port_status()
1527 atomic_set(&port->erp_counter, 0); in zfcp_erp_clear_port_status()
1529 spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_clear_port_status()
1530 __shost_for_each_device(sdev, port->adapter->scsi_host) in zfcp_erp_clear_port_status()
1531 if (sdev_to_zfcp(sdev)->port == port) { in zfcp_erp_clear_port_status()
1537 spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags); in zfcp_erp_clear_port_status()