summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Höppner <hoeppner@linux.ibm.com>2019-10-01 11:34:38 -0400
committerJens Axboe <axboe@kernel.dk>2019-10-01 11:53:36 -0400
commitdd45483981ac62f432e073fea6e5e11200b9070d (patch)
tree8ea02a1799b714c97526e96c9e69a50feeb5d053
parentbdf200731145f07a6127cb16753e2e8fdc159cf4 (diff)
s390/dasd: Fix error handling during online processing
It is possible that the CCW commands for reading volume and extent pool information are not supported, either by the storage server (for dedicated DASDs) or by z/VM (for virtual devices, such as MDISKs). As a command reject will occur in such a case, the current error handling leads to a failing online processing and thus the DASD can't be used at all. Since the data being read is not essential for an fully operational DASD, the error handling can be removed. Information about the failing command is sent to the s390dbf debug feature. Fixes: c729696bcf8b ("s390/dasd: Recognise data for ESE volumes") Cc: <stable@vger.kernel.org> # 5.3 Reported-by: Frank Heimes <frank.heimes@canonical.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com> Signed-off-by: Stefan Haberland <sth@linux.ibm.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/s390/block/dasd_eckd.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index fc53e1e221f0..b213c40d1a51 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -1553,8 +1553,8 @@ static int dasd_eckd_read_vol_info(struct dasd_device *device)
1553 if (rc == 0) { 1553 if (rc == 0) {
1554 memcpy(&private->vsq, vsq, sizeof(*vsq)); 1554 memcpy(&private->vsq, vsq, sizeof(*vsq));
1555 } else { 1555 } else {
1556 dev_warn(&device->cdev->dev, 1556 DBF_EVENT_DEVID(DBF_WARNING, device->cdev,
1557 "Reading the volume storage information failed with rc=%d\n", rc); 1557 "Reading the volume storage information failed with rc=%d", rc);
1558 } 1558 }
1559 1559
1560 if (useglobal) 1560 if (useglobal)
@@ -1737,8 +1737,8 @@ static int dasd_eckd_read_ext_pool_info(struct dasd_device *device)
1737 if (rc == 0) { 1737 if (rc == 0) {
1738 dasd_eckd_cpy_ext_pool_data(device, lcq); 1738 dasd_eckd_cpy_ext_pool_data(device, lcq);
1739 } else { 1739 } else {
1740 dev_warn(&device->cdev->dev, 1740 DBF_EVENT_DEVID(DBF_WARNING, device->cdev,
1741 "Reading the logical configuration failed with rc=%d\n", rc); 1741 "Reading the logical configuration failed with rc=%d", rc);
1742 } 1742 }
1743 1743
1744 dasd_sfree_request(cqr, cqr->memdev); 1744 dasd_sfree_request(cqr, cqr->memdev);
@@ -2020,14 +2020,10 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
2020 dasd_eckd_read_features(device); 2020 dasd_eckd_read_features(device);
2021 2021
2022 /* Read Volume Information */ 2022 /* Read Volume Information */
2023 rc = dasd_eckd_read_vol_info(device); 2023 dasd_eckd_read_vol_info(device);
2024 if (rc)
2025 goto out_err3;
2026 2024
2027 /* Read Extent Pool Information */ 2025 /* Read Extent Pool Information */
2028 rc = dasd_eckd_read_ext_pool_info(device); 2026 dasd_eckd_read_ext_pool_info(device);
2029 if (rc)
2030 goto out_err3;
2031 2027
2032 /* Read Device Characteristics */ 2028 /* Read Device Characteristics */
2033 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC, 2029 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC,
@@ -5663,14 +5659,10 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
5663 dasd_eckd_read_features(device); 5659 dasd_eckd_read_features(device);
5664 5660
5665 /* Read Volume Information */ 5661 /* Read Volume Information */
5666 rc = dasd_eckd_read_vol_info(device); 5662 dasd_eckd_read_vol_info(device);
5667 if (rc)
5668 goto out_err2;
5669 5663
5670 /* Read Extent Pool Information */ 5664 /* Read Extent Pool Information */
5671 rc = dasd_eckd_read_ext_pool_info(device); 5665 dasd_eckd_read_ext_pool_info(device);
5672 if (rc)
5673 goto out_err2;
5674 5666
5675 /* Read Device Characteristics */ 5667 /* Read Device Characteristics */
5676 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC, 5668 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC,