|
@@ -2166,18 +2166,22 @@ static int _dasd_sleep_on(struct dasd_ccw_req *maincqr, int interruptible)
|
|
|
cqr->intrc = -ENOLINK;
|
|
|
continue;
|
|
|
}
|
|
|
- /* Don't try to start requests if device is stopped */
|
|
|
- if (interruptible) {
|
|
|
- rc = wait_event_interruptible(
|
|
|
- generic_waitq, !(device->stopped));
|
|
|
- if (rc == -ERESTARTSYS) {
|
|
|
- cqr->status = DASD_CQR_FAILED;
|
|
|
- maincqr->intrc = rc;
|
|
|
- continue;
|
|
|
- }
|
|
|
- } else
|
|
|
- wait_event(generic_waitq, !(device->stopped));
|
|
|
-
|
|
|
+ /*
|
|
|
+ * Don't try to start requests if device is stopped
|
|
|
+ * except path verification requests
|
|
|
+ */
|
|
|
+ if (!test_bit(DASD_CQR_VERIFY_PATH, &cqr->flags)) {
|
|
|
+ if (interruptible) {
|
|
|
+ rc = wait_event_interruptible(
|
|
|
+ generic_waitq, !(device->stopped));
|
|
|
+ if (rc == -ERESTARTSYS) {
|
|
|
+ cqr->status = DASD_CQR_FAILED;
|
|
|
+ maincqr->intrc = rc;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ } else
|
|
|
+ wait_event(generic_waitq, !(device->stopped));
|
|
|
+ }
|
|
|
if (!cqr->callback)
|
|
|
cqr->callback = dasd_wakeup_cb;
|
|
|
|