[SCSI] libfc: cache align struct fc_fcp_pkt fields

Re-arrange its fields to avoid padding and have better
cacheline alignments.

Removed not used start_time, end_time and last_pkt_time
fields.

This all reduced this struct size to 448 from 480 and
that also reduced one cacheline on x86_64 beside
eliminating 8 pads. However kept logical fields together.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Vasu Dev
2011-09-27 21:37:57 -07:00
committed by James Bottomley
parent 5c609ff937
commit ed26cfece6
2 changed files with 21 additions and 30 deletions

View File

@ -281,9 +281,6 @@ struct fc_seq_els_data {
* @timer: The command timer
* @tm_done: Completion indicator
* @wait_for_comp: Indicator to wait for completion of the I/O (in jiffies)
* @start_time: Timestamp indicating the start of the I/O (in jiffies)
* @end_time: Timestamp indicating the end of the I/O (in jiffies)
* @last_pkt_time: Timestamp of the last frame received (in jiffies)
* @data_len: The length of the data
* @cdb_cmd: The CDB command
* @xfer_len: The transfer length
@ -304,50 +301,46 @@ struct fc_seq_els_data {
* @recov_seq: The sequence for REC or SRR
*/
struct fc_fcp_pkt {
/* Housekeeping information */
struct fc_lport *lp;
u16 state;
atomic_t ref_cnt;
spinlock_t scsi_pkt_lock;
atomic_t ref_cnt;
/* SCSI command and data transfer information */
u32 data_len;
/* SCSI I/O related information */
struct scsi_cmnd *cmd;
struct list_head list;
/* Timeout related information */
struct timer_list timer;
struct completion tm_done;
int wait_for_comp;
unsigned long start_time;
unsigned long end_time;
unsigned long last_pkt_time;
/* SCSI command and data transfer information */
u32 data_len;
/* Transport related veriables */
struct fcp_cmnd cdb_cmd;
size_t xfer_len;
u16 xfer_ddp;
u32 xfer_contig_end;
u16 max_payload;
/* Housekeeping information */
struct fc_lport *lp;
u8 state;
/* SCSI/FCP return status */
u32 io_status;
u8 cdb_status;
u8 status_code;
u8 scsi_comp_flags;
u32 io_status;
u32 req_flags;
u32 scsi_resid;
/* Transport related veriables */
size_t xfer_len;
struct fcp_cmnd cdb_cmd;
u32 xfer_contig_end;
u16 max_payload;
u16 xfer_ddp;
/* Associated structures */
struct fc_rport *rport;
struct fc_seq *seq_ptr;
/* Error Processing information */
u8 recov_retry;
/* Timeout/error related information */
struct timer_list timer;
int wait_for_comp;
u32 recov_retry;
struct fc_seq *recov_seq;
};
struct completion tm_done;
} ____cacheline_aligned_in_smp;
/*
* Structure and function definitions for managing Fibre Channel Exchanges