s390/dasd: fix statistics for recovered requests
authorStefan Weinhuber <wein@de.ibm.com>
Tue, 27 Aug 2013 11:52:17 +0000 (13:52 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 28 Aug 2013 07:19:34 +0000 (09:19 +0200)
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>
drivers/s390/block/dasd_erp.c

index ba99b64e2b3f0fea3b5c04c15b66bcd4f2d5ea3c..e1e88486b2b407d083a3fb5facd5901e1811aaa8 100644 (file)
@@ -124,10 +124,15 @@ dasd_default_erp_action(struct dasd_ccw_req *cqr)
 struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *cqr)
 {
        int success;
+       unsigned long long startclk, stopclk;
+       struct dasd_device *startdev;
 
        BUG_ON(cqr->refers == NULL || cqr->function == NULL);
 
        success = cqr->status == DASD_CQR_DONE;
+       startclk = cqr->startclk;
+       stopclk = cqr->stopclk;
+       startdev = cqr->startdev;
 
        /* free all ERPs - but NOT the original cqr */
        while (cqr->refers != NULL) {
@@ -142,6 +147,9 @@ struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *cqr)
        }
 
        /* set corresponding status to original cqr */
+       cqr->startclk = startclk;
+       cqr->stopclk = stopclk;
+       cqr->startdev = startdev;
        if (success)
                cqr->status = DASD_CQR_DONE;
        else {