static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, struct zfcp_port *port, struct zfcp_unit *unit, char *id, void *ref) { int retval = 1, need; struct zfcp_erp_action *act = NULL; if (!adapter->erp_thread) return -EIO; need = zfcp_erp_required_act(want, adapter, port, unit); if (!need) goto out; atomic_set_mask(ZFCP_STATUS_ADAPTER_ERP_PENDING, &adapter->status); act = zfcp_erp_setup_act(need, adapter, port, unit); if (!act) goto out; ++adapter->erp_total_count; list_add_tail(&act->list, &adapter->erp_ready_head); wake_up(&adapter->erp_ready_wq); zfcp_dbf_rec_thread("eracte1", adapter->dbf); retval = 0; out: zfcp_dbf_rec_trigger(id, ref, want, need, act, adapter, port, unit); return retval; }
static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, struct zfcp_port *port, struct scsi_device *sdev, char *id, u32 act_status) { int retval = 1, need; struct zfcp_erp_action *act; if (!adapter->erp_thread) return -EIO; need = zfcp_erp_required_act(want, adapter, port, sdev); if (!need) goto out; act = zfcp_erp_setup_act(need, act_status, adapter, port, sdev); if (!act) goto out; atomic_set_mask(ZFCP_STATUS_ADAPTER_ERP_PENDING, &adapter->status); ++adapter->erp_total_count; list_add_tail(&act->list, &adapter->erp_ready_head); wake_up(&adapter->erp_ready_wq); retval = 0; out: zfcp_dbf_rec_trig(id, adapter, port, sdev, want, need); return retval; }