aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Weinhuber <wein@de.ibm.com>2013-08-27 07:52:17 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-08-28 03:19:34 -0400
commitfbd70035fb2b03deb346052084794bc1d0e25aa2 (patch)
treee6c5c8f0cebfd1737b5ae2f0203827975c1cf0e0
parent0628a5fbe1b5af35ef5346443ff1056e257a7350 (diff)
s390/dasd: fix statistics for recovered requests
When a recovery cqr is cleaned up, copy the start time, stop time, and start device to the original cqr. These times are needed later when the original request is finalized and counted in the DASD statistics. Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--drivers/s390/block/dasd_erp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/s390/block/dasd_erp.c b/drivers/s390/block/dasd_erp.c
index ba99b64e2b3f..e1e88486b2b4 100644
--- a/drivers/s390/block/dasd_erp.c
+++ b/drivers/s390/block/dasd_erp.c
@@ -124,10 +124,15 @@ dasd_default_erp_action(struct dasd_ccw_req *cqr)
124struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *cqr) 124struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *cqr)
125{ 125{
126 int success; 126 int success;
127 unsigned long long startclk, stopclk;
128 struct dasd_device *startdev;
127 129
128 BUG_ON(cqr->refers == NULL || cqr->function == NULL); 130 BUG_ON(cqr->refers == NULL || cqr->function == NULL);
129 131
130 success = cqr->status == DASD_CQR_DONE; 132 success = cqr->status == DASD_CQR_DONE;
133 startclk = cqr->startclk;
134 stopclk = cqr->stopclk;
135 startdev = cqr->startdev;
131 136
132 /* free all ERPs - but NOT the original cqr */ 137 /* free all ERPs - but NOT the original cqr */
133 while (cqr->refers != NULL) { 138 while (cqr->refers != NULL) {
@@ -142,6 +147,9 @@ struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *cqr)
142 } 147 }
143 148
144 /* set corresponding status to original cqr */ 149 /* set corresponding status to original cqr */
150 cqr->startclk = startclk;
151 cqr->stopclk = stopclk;
152 cqr->startdev = startdev;
145 if (success) 153 if (success)
146 cqr->status = DASD_CQR_DONE; 154 cqr->status = DASD_CQR_DONE;
147 else { 155 else {