By - rearranging the elements of the scsi_pointer - shrinking and moving the eh_eflags element - turning sc_data_direction into an unsigned char - moving tag we achieve a size reduction in scsi_cmnd of 376 to 352 bytes on x86-64 and from 272 to 260 bytes on i386. Signed-off-by: Matthew Wilcox <willy@xxxxxxxxxxxxxxx> --- include/scsi/scsi_cmnd.h | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 047ffe6..04fe0d8 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h @@ -13,22 +13,21 @@ struct Scsi_Host; struct scsi_device; struct scsi_data_buffer { + struct scatterlist* sglist; unsigned length; int resid; unsigned short sg_count; unsigned short alloc_sg_count; - struct scatterlist* sglist; }; /* embedded in scsi_cmnd */ struct scsi_pointer { char *ptr; /* data pointer */ - int this_residual; /* left in this buffer */ struct scatterlist *buffer; /* which buffer */ + dma_addr_t dma_handle; + int this_residual; /* left in this buffer */ int buffers_residual; /* how many buffers left */ - dma_addr_t dma_handle; - volatile int Status; volatile int Message; volatile int have_data_in; @@ -40,7 +39,6 @@ struct scsi_cmnd { struct scsi_device *device; struct list_head list; /* scsi_cmnd participates in queue lists */ struct list_head eh_entry; /* entry for the host eh_cmd_q */ - int eh_eflags; /* Used by error handlr */ /* * A SCSI Command is assigned a nonzero serial_number before passed @@ -64,7 +62,9 @@ struct scsi_cmnd { int timeout_per_command; unsigned char cmd_len; - enum dma_data_direction sc_data_direction; + unsigned char eh_eflags; /* Used by error handler */ + unsigned char sc_data_direction; /* enum dma_data_direction */ + unsigned char tag; /* SCSI-II queued command tag */ /* These elements define the operation we are about to perform */ #define MAX_COMMAND_SIZE 16 @@ -82,8 +82,7 @@ struct scsi_cmnd { reconnects. Probably == sector size */ - struct request *request; /* The command we are - working on */ + struct request *request; /* The command we are working on */ #define SCSI_SENSE_BUFFERSIZE 96 unsigned char sense_buffer[SCSI_SENSE_BUFFERSIZE]; @@ -111,8 +110,6 @@ struct scsi_cmnd { int result; /* Status code from lower level driver */ - unsigned char tag; /* SCSI-II queued command tag */ - union { struct scsi_data_buffer sdb; /* @@ -121,11 +118,11 @@ struct scsi_cmnd { * of struct scsi_data_buffer members. */ struct { + void __deprecated *request_buffer; unsigned __deprecated request_bufflen; int __deprecated resid; unsigned short __deprecated use_sg; unsigned short __deprecated place_holder_sg_alloc; - void __deprecated *request_buffer; }; }; }; -- 1.4.4.2 - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html