Commit ea4da6ea authored by Stefan Haberland's avatar Stefan Haberland Committed by Martin Schwidefsky

s390/dasd: fix unresponsive device after all channel paths were lost

Failfast bit was set incorrectly.
Use set_bit to enable failfast.
Reviewed-by: default avatarStefan Weinhuber <wein@de.ibm.com>
Signed-off-by: default avatarStefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 17ea345a
...@@ -1573,7 +1573,10 @@ static void dasd_eckd_do_validate_server(struct work_struct *work) ...@@ -1573,7 +1573,10 @@ static void dasd_eckd_do_validate_server(struct work_struct *work)
{ {
struct dasd_device *device = container_of(work, struct dasd_device, struct dasd_device *device = container_of(work, struct dasd_device,
kick_validate); kick_validate);
if (dasd_eckd_validate_server(device, DASD_CQR_FLAGS_FAILFAST) unsigned long flags = 0;
set_bit(DASD_CQR_FLAGS_FAILFAST, &flags);
if (dasd_eckd_validate_server(device, flags)
== -EAGAIN) { == -EAGAIN) {
/* schedule worker again if failed */ /* schedule worker again if failed */
schedule_work(&device->kick_validate); schedule_work(&device->kick_validate);
...@@ -4157,6 +4160,7 @@ static int dasd_eckd_restore_device(struct dasd_device *device) ...@@ -4157,6 +4160,7 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
int rc; int rc;
struct dasd_uid temp_uid; struct dasd_uid temp_uid;
unsigned long flags; unsigned long flags;
unsigned long cqr_flags = 0;
private = (struct dasd_eckd_private *) device->private; private = (struct dasd_eckd_private *) device->private;
...@@ -4178,7 +4182,9 @@ static int dasd_eckd_restore_device(struct dasd_device *device) ...@@ -4178,7 +4182,9 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
rc = dasd_alias_make_device_known_to_lcu(device); rc = dasd_alias_make_device_known_to_lcu(device);
if (rc) if (rc)
return rc; return rc;
dasd_eckd_validate_server(device, DASD_CQR_FLAGS_FAILFAST);
set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr_flags);
dasd_eckd_validate_server(device, cqr_flags);
/* RE-Read Configuration Data */ /* RE-Read Configuration Data */
dasd_eckd_read_conf(device); dasd_eckd_read_conf(device);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment