diff options
author | Stefan Haberland <stefan.haberland@de.ibm.com> | 2011-10-30 10:16:56 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-10-30 10:16:44 -0400 |
commit | 214b8ffc205bcf2ca5b04b3903be13a9257c3fbd (patch) | |
tree | a5344a72ee114692c7fd179529cc912be5ccc178 /drivers/s390/block/dasd.c | |
parent | 3948a102509f3bc3cc8728b2556a1ad7a4dbd7e7 (diff) |
[S390] dasd: wait for terminated request
After terminating a request in the dasd_sleep_on_immediatly function,
wait for the clear interrupt to be received before starting the
new request. This prevents the requests from getting mixed up.
Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd.c')
-rw-r--r-- | drivers/s390/block/dasd.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 46054c75cf31..3b94b6542fc0 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -2261,7 +2261,11 @@ int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr) | |||
2261 | cqr->callback = dasd_wakeup_cb; | 2261 | cqr->callback = dasd_wakeup_cb; |
2262 | cqr->callback_data = DASD_SLEEPON_START_TAG; | 2262 | cqr->callback_data = DASD_SLEEPON_START_TAG; |
2263 | cqr->status = DASD_CQR_QUEUED; | 2263 | cqr->status = DASD_CQR_QUEUED; |
2264 | list_add(&cqr->devlist, &device->ccw_queue); | 2264 | /* |
2265 | * add new request as second | ||
2266 | * first the terminated cqr needs to be finished | ||
2267 | */ | ||
2268 | list_add(&cqr->devlist, device->ccw_queue.next); | ||
2265 | 2269 | ||
2266 | /* let the bh start the request to keep them in order */ | 2270 | /* let the bh start the request to keep them in order */ |
2267 | dasd_schedule_device_bh(device); | 2271 | dasd_schedule_device_bh(device); |