Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Jan Höppner and committed by
Jens Axboe
dd454839 bdf20073

+8 -16
+8 -16
drivers/s390/block/dasd_eckd.c
··· 1553 1553 if (rc == 0) { 1554 1554 memcpy(&private->vsq, vsq, sizeof(*vsq)); 1555 1555 } else { 1556 - dev_warn(&device->cdev->dev, 1557 - "Reading the volume storage information failed with rc=%d\n", rc); 1556 + DBF_EVENT_DEVID(DBF_WARNING, device->cdev, 1557 + "Reading the volume storage information failed with rc=%d", rc); 1558 1558 } 1559 1559 1560 1560 if (useglobal) ··· 1737 1737 if (rc == 0) { 1738 1738 dasd_eckd_cpy_ext_pool_data(device, lcq); 1739 1739 } else { 1740 - dev_warn(&device->cdev->dev, 1741 - "Reading the logical configuration failed with rc=%d\n", rc); 1740 + DBF_EVENT_DEVID(DBF_WARNING, device->cdev, 1741 + "Reading the logical configuration failed with rc=%d", rc); 1742 1742 } 1743 1743 1744 1744 dasd_sfree_request(cqr, cqr->memdev); ··· 2020 2020 dasd_eckd_read_features(device); 2021 2021 2022 2022 /* Read Volume Information */ 2023 - rc = dasd_eckd_read_vol_info(device); 2024 - if (rc) 2025 - goto out_err3; 2023 + dasd_eckd_read_vol_info(device); 2026 2024 2027 2025 /* Read Extent Pool Information */ 2028 - rc = dasd_eckd_read_ext_pool_info(device); 2029 - if (rc) 2030 - goto out_err3; 2026 + dasd_eckd_read_ext_pool_info(device); 2031 2027 2032 2028 /* Read Device Characteristics */ 2033 2029 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC, ··· 5659 5663 dasd_eckd_read_features(device); 5660 5664 5661 5665 /* Read Volume Information */ 5662 - rc = dasd_eckd_read_vol_info(device); 5663 - if (rc) 5664 - goto out_err2; 5666 + dasd_eckd_read_vol_info(device); 5665 5667 5666 5668 /* Read Extent Pool Information */ 5667 - rc = dasd_eckd_read_ext_pool_info(device); 5668 - if (rc) 5669 - goto out_err2; 5669 + dasd_eckd_read_ext_pool_info(device); 5670 5670 5671 5671 /* Read Device Characteristics */ 5672 5672 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC,