|
@@ -1377,6 +1377,20 @@ int dasd_term_IO(struct dasd_ccw_req *cqr)
|
|
|
"I/O error, retry");
|
|
|
break;
|
|
|
case -EINVAL:
|
|
|
+ /*
|
|
|
+ * device not valid so no I/O could be running
|
|
|
+ * handle CQR as termination successful
|
|
|
+ */
|
|
|
+ cqr->status = DASD_CQR_CLEARED;
|
|
|
+ cqr->stopclk = get_tod_clock();
|
|
|
+ cqr->starttime = 0;
|
|
|
+ /* no retries for invalid devices */
|
|
|
+ cqr->retries = -1;
|
|
|
+ DBF_DEV_EVENT(DBF_ERR, device, "%s",
|
|
|
+ "EINVAL, handle as terminated");
|
|
|
+ /* fake rc to success */
|
|
|
+ rc = 0;
|
|
|
+ break;
|
|
|
case -EBUSY:
|
|
|
DBF_DEV_EVENT(DBF_ERR, device, "%s",
|
|
|
"device busy, retry later");
|