aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.ibm.com>2018-06-04 13:39:38 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-06-12 09:14:30 -0400
commit61d388321032be9097935bbc5efdd6ac42691ed4 (patch)
tree7002e4bc19b6f47ac2e5f14c2837716c41b52e5e
parentd8a72d414baf217a2eea9c73f3aac11052161015 (diff)
s390/dasd: reshuffle struct dasd_ccw_req
Move some members of struct dasd_ccw_req to get rid of padding bytes. This saves 16 bytes per dasd request. Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Reviewed-by: Stefan Haberland <sth@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--drivers/s390/block/dasd_int.h14
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index 885e7416c368..55bcbbed1b1d 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -158,41 +158,33 @@ do { \
158 158
159struct dasd_ccw_req { 159struct dasd_ccw_req {
160 unsigned int magic; /* Eye catcher */ 160 unsigned int magic; /* Eye catcher */
161 int intrc; /* internal error, e.g. from start_IO */
161 struct list_head devlist; /* for dasd_device request queue */ 162 struct list_head devlist; /* for dasd_device request queue */
162 struct list_head blocklist; /* for dasd_block request queue */ 163 struct list_head blocklist; /* for dasd_block request queue */
163
164 /* Where to execute what... */
165 struct dasd_block *block; /* the originating block device */ 164 struct dasd_block *block; /* the originating block device */
166 struct dasd_device *memdev; /* the device used to allocate this */ 165 struct dasd_device *memdev; /* the device used to allocate this */
167 struct dasd_device *startdev; /* device the request is started on */ 166 struct dasd_device *startdev; /* device the request is started on */
168 struct dasd_device *basedev; /* base device if no block->base */ 167 struct dasd_device *basedev; /* base device if no block->base */
169 void *cpaddr; /* address of ccw or tcw */ 168 void *cpaddr; /* address of ccw or tcw */
169 short retries; /* A retry counter */
170 unsigned char cpmode; /* 0 = cmd mode, 1 = itcw */ 170 unsigned char cpmode; /* 0 = cmd mode, 1 = itcw */
171 char status; /* status of this request */ 171 char status; /* status of this request */
172 short retries; /* A retry counter */ 172 char lpm; /* logical path mask */
173 unsigned long flags; /* flags of this request */ 173 unsigned long flags; /* flags of this request */
174 struct dasd_queue *dq; 174 struct dasd_queue *dq;
175
176 /* ... and how */
177 unsigned long starttime; /* jiffies time of request start */ 175 unsigned long starttime; /* jiffies time of request start */
178 unsigned long expires; /* expiration period in jiffies */ 176 unsigned long expires; /* expiration period in jiffies */
179 char lpm; /* logical path mask */
180 void *data; /* pointer to data area */ 177 void *data; /* pointer to data area */
181
182 /* these are important for recovering erroneous requests */
183 int intrc; /* internal error, e.g. from start_IO */
184 struct irb irb; /* device status in case of an error */ 178 struct irb irb; /* device status in case of an error */
185 struct dasd_ccw_req *refers; /* ERP-chain queueing. */ 179 struct dasd_ccw_req *refers; /* ERP-chain queueing. */
186 void *function; /* originating ERP action */ 180 void *function; /* originating ERP action */
187 void *mem_chunk; 181 void *mem_chunk;
188 182
189 /* these are for statistics only */
190 unsigned long buildclk; /* TOD-clock of request generation */ 183 unsigned long buildclk; /* TOD-clock of request generation */
191 unsigned long startclk; /* TOD-clock of request start */ 184 unsigned long startclk; /* TOD-clock of request start */
192 unsigned long stopclk; /* TOD-clock of request interrupt */ 185 unsigned long stopclk; /* TOD-clock of request interrupt */
193 unsigned long endclk; /* TOD-clock of request termination */ 186 unsigned long endclk; /* TOD-clock of request termination */
194 187
195 /* Callback that is called after reaching final status. */
196 void (*callback)(struct dasd_ccw_req *, void *data); 188 void (*callback)(struct dasd_ccw_req *, void *data);
197 void *callback_data; 189 void *callback_data;
198}; 190};