aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd.c
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2013-01-30 04:26:13 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-07-01 11:31:18 -0400
commit1fbdb8be9bfc91efd45720493c7ecae884ae22bd (patch)
tree0862b4abdf089eb5ad613d3470b03d54fed868ca /drivers/s390/block/dasd.c
parent1f1ee9ad6b298400c7a44f860231ac1d3cb7bfd6 (diff)
s390/dasd: process all requests in the device tasklet
Originally the DASD device tasklet would process the entries on the ccw_queue until the first non-final request was found. Which was okay as long as all requests have the same retries and expires parameter. However, as we're now allowing to modify both it is possible to have requests _after_ the first request which already have expired. So we need to check all requests in the device tasklet. Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Stefan Weinhuber <wein@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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 498548980d78..000e5140bda4 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1787,11 +1787,11 @@ static void __dasd_device_process_ccw_queue(struct dasd_device *device,
1787 list_for_each_safe(l, n, &device->ccw_queue) { 1787 list_for_each_safe(l, n, &device->ccw_queue) {
1788 cqr = list_entry(l, struct dasd_ccw_req, devlist); 1788 cqr = list_entry(l, struct dasd_ccw_req, devlist);
1789 1789
1790 /* Stop list processing at the first non-final request. */ 1790 /* Skip any non-final request. */
1791 if (cqr->status == DASD_CQR_QUEUED || 1791 if (cqr->status == DASD_CQR_QUEUED ||
1792 cqr->status == DASD_CQR_IN_IO || 1792 cqr->status == DASD_CQR_IN_IO ||
1793 cqr->status == DASD_CQR_CLEAR_PENDING) 1793 cqr->status == DASD_CQR_CLEAR_PENDING)
1794 break; 1794 continue;
1795 if (cqr->status == DASD_CQR_ERROR) { 1795 if (cqr->status == DASD_CQR_ERROR) {
1796 __dasd_device_recovery(device, cqr); 1796 __dasd_device_recovery(device, cqr);
1797 } 1797 }