Commit 9704154f authored by Steffen Maier's avatar Steffen Maier Committed by Martin K. Petersen

scsi: zfcp: drop duplicate seq_no from zfcp_fsf_req which is also in QTCB header

There is no point for double bookkeeping especially just for tracing.  The
trace can take it from the QTCB which always exists for non-SRB responses
traced with zfcp_dbf_hba_fsf_res().

As a side effect, this removes an alignment hole and reduces the size of
struct zfcp_fsf_req, and thus of each pending request, by 8 bytes.

Before:
$ pahole -C zfcp_fsf_req drivers/s390/scsi/zfcp.ko
...
	struct fsf_qtcb *          qtcb;                 /*   144     8 */
	u32                        seq_no;               /*   152     4 */
	/* XXX 4 bytes hole, try to pack */
	void *                     data;                 /*   160     8 */
...
	/* size: 296, cachelines: 2, members: 14 */
	/* sum members: 288, holes: 2, sum holes: 8 */
	/* last cacheline: 40 bytes */
After:
$ pahole -C zfcp_fsf_req drivers/s390/scsi/zfcp.ko
...
	struct fsf_qtcb *          qtcb;                 /*   144     8 */
	void *                     data;                 /*   152     8 */
...
	/* size: 288, cachelines: 2, members: 13 */
        /* sum members: 284, holes: 1, sum holes: 4 */
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>
parent f9eca022
...@@ -82,7 +82,7 @@ void zfcp_dbf_hba_fsf_res(char *tag, int level, struct zfcp_fsf_req *req) ...@@ -82,7 +82,7 @@ void zfcp_dbf_hba_fsf_res(char *tag, int level, struct zfcp_fsf_req *req)
rec->fsf_req_id = req->req_id; rec->fsf_req_id = req->req_id;
rec->fsf_req_status = req->status; rec->fsf_req_status = req->status;
rec->fsf_cmd = q_head->fsf_command; rec->fsf_cmd = q_head->fsf_command;
rec->fsf_seq_no = req->seq_no; rec->fsf_seq_no = q_pref->req_seq_no;
rec->u.res.req_issued = req->issued; rec->u.res.req_issued = req->issued;
rec->u.res.prot_status = q_pref->prot_status; rec->u.res.prot_status = q_pref->prot_status;
rec->u.res.fsf_status = q_head->fsf_status; rec->u.res.fsf_status = q_head->fsf_status;
......
...@@ -278,7 +278,6 @@ static inline u64 zfcp_scsi_dev_lun(struct scsi_device *sdev) ...@@ -278,7 +278,6 @@ static inline u64 zfcp_scsi_dev_lun(struct scsi_device *sdev)
* @completion: used to signal the completion of the request * @completion: used to signal the completion of the request
* @status: status of the request * @status: status of the request
* @qtcb: associated QTCB * @qtcb: associated QTCB
* @seq_no: sequence number of this request
* @data: private data * @data: private data
* @timer: timer data of this request * @timer: timer data of this request
* @erp_action: reference to erp action if request issued on behalf of ERP * @erp_action: reference to erp action if request issued on behalf of ERP
...@@ -294,7 +293,6 @@ struct zfcp_fsf_req { ...@@ -294,7 +293,6 @@ struct zfcp_fsf_req {
struct completion completion; struct completion completion;
u32 status; u32 status;
struct fsf_qtcb *qtcb; struct fsf_qtcb *qtcb;
u32 seq_no;
void *data; void *data;
struct timer_list timer; struct timer_list timer;
struct zfcp_erp_action *erp_action; struct zfcp_erp_action *erp_action;
......
...@@ -724,7 +724,6 @@ static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_qdio *qdio, ...@@ -724,7 +724,6 @@ static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_qdio *qdio,
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
} }
req->seq_no = adapter->fsf_req_seq_no;
req->qtcb->prefix.req_seq_no = adapter->fsf_req_seq_no; req->qtcb->prefix.req_seq_no = adapter->fsf_req_seq_no;
req->qtcb->prefix.req_id = req->req_id; req->qtcb->prefix.req_id = req->req_id;
req->qtcb->prefix.ulp_info = 26; req->qtcb->prefix.ulp_info = 26;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment