]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/s390/block/dasd.c
s390/dasd: Fail all requests when DASD_FLAG_ABORTIO is set
[karo-tx-linux.git] / drivers / s390 / block / dasd.c
index 54f4bb8060c121a8154364a82bf1cb9d764968fe..17150a77898433c27e58b2a8ac9ccb81bd228ddb 100644 (file)
@@ -38,9 +38,6 @@
  */
 #define DASD_CHANQ_MAX_SIZE 4
 
-#define DASD_SLEEPON_START_TAG (void *) 1
-#define DASD_SLEEPON_END_TAG   (void *) 2
-
 /*
  * SECTION: exported variables of dasd.c
  */
@@ -2535,6 +2532,16 @@ static void __dasd_process_request_queue(struct dasd_block *block)
                        __blk_end_request_all(req, -EIO);
                        continue;
                }
+               if (test_bit(DASD_FLAG_ABORTALL, &basedev->flags) &&
+                   (basedev->features & DASD_FEATURE_FAILFAST ||
+                    blk_noretry_request(req))) {
+                       DBF_DEV_EVENT(DBF_ERR, basedev,
+                                     "Rejecting failfast request %p",
+                                     req);
+                       blk_start_request(req);
+                       __blk_end_request_all(req, -ETIMEDOUT);
+                       continue;
+               }
                cqr = basedev->discipline->build_cp(basedev, block, req);
                if (IS_ERR(cqr)) {
                        if (PTR_ERR(cqr) == -EBUSY)