• Steffen Maier's avatar
    scsi: zfcp: fix passing fsf_req to SCSI trace on TMF to correlate with HBA · 9fe5d2b2
    Steffen Maier authored
    Without this fix we get SCSI trace records on task management functions
    which cannot be correlated to HBA trace records because all fields
    related to the FSF request are empty (zero).
    Also, the FCP_RSP_IU is missing as well as any sense data if available.
    
    This was caused by v2.6.14 commit 8a36e453 ("[SCSI] zfcp: enhancement
    of zfcp debug features") introducing trace records for TMFs but
    hard coding NULL for a possibly existing TMF FSF request.
    The scsi_cmnd scribble is also zero or unrelated for the TMF request
    so it also could not lookup a suitable FSF request from there.
    
    A broken example trace record formatted with zfcpdbf from the s390-tools
    package:
    
    Timestamp      : ...
    Area           : SCSI
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1
    Tag            : lr_fail
    Request ID     : 0x0000000000000000
                       ^^^^^^^^^^^^^^^^ no correlation to HBA record
    SCSI ID        : 0x<scsitarget>
    SCSI LUN       : 0x<scsilun>
    SCSI result    : 0x000e0000
    SCSI retries   : 0x00
    SCSI allowed   : 0x05
    SCSI scribble  : 0x0000000000000000
    SCSI opcode    : 2a000017 3bb80000 08000000 00000000
    FCP rsp inf cod: 0x00
                       ^^ no TMF response
    FCP rsp IU     : 00000000 00000000 00000000 00000000
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                     00000000 00000000
                     ^^^^^^^^^^^^^^^^^ no interesting FCP_RSP_IU
    Sense len      : ...
    ^^^^^^^^^^^^^^^^^^^^ no sense data length
    Sense info     : ...
    ^^^^^^^^^^^^^^^^^^^^ no sense data content, even if present
    
    There are some true cases where we really do not have an FSF request:
    "rsl_fai" from zfcp_dbf_scsi_fail_send() called for early
    returns / completions in zfcp_scsi_queuecommand(),
    "abrt_or", "abrt_bl", "abrt_ru", "abrt_ar" from
    zfcp_scsi_eh_abort_handler() where we did not get as far,
    "lr_nres", "tr_nres" from zfcp_task_mgmt_function() where we're
    successful and do not need to do anything because adapter stopped.
    For these cases it's correct to pass NULL for fsf_req to _zfcp_dbf_scsi().
    Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
    Fixes: 8a36e453 ("[SCSI] zfcp: enhancement of zfcp debug features")
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: default avatarBenjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: default avatarBenjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    9fe5d2b2
zfcp_dbf.h 11.3 KB