Skip to content

Commit 9e34c8b

Browse files
hoeppnerjaxboe
authored andcommitted
s390/dasd: Fix operational path inconsistency
During online processing and setting up a DASD device, the configuration data for operational paths is read and validated two times (dasd_eckd_read_conf()). The first time to provide information that are necessary for the LCU setup. A second time after the LCU setup as a device might report different configuration data then. When the configuration setup for each operational path is being validated, an initial call to dasd_eckd_clear_conf_data() is issued. This call wipes all previously available configuration data and path information for each path. However, the operational path mask is not updated during this process. As a result, the stored operational path mask might no longer correspond to the operational paths mask reported by the CIO layer, as several paths might be gone between the two dasd_eckd_read_conf() calls. This inconsistency leads to more severe issues in later path handling changes. Fix this by removing the channel paths from the operational path mask during the dasd_eckd_clear_conf_data() call. Signed-off-by: Jan Höppner <[email protected]> Signed-off-by: Stefan Haberland <[email protected]> Reviewed-by: Stefan Haberland <[email protected]> Reviewed-by: Cornelia Huck <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 4601812 commit 9e34c8b

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

drivers/s390/block/dasd_eckd.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,6 +1034,7 @@ static void dasd_eckd_clear_conf_data(struct dasd_device *device)
10341034
device->path[i].cssid = 0;
10351035
device->path[i].ssid = 0;
10361036
device->path[i].chpid = 0;
1037+
dasd_path_notoper(device, i);
10371038
}
10381039
}
10391040

0 commit comments

Comments
 (0)