forked from luck/tmp_suning_uos_patched
scsi: fc: provide fc_bsg_to_rport() helper
Provide fc_bsg_to_rport() helper that will become handy when we're moving from struct fc_bsg_job to a plain struct bsg_job. Also move all LLDDs to use the new helper. Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Acked-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
cd21c605b2
commit
1d69b1222a
@ -901,12 +901,13 @@ static struct zfcp_fc_wka_port *zfcp_fc_job_wka_port(struct fc_bsg_job *job)
|
|||||||
u8 gs_type;
|
u8 gs_type;
|
||||||
struct zfcp_adapter *adapter;
|
struct zfcp_adapter *adapter;
|
||||||
struct fc_bsg_request *bsg_request = job->request;
|
struct fc_bsg_request *bsg_request = job->request;
|
||||||
|
struct fc_rport *rport = fc_bsg_to_rport(job);
|
||||||
struct Scsi_Host *shost;
|
struct Scsi_Host *shost;
|
||||||
|
|
||||||
preamble_word1 = bsg_request->rqst_data.r_ct.preamble_word1;
|
preamble_word1 = bsg_request->rqst_data.r_ct.preamble_word1;
|
||||||
gs_type = (preamble_word1 & 0xff000000) >> 24;
|
gs_type = (preamble_word1 & 0xff000000) >> 24;
|
||||||
|
|
||||||
shost = fc_bsg_to_shost(job);
|
shost = rport ? rport_to_shost(rport) : fc_bsg_to_shost(job);
|
||||||
adapter = (struct zfcp_adapter *) shost->hostdata[0];
|
adapter = (struct zfcp_adapter *) shost->hostdata[0];
|
||||||
|
|
||||||
switch (gs_type) {
|
switch (gs_type) {
|
||||||
@ -940,7 +941,7 @@ static int zfcp_fc_exec_els_job(struct fc_bsg_job *job,
|
|||||||
struct zfcp_adapter *adapter)
|
struct zfcp_adapter *adapter)
|
||||||
{
|
{
|
||||||
struct zfcp_fsf_ct_els *els = job->dd_data;
|
struct zfcp_fsf_ct_els *els = job->dd_data;
|
||||||
struct fc_rport *rport = job->rport;
|
struct fc_rport *rport = fc_bsg_to_rport(job);
|
||||||
struct fc_bsg_request *bsg_request = job->request;
|
struct fc_bsg_request *bsg_request = job->request;
|
||||||
struct zfcp_port *port;
|
struct zfcp_port *port;
|
||||||
u32 d_id;
|
u32 d_id;
|
||||||
@ -988,8 +989,9 @@ int zfcp_fc_exec_bsg_job(struct fc_bsg_job *job)
|
|||||||
struct zfcp_adapter *adapter;
|
struct zfcp_adapter *adapter;
|
||||||
struct zfcp_fsf_ct_els *ct_els = job->dd_data;
|
struct zfcp_fsf_ct_els *ct_els = job->dd_data;
|
||||||
struct fc_bsg_request *bsg_request = job->request;
|
struct fc_bsg_request *bsg_request = job->request;
|
||||||
|
struct fc_rport *rport = fc_bsg_to_rport(job);
|
||||||
|
|
||||||
shost = job->rport ? rport_to_shost(job->rport) : fc_bsg_to_shost(job);
|
shost = rport ? rport_to_shost(rport) : fc_bsg_to_shost(job);
|
||||||
adapter = (struct zfcp_adapter *)shost->hostdata[0];
|
adapter = (struct zfcp_adapter *)shost->hostdata[0];
|
||||||
|
|
||||||
if (!(atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_OPEN))
|
if (!(atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_OPEN))
|
||||||
|
@ -1822,7 +1822,7 @@ static int ibmvfc_bsg_plogi(struct ibmvfc_host *vhost, unsigned int port_id)
|
|||||||
static int ibmvfc_bsg_request(struct fc_bsg_job *job)
|
static int ibmvfc_bsg_request(struct fc_bsg_job *job)
|
||||||
{
|
{
|
||||||
struct ibmvfc_host *vhost = shost_priv(fc_bsg_to_shost(job));
|
struct ibmvfc_host *vhost = shost_priv(fc_bsg_to_shost(job));
|
||||||
struct fc_rport *rport = job->rport;
|
struct fc_rport *rport = fc_bsg_to_rport(job);
|
||||||
struct ibmvfc_passthru_mad *mad;
|
struct ibmvfc_passthru_mad *mad;
|
||||||
struct ibmvfc_event *evt;
|
struct ibmvfc_event *evt;
|
||||||
union ibmvfc_iu rsp_iu;
|
union ibmvfc_iu rsp_iu;
|
||||||
|
@ -2103,7 +2103,7 @@ int fc_lport_bsg_request(struct fc_bsg_job *job)
|
|||||||
|
|
||||||
switch (bsg_request->msgcode) {
|
switch (bsg_request->msgcode) {
|
||||||
case FC_BSG_RPT_ELS:
|
case FC_BSG_RPT_ELS:
|
||||||
rport = job->rport;
|
rport = fc_bsg_to_rport(job);
|
||||||
if (!rport)
|
if (!rport)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2113,7 +2113,7 @@ int fc_lport_bsg_request(struct fc_bsg_job *job)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case FC_BSG_RPT_CT:
|
case FC_BSG_RPT_CT:
|
||||||
rport = job->rport;
|
rport = fc_bsg_to_rport(job);
|
||||||
if (!rport)
|
if (!rport)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -386,7 +386,7 @@ lpfc_bsg_send_mgmt_cmd(struct fc_bsg_job *job)
|
|||||||
{
|
{
|
||||||
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
|
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
|
||||||
struct lpfc_hba *phba = vport->phba;
|
struct lpfc_hba *phba = vport->phba;
|
||||||
struct lpfc_rport_data *rdata = job->rport->dd_data;
|
struct lpfc_rport_data *rdata = fc_bsg_to_rport(job)->dd_data;
|
||||||
struct lpfc_nodelist *ndlp = rdata->pnode;
|
struct lpfc_nodelist *ndlp = rdata->pnode;
|
||||||
struct fc_bsg_reply *bsg_reply = job->reply;
|
struct fc_bsg_reply *bsg_reply = job->reply;
|
||||||
struct ulp_bde64 *bpl = NULL;
|
struct ulp_bde64 *bpl = NULL;
|
||||||
@ -660,7 +660,7 @@ lpfc_bsg_rport_els(struct fc_bsg_job *job)
|
|||||||
{
|
{
|
||||||
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
|
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
|
||||||
struct lpfc_hba *phba = vport->phba;
|
struct lpfc_hba *phba = vport->phba;
|
||||||
struct lpfc_rport_data *rdata = job->rport->dd_data;
|
struct lpfc_rport_data *rdata = fc_bsg_to_rport(job)->dd_data;
|
||||||
struct lpfc_nodelist *ndlp = rdata->pnode;
|
struct lpfc_nodelist *ndlp = rdata->pnode;
|
||||||
struct fc_bsg_request *bsg_request = job->request;
|
struct fc_bsg_request *bsg_request = job->request;
|
||||||
struct fc_bsg_reply *bsg_reply = job->reply;
|
struct fc_bsg_reply *bsg_reply = job->reply;
|
||||||
|
@ -264,7 +264,7 @@ qla2x00_process_els(struct fc_bsg_job *bsg_job)
|
|||||||
uint16_t nextlid = 0;
|
uint16_t nextlid = 0;
|
||||||
|
|
||||||
if (bsg_request->msgcode == FC_BSG_RPT_ELS) {
|
if (bsg_request->msgcode == FC_BSG_RPT_ELS) {
|
||||||
rport = bsg_job->rport;
|
rport = fc_bsg_to_rport(bsg_job);
|
||||||
fcport = *(fc_port_t **) rport->dd_data;
|
fcport = *(fc_port_t **) rport->dd_data;
|
||||||
host = rport_to_shost(rport);
|
host = rport_to_shost(rport);
|
||||||
vha = shost_priv(host);
|
vha = shost_priv(host);
|
||||||
@ -2485,7 +2485,7 @@ qla24xx_bsg_request(struct fc_bsg_job *bsg_job)
|
|||||||
bsg_reply->reply_payload_rcv_len = 0;
|
bsg_reply->reply_payload_rcv_len = 0;
|
||||||
|
|
||||||
if (bsg_request->msgcode == FC_BSG_RPT_ELS) {
|
if (bsg_request->msgcode == FC_BSG_RPT_ELS) {
|
||||||
rport = bsg_job->rport;
|
rport = fc_bsg_to_rport(bsg_job);
|
||||||
host = rport_to_shost(rport);
|
host = rport_to_shost(rport);
|
||||||
vha = shost_priv(host);
|
vha = shost_priv(host);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3640,11 +3640,12 @@ fc_bsg_job_timeout(struct request *req)
|
|||||||
{
|
{
|
||||||
struct fc_bsg_job *job = (void *) req->special;
|
struct fc_bsg_job *job = (void *) req->special;
|
||||||
struct Scsi_Host *shost = fc_bsg_to_shost(job);
|
struct Scsi_Host *shost = fc_bsg_to_shost(job);
|
||||||
|
struct fc_rport *rport = fc_bsg_to_rport(job);
|
||||||
struct fc_internal *i = to_fc_internal(shost->transportt);
|
struct fc_internal *i = to_fc_internal(shost->transportt);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int err = 0, done = 0;
|
int err = 0, done = 0;
|
||||||
|
|
||||||
if (job->rport && job->rport->port_state == FC_PORTSTATE_BLOCKED)
|
if (rport && rport->port_state == FC_PORTSTATE_BLOCKED)
|
||||||
return BLK_EH_RESET_TIMER;
|
return BLK_EH_RESET_TIMER;
|
||||||
|
|
||||||
spin_lock_irqsave(&job->job_lock, flags);
|
spin_lock_irqsave(&job->job_lock, flags);
|
||||||
|
@ -824,6 +824,11 @@ static inline struct Scsi_Host *fc_bsg_to_shost(struct fc_bsg_job *job)
|
|||||||
return job->shost;
|
return job->shost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline struct fc_rport *fc_bsg_to_rport(struct fc_bsg_job *job)
|
||||||
|
{
|
||||||
|
return job->rport;
|
||||||
|
}
|
||||||
|
|
||||||
struct scsi_transport_template *fc_attach_transport(
|
struct scsi_transport_template *fc_attach_transport(
|
||||||
struct fc_function_template *);
|
struct fc_function_template *);
|
||||||
void fc_release_transport(struct scsi_transport_template *);
|
void fc_release_transport(struct scsi_transport_template *);
|
||||||
|
Loading…
Reference in New Issue
Block a user