Re: [patch 2/2] zfcp: Add FC pass-through support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 07, 2009 at 07:17:58PM -0400, James Smart wrote:
> Christof Schmitt wrote:
> --- a/drivers/s390/scsi/zfcp_fc.c       2009-04-06 17:23:25.000000000 +0200
> +++ b/drivers/s390/scsi/zfcp_fc.c       2009-04-06 17:24:30.000000000 +0200
> ...
>> +static void zfcp_fc_generic_els_handler(unsigned long data)
>> +{
>> +       struct zfcp_els_fc_job *els_fc_job = (struct zfcp_els_fc_job *) data;
>> +       struct fc_bsg_job *job = els_fc_job->job;
>> +       struct fc_bsg_reply *reply = job->reply;
>> +
>> +       if (els_fc_job->els.status) {
>> +               /* request rejected or timed out */
>> +               reply->reply_data.ctels_reply.status = FC_CTELS_STATUS_REJECT;
>> +               goto out;
>> +       }
>> +
>> +       reply->reply_data.ctels_reply.status = FC_CTELS_STATUS_OK;
>> +       reply->reply_payload_rcv_len = blk_rq_bytes(job->req->next_rq);
>
> My intent was to not have the LLDD reference (or even know about) the
> request structures and that bsg exists underneath.
>
> Thus, for the last line above, it should be:
>           reply->reply_payload_rcv_len = job->reply_payload->data_len;
>
> Although, I'm a little surprised that your els interface doesn't supply the
> received data length to you, rather than the global assumption that you 
> sized the reply buffer for exactly what you always get.

I guess this is one thing we have to investigate. Either use the
data_lan or get the data from the hardware.

>> +struct zfcp_ct_fc_job {
>> +       struct zfcp_send_ct ct;
>> +       struct fc_bsg_job *job;
>> +};
>> +
>> +static void zfcp_fc_generic_ct_handler(unsigned long data)
>> +{
>> +       struct zfcp_ct_fc_job *ct_fc_job = (struct zfcp_ct_fc_job *) data;
>> +       struct fc_bsg_job *job = ct_fc_job->job;
>> +
>> +       job->reply->reply_data.ctels_reply.status = ct_fc_job->ct.status ?
>> +                               FC_CTELS_STATUS_REJECT : FC_CTELS_STATUS_OK;
>> +       job->state_flags = FC_RQST_STATE_DONE;
>> +       job->reply->reply_payload_rcv_len = blk_rq_bytes(job->req->next_rq);
>
> same comment as above.
>
>> +       job->job_done(job);
>> +
>> +       zfcp_wka_port_put(ct_fc_job->ct.wka_port);
>> +
>> +       kfree(ct_fc_job);
>> +}
>
> Are you going to add support for the ELS/CT request timing out (e.g. for
> bsg_timeout callback) ?

We don't have an interface to our hardware to abort ELS or CT
requests. I suggested to remove the bsg_timeout callback, since there
is not much zfcp can do here. Any pending request will timeout in the
SAN or in the HBA if there is not response.

> Everything else looks good, and looks like it wasn't much effort to support.
> Great.

Yes, the result looks good.

With 2.6.30-rc1 being out, the next merge window will be for 2.6.31.
Are you going to push the FC passthrough support for 2.6.31?

--
Christof Schmitt
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux