lkml.org 
[lkml]   [2017]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 009/306] zfcp: fix ELS/GS request&response length for hardware data router
    3.16.40-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Steffen Maier <maier@linux.vnet.ibm.com>

    commit 70369f8e15b220f50a16348c79a61d3f7054813c upstream.

    In the hardware data router case, introduced with kernel 3.2
    commit 86a9668a8d29 ("[SCSI] zfcp: support for hardware data router")
    the ELS/GS request&response length needs to be initialized
    as in the chained SBAL case.

    Otherwise, the FCP channel rejects ELS requests with
    FSF_REQUEST_SIZE_TOO_LARGE.

    Such ELS requests can be issued by user space through BSG / HBA API,
    or zfcp itself uses ADISC ELS for remote port link test on RSCN.
    The latter can cause a short path outage due to
    unnecessary remote target port recovery because the always
    failing ADISC cannot detect extremely short path interruptions
    beyond the local FCP channel.

    Below example is decoded with zfcpdbf from s390-tools:

    Timestamp : ...
    Area : SAN
    Subarea : 00
    Level : 1
    Exception : -
    CPU id : ..
    Caller : zfcp_dbf_san_req+0408
    Record id : 1
    Tag : fssels1
    Request id : 0x<reqid>
    Destination ID : 0x00<target d_id>
    Payload info : 52000000 00000000 <our wwpn > [ADISC]
    <our wwnn > 00<s_id> 00000000
    00000000 00000000 00000000 00000000

    Timestamp : ...
    Area : HBA
    Subarea : 00
    Level : 1
    Exception : -
    CPU id : ..
    Caller : zfcp_dbf_hba_fsf_res+0740
    Record id : 1
    Tag : fs_ferr
    Request id : 0x<reqid>
    Request status : 0x00000010
    FSF cmnd : 0x0000000b [FSF_QTCB_SEND_ELS]
    FSF sequence no: 0x...
    FSF issued : ...
    FSF stat : 0x00000061 [FSF_REQUEST_SIZE_TOO_LARGE]
    FSF stat qual : 00000000 00000000 00000000 00000000
    Prot stat : 0x00000100
    Prot stat qual : 00000000 00000000 00000000 00000000

    Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Fixes: 86a9668a8d29 ("[SCSI] zfcp: support for hardware data router")
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/s390/scsi/zfcp_fsf.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/drivers/s390/scsi/zfcp_fsf.c
    +++ b/drivers/s390/scsi/zfcp_fsf.c
    @@ -984,8 +984,12 @@ static int zfcp_fsf_setup_ct_els_sbals(s
    if (zfcp_adapter_multi_buffer_active(adapter)) {
    if (zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, sg_req))
    return -EIO;
    + qtcb->bottom.support.req_buf_length =
    + zfcp_qdio_real_bytes(sg_req);
    if (zfcp_qdio_sbals_from_sg(qdio, &req->qdio_req, sg_resp))
    return -EIO;
    + qtcb->bottom.support.resp_buf_length =
    + zfcp_qdio_real_bytes(sg_resp);

    zfcp_qdio_set_data_div(qdio, &req->qdio_req,
    zfcp_qdio_sbale_count(sg_req));
    \
     
     \ /
      Last update: 2017-02-16 00:55    [W:3.238 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site