Lines Matching defs:erp_action
89 zfcp_erp_action_dismiss(&zfcp_sdev->erp_action);
97 zfcp_erp_action_dismiss(&port->erp_action);
112 zfcp_erp_action_dismiss(&adapter->erp_action);
219 struct zfcp_erp_action *erp_action;
236 erp_action = &zfcp_sdev->erp_action;
237 WARN_ON_ONCE(erp_action->port != port);
238 WARN_ON_ONCE(erp_action->sdev != sdev);
250 erp_action = &port->erp_action;
251 WARN_ON_ONCE(erp_action->port != port);
252 WARN_ON_ONCE(erp_action->sdev != NULL);
261 erp_action = &adapter->erp_action;
262 WARN_ON_ONCE(erp_action->port != NULL);
263 WARN_ON_ONCE(erp_action->sdev != NULL);
270 WARN_ON_ONCE(erp_action->adapter != adapter);
271 memset(&erp_action->list, 0, sizeof(erp_action->list));
272 memset(&erp_action->timer, 0, sizeof(erp_action->timer));
273 erp_action->step = ZFCP_ERP_STEP_UNINITIALIZED;
274 erp_action->fsf_req_id = 0;
275 erp_action->type = need;
276 erp_action->status = act_status;
278 return erp_action;
537 zfcp_dbf_rec_run("eraubl1", &adapter->erp_action);
545 zfcp_dbf_rec_run("erpubl1", &port->erp_action);
555 zfcp_dbf_rec_run("erlubl1", &sdev_to_zfcp(sdev)->erp_action);
559 static void zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action)
561 list_move(&erp_action->list, &erp_action->adapter->erp_running_head);
562 zfcp_dbf_rec_run("erator1", erp_action);
575 if (req && req->erp_action == act) {
583 WRITE_ONCE(req->erp_action, NULL);
596 * @erp_action: ERP action to continue.
599 void zfcp_erp_notify(struct zfcp_erp_action *erp_action, unsigned long set_mask)
601 struct zfcp_adapter *adapter = erp_action->adapter;
605 if (zfcp_erp_action_is_running(erp_action)) {
606 erp_action->status |= set_mask;
607 zfcp_erp_action_ready(erp_action);
624 act = READ_ONCE(fsf_req->erp_action);
637 static void zfcp_erp_strategy_memwait(struct zfcp_erp_action *erp_action)
639 timer_setup(&erp_action->timer, zfcp_erp_memwait_handler, 0);
640 erp_action->timer.expires = jiffies + HZ;
641 add_timer(&erp_action->timer);
742 struct zfcp_erp_action *erp_action)
746 struct zfcp_adapter *adapter = erp_action->adapter;
754 zfcp_erp_action_to_running(erp_action);
756 if (zfcp_fsf_exchange_config_data(erp_action)) {
764 if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT)
973 struct zfcp_erp_action *erp_action)
975 struct zfcp_port *port = erp_action->port;
978 switch (erp_action->step) {
982 return zfcp_erp_port_forced_strategy_close(erp_action);
1001 struct zfcp_erp_action *erp_action)
1005 retval = zfcp_fsf_close_port(erp_action);
1008 erp_action->step = ZFCP_ERP_STEP_PORT_CLOSING;
1015 struct zfcp_erp_action *erp_action)
1019 retval = zfcp_fsf_open_port(erp_action);
1022 erp_action->step = ZFCP_ERP_STEP_PORT_OPENING;
1084 struct zfcp_erp_action *erp_action)
1086 struct zfcp_port *port = erp_action->port;
1093 switch (erp_action->step) {
1096 return zfcp_erp_port_strategy_close(erp_action);
1112 if (erp_action->status & ZFCP_STATUS_ERP_CLOSE_ONLY)
1115 return zfcp_erp_port_strategy_open_common(erp_action);
1127 struct zfcp_erp_action *erp_action)
1129 int retval = zfcp_fsf_close_lun(erp_action);
1132 erp_action->step = ZFCP_ERP_STEP_LUN_CLOSING;
1139 struct zfcp_erp_action *erp_action)
1141 int retval = zfcp_fsf_open_lun(erp_action);
1144 erp_action->step = ZFCP_ERP_STEP_LUN_OPENING;
1151 struct zfcp_erp_action *erp_action)
1153 struct scsi_device *sdev = erp_action->sdev;
1156 switch (erp_action->step) {
1160 return zfcp_erp_lun_strategy_close(erp_action);
1166 if (erp_action->status & ZFCP_STATUS_ERP_CLOSE_ONLY)
1168 return zfcp_erp_lun_strategy_open(erp_action);
1293 struct zfcp_erp_action *erp_action, enum zfcp_erp_act_result result)
1295 struct zfcp_adapter *adapter = erp_action->adapter;
1296 struct zfcp_port *port = erp_action->port;
1297 struct scsi_device *sdev = erp_action->sdev;
1299 switch (erp_action->type) {
1375 static void zfcp_erp_action_dequeue(struct zfcp_erp_action *erp_action)
1377 struct zfcp_adapter *adapter = erp_action->adapter;
1381 if (erp_action->status & ZFCP_STATUS_ERP_LOWMEM) {
1383 erp_action->status &= ~ZFCP_STATUS_ERP_LOWMEM;
1386 list_del(&erp_action->list);
1387 zfcp_dbf_rec_run("eractd1", erp_action);
1389 switch (erp_action->type) {
1391 zfcp_sdev = sdev_to_zfcp(erp_action->sdev);
1399 &erp_action->port->status);
1404 &erp_action->adapter->status);
1429 zfcp_dbf_rec_run_lvl(4, "ertru_p", &port->erp_action);
1454 zfcp_dbf_rec_run_lvl(4, "ertru_l", &zsdev->erp_action);
1510 struct zfcp_erp_action *erp_action)
1512 switch (erp_action->type) {
1514 return zfcp_erp_adapter_strategy(erp_action);
1516 return zfcp_erp_port_forced_strategy(erp_action);
1518 return zfcp_erp_port_strategy(erp_action);
1520 return zfcp_erp_lun_strategy(erp_action);
1526 struct zfcp_erp_action *erp_action)
1530 struct zfcp_adapter *adapter = erp_action->adapter;
1535 zfcp_erp_strategy_check_fsfreq(erp_action);
1537 if (erp_action->status & ZFCP_STATUS_ERP_DISMISSED) {
1538 zfcp_erp_action_dequeue(erp_action);
1543 if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) {
1548 zfcp_erp_action_to_running(erp_action);
1552 result = zfcp_erp_strategy_do_action(erp_action);
1555 if (erp_action->status & ZFCP_STATUS_ERP_DISMISSED)
1560 if (!(erp_action->status & ZFCP_STATUS_ERP_LOWMEM)) {
1562 erp_action->status |= ZFCP_STATUS_ERP_LOWMEM;
1567 zfcp_erp_strategy_memwait(erp_action);
1573 if (erp_action->status & ZFCP_STATUS_ERP_LOWMEM) {
1575 erp_action->status &= ~ZFCP_STATUS_ERP_LOWMEM;
1587 result = zfcp_erp_strategy_check_target(erp_action, result);
1588 zfcp_erp_action_dequeue(erp_action);
1589 result = zfcp_erp_strategy_statechange(erp_action, result);
1593 zfcp_erp_strategy_followup_success(erp_action);
1595 zfcp_erp_strategy_followup_failed(erp_action);
1601 zfcp_erp_action_cleanup(erp_action, result);