aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/block/dasd.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index a5ed35d0cbf3..57fd66357b95 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -2166,18 +2166,22 @@ static int _dasd_sleep_on(struct dasd_ccw_req *maincqr, int interruptible)
2166 cqr->intrc = -ENOLINK; 2166 cqr->intrc = -ENOLINK;
2167 continue; 2167 continue;
2168 } 2168 }
2169 /* Don't try to start requests if device is stopped */ 2169 /*
2170 if (interruptible) { 2170 * Don't try to start requests if device is stopped
2171 rc = wait_event_interruptible( 2171 * except path verification requests
2172 generic_waitq, !(device->stopped)); 2172 */
2173 if (rc == -ERESTARTSYS) { 2173 if (!test_bit(DASD_CQR_VERIFY_PATH, &cqr->flags)) {
2174 cqr->status = DASD_CQR_FAILED; 2174 if (interruptible) {
2175 maincqr->intrc = rc; 2175 rc = wait_event_interruptible(
2176 continue; 2176 generic_waitq, !(device->stopped));
2177 } 2177 if (rc == -ERESTARTSYS) {
2178 } else 2178 cqr->status = DASD_CQR_FAILED;
2179 wait_event(generic_waitq, !(device->stopped)); 2179 maincqr->intrc = rc;
2180 2180 continue;
2181 }
2182 } else
2183 wait_event(generic_waitq, !(device->stopped));
2184 }
2181 if (!cqr->callback) 2185 if (!cqr->callback)
2182 cqr->callback = dasd_wakeup_cb; 2186 cqr->callback = dasd_wakeup_cb;
2183 2187