Lines Matching refs:erp_action

96 		zfcp_erp_action_dismiss(&zfcp_sdev->erp_action);  in zfcp_erp_action_dismiss_lun()
104 zfcp_erp_action_dismiss(&port->erp_action); in zfcp_erp_action_dismiss_port()
119 zfcp_erp_action_dismiss(&adapter->erp_action); in zfcp_erp_action_dismiss_adapter()
184 struct zfcp_erp_action *erp_action; in zfcp_erp_setup_act() local
195 erp_action = &zfcp_sdev->erp_action; in zfcp_erp_setup_act()
196 memset(erp_action, 0, sizeof(struct zfcp_erp_action)); in zfcp_erp_setup_act()
197 erp_action->port = port; in zfcp_erp_setup_act()
198 erp_action->sdev = sdev; in zfcp_erp_setup_act()
210 erp_action = &port->erp_action; in zfcp_erp_setup_act()
211 memset(erp_action, 0, sizeof(struct zfcp_erp_action)); in zfcp_erp_setup_act()
212 erp_action->port = port; in zfcp_erp_setup_act()
221 erp_action = &adapter->erp_action; in zfcp_erp_setup_act()
222 memset(erp_action, 0, sizeof(struct zfcp_erp_action)); in zfcp_erp_setup_act()
232 erp_action->adapter = adapter; in zfcp_erp_setup_act()
233 erp_action->action = need; in zfcp_erp_setup_act()
234 erp_action->status = act_status; in zfcp_erp_setup_act()
236 return erp_action; in zfcp_erp_setup_act()
488 zfcp_dbf_rec_run("eraubl1", &adapter->erp_action); in zfcp_erp_adapter_unblock()
495 zfcp_dbf_rec_run("erpubl1", &port->erp_action); in zfcp_erp_port_unblock()
504 zfcp_dbf_rec_run("erlubl1", &sdev_to_zfcp(sdev)->erp_action); in zfcp_erp_lun_unblock()
508 static void zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action) in zfcp_erp_action_to_running() argument
510 list_move(&erp_action->list, &erp_action->adapter->erp_running_head); in zfcp_erp_action_to_running()
511 zfcp_dbf_rec_run("erator1", erp_action); in zfcp_erp_action_to_running()
524 if (req && req->erp_action == act) { in zfcp_erp_strategy_check_fsfreq()
529 req->erp_action = NULL; in zfcp_erp_strategy_check_fsfreq()
545 void zfcp_erp_notify(struct zfcp_erp_action *erp_action, unsigned long set_mask) in zfcp_erp_notify() argument
547 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_notify()
551 if (zfcp_erp_action_exists(erp_action) == ZFCP_ERP_ACTION_RUNNING) { in zfcp_erp_notify()
552 erp_action->status |= set_mask; in zfcp_erp_notify()
553 zfcp_erp_action_ready(erp_action); in zfcp_erp_notify()
573 static void zfcp_erp_strategy_memwait(struct zfcp_erp_action *erp_action) in zfcp_erp_strategy_memwait() argument
575 init_timer(&erp_action->timer); in zfcp_erp_strategy_memwait()
576 erp_action->timer.function = zfcp_erp_memwait_handler; in zfcp_erp_strategy_memwait()
577 erp_action->timer.data = (unsigned long) erp_action; in zfcp_erp_strategy_memwait()
578 erp_action->timer.expires = jiffies + HZ; in zfcp_erp_strategy_memwait()
579 add_timer(&erp_action->timer); in zfcp_erp_strategy_memwait()
662 static int zfcp_erp_adapter_strat_fsf_xconf(struct zfcp_erp_action *erp_action) in zfcp_erp_adapter_strat_fsf_xconf() argument
666 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_adapter_strat_fsf_xconf()
674 zfcp_erp_action_to_running(erp_action); in zfcp_erp_adapter_strat_fsf_xconf()
676 if (zfcp_fsf_exchange_config_data(erp_action)) { in zfcp_erp_adapter_strat_fsf_xconf()
684 if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) in zfcp_erp_adapter_strat_fsf_xconf()
824 static int zfcp_erp_port_forced_strategy(struct zfcp_erp_action *erp_action) in zfcp_erp_port_forced_strategy() argument
826 struct zfcp_port *port = erp_action->port; in zfcp_erp_port_forced_strategy()
829 switch (erp_action->step) { in zfcp_erp_port_forced_strategy()
833 return zfcp_erp_port_forced_strategy_close(erp_action); in zfcp_erp_port_forced_strategy()
844 static int zfcp_erp_port_strategy_close(struct zfcp_erp_action *erp_action) in zfcp_erp_port_strategy_close() argument
848 retval = zfcp_fsf_close_port(erp_action); in zfcp_erp_port_strategy_close()
851 erp_action->step = ZFCP_ERP_STEP_PORT_CLOSING; in zfcp_erp_port_strategy_close()
857 static int zfcp_erp_port_strategy_open_port(struct zfcp_erp_action *erp_action) in zfcp_erp_port_strategy_open_port() argument
861 retval = zfcp_fsf_open_port(erp_action); in zfcp_erp_port_strategy_open_port()
864 erp_action->step = ZFCP_ERP_STEP_PORT_OPENING; in zfcp_erp_port_strategy_open_port()
919 static int zfcp_erp_port_strategy(struct zfcp_erp_action *erp_action) in zfcp_erp_port_strategy() argument
921 struct zfcp_port *port = erp_action->port; in zfcp_erp_port_strategy()
928 switch (erp_action->step) { in zfcp_erp_port_strategy()
931 return zfcp_erp_port_strategy_close(erp_action); in zfcp_erp_port_strategy()
941 if (erp_action->status & ZFCP_STATUS_ERP_CLOSE_ONLY) in zfcp_erp_port_strategy()
944 return zfcp_erp_port_strategy_open_common(erp_action); in zfcp_erp_port_strategy()
955 static int zfcp_erp_lun_strategy_close(struct zfcp_erp_action *erp_action) in zfcp_erp_lun_strategy_close() argument
957 int retval = zfcp_fsf_close_lun(erp_action); in zfcp_erp_lun_strategy_close()
960 erp_action->step = ZFCP_ERP_STEP_LUN_CLOSING; in zfcp_erp_lun_strategy_close()
966 static int zfcp_erp_lun_strategy_open(struct zfcp_erp_action *erp_action) in zfcp_erp_lun_strategy_open() argument
968 int retval = zfcp_fsf_open_lun(erp_action); in zfcp_erp_lun_strategy_open()
971 erp_action->step = ZFCP_ERP_STEP_LUN_OPENING; in zfcp_erp_lun_strategy_open()
977 static int zfcp_erp_lun_strategy(struct zfcp_erp_action *erp_action) in zfcp_erp_lun_strategy() argument
979 struct scsi_device *sdev = erp_action->sdev; in zfcp_erp_lun_strategy()
982 switch (erp_action->step) { in zfcp_erp_lun_strategy()
986 return zfcp_erp_lun_strategy_close(erp_action); in zfcp_erp_lun_strategy()
991 if (erp_action->status & ZFCP_STATUS_ERP_CLOSE_ONLY) in zfcp_erp_lun_strategy()
993 return zfcp_erp_lun_strategy_open(erp_action); in zfcp_erp_lun_strategy()
1091 static int zfcp_erp_strategy_check_target(struct zfcp_erp_action *erp_action, in zfcp_erp_strategy_check_target() argument
1094 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_strategy_check_target()
1095 struct zfcp_port *port = erp_action->port; in zfcp_erp_strategy_check_target()
1096 struct scsi_device *sdev = erp_action->sdev; in zfcp_erp_strategy_check_target()
1098 switch (erp_action->action) { in zfcp_erp_strategy_check_target()
1173 static void zfcp_erp_action_dequeue(struct zfcp_erp_action *erp_action) in zfcp_erp_action_dequeue() argument
1175 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_action_dequeue()
1179 if (erp_action->status & ZFCP_STATUS_ERP_LOWMEM) { in zfcp_erp_action_dequeue()
1181 erp_action->status &= ~ZFCP_STATUS_ERP_LOWMEM; in zfcp_erp_action_dequeue()
1184 list_del(&erp_action->list); in zfcp_erp_action_dequeue()
1185 zfcp_dbf_rec_run("eractd1", erp_action); in zfcp_erp_action_dequeue()
1187 switch (erp_action->action) { in zfcp_erp_action_dequeue()
1189 zfcp_sdev = sdev_to_zfcp(erp_action->sdev); in zfcp_erp_action_dequeue()
1197 &erp_action->port->status); in zfcp_erp_action_dequeue()
1202 &erp_action->adapter->status); in zfcp_erp_action_dequeue()
1240 static int zfcp_erp_strategy_do_action(struct zfcp_erp_action *erp_action) in zfcp_erp_strategy_do_action() argument
1242 switch (erp_action->action) { in zfcp_erp_strategy_do_action()
1244 return zfcp_erp_adapter_strategy(erp_action); in zfcp_erp_strategy_do_action()
1246 return zfcp_erp_port_forced_strategy(erp_action); in zfcp_erp_strategy_do_action()
1248 return zfcp_erp_port_strategy(erp_action); in zfcp_erp_strategy_do_action()
1250 return zfcp_erp_lun_strategy(erp_action); in zfcp_erp_strategy_do_action()
1255 static int zfcp_erp_strategy(struct zfcp_erp_action *erp_action) in zfcp_erp_strategy() argument
1259 struct zfcp_adapter *adapter = erp_action->adapter; in zfcp_erp_strategy()
1264 zfcp_erp_strategy_check_fsfreq(erp_action); in zfcp_erp_strategy()
1266 if (erp_action->status & ZFCP_STATUS_ERP_DISMISSED) { in zfcp_erp_strategy()
1267 zfcp_erp_action_dequeue(erp_action); in zfcp_erp_strategy()
1272 if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) { in zfcp_erp_strategy()
1277 zfcp_erp_action_to_running(erp_action); in zfcp_erp_strategy()
1281 retval = zfcp_erp_strategy_do_action(erp_action); in zfcp_erp_strategy()
1284 if (erp_action->status & ZFCP_STATUS_ERP_DISMISSED) in zfcp_erp_strategy()
1289 if (!(erp_action->status & ZFCP_STATUS_ERP_LOWMEM)) { in zfcp_erp_strategy()
1291 erp_action->status |= ZFCP_STATUS_ERP_LOWMEM; in zfcp_erp_strategy()
1296 zfcp_erp_strategy_memwait(erp_action); in zfcp_erp_strategy()
1302 if (erp_action->status & ZFCP_STATUS_ERP_LOWMEM) { in zfcp_erp_strategy()
1304 erp_action->status &= ~ZFCP_STATUS_ERP_LOWMEM; in zfcp_erp_strategy()
1310 retval = zfcp_erp_strategy_check_target(erp_action, retval); in zfcp_erp_strategy()
1311 zfcp_erp_action_dequeue(erp_action); in zfcp_erp_strategy()
1312 retval = zfcp_erp_strategy_statechange(erp_action, retval); in zfcp_erp_strategy()
1316 zfcp_erp_strategy_followup_success(erp_action); in zfcp_erp_strategy()
1318 zfcp_erp_strategy_followup_failed(erp_action); in zfcp_erp_strategy()
1324 zfcp_erp_action_cleanup(erp_action, retval); in zfcp_erp_strategy()