• Steffen Maier's avatar
    scsi: zfcp: drop duplicate fsf_command from zfcp_fsf_req which is also in QTCB header · f9eca022
    Steffen Maier authored
    Status read buffers (SRBs, unsolicited notifications) never use a QTCB
    [zfcp_fsf_req_create()]. zfcp_fsf_req_send() already uses this to
    distinguish SRBs from other FSF request types. We can re-use this method in
    zfcp_fsf_req_complete(). Introduce a helper function to make the check for
    req->qtcb less magic.
    
    SRBs always are FSF_QTCB_UNSOLICITED_STATUS, so we can hard-code this for
    the two trace functions dealing with SRBs.
    
    All other FSF request types have a QTCB and we can get the fsf_command from
    there.
    
    zfcp_dbf_hba_fsf_response() and thus zfcp_dbf_hba_fsf_res() are only called
    for non-SRB requests so it's safe to dereference the QTCB
    [zfcp_fsf_req_complete() returns early on SRB, else calls
    zfcp_fsf_protstatus_eval() which calls zfcp_dbf_hba_fsf_response()].  In
    zfcp_scsi_forget_cmnd() we guard the QTCB dereference with a preceding NULL
    check and rely on boolean shortcut evaluation.
    
    As a side effect, this causes an alignment hole which we can close in
    a later patch after having cleaned up all fields of struct zfcp_fsf_req.
    Before:
    $ pahole -C zfcp_fsf_req drivers/s390/scsi/zfcp.ko
    ...
    	u32                        status;               /*   136     4 */
    	u32                        fsf_command;          /*   140     4 */
    	struct fsf_qtcb *          qtcb;                 /*   144     8 */
    ...
    After:
    $ pahole -C zfcp_fsf_req drivers/s390/scsi/zfcp.ko
    ...
    	u32                        status;               /*   136     4 */
    	/* XXX 4 bytes hole, try to pack */
    	struct fsf_qtcb *          qtcb;                 /*   144     8 */
    ...
    Signed-off-by: default avatarSteffen Maier <maier@linux.ibm.com>
    Reviewed-by: default avatarBenjamin Block <bblock@linux.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    f9eca022
zfcp_scsi.c 24.8 KB