Skip to content

Commit

Permalink
s390/dasd: fix unresponsive device after all channel paths were lost
Browse files Browse the repository at this point in the history
Failfast bit was set incorrectly.
Use set_bit to enable failfast.

Reviewed-by: Stefan Weinhuber <wein@de.ibm.com>
Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Stefan Haberland authored and Martin Schwidefsky committed Feb 28, 2013
1 parent 17ea345 commit ea4da6e
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/s390/block/dasd_eckd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
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) {
/* schedule worker again if failed */
schedule_work(&device->kick_validate);
Expand Down Expand Up @@ -4157,6 +4160,7 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
int rc;
struct dasd_uid temp_uid;
unsigned long flags;
unsigned long cqr_flags = 0;

private = (struct dasd_eckd_private *) device->private;

Expand All @@ -4178,7 +4182,9 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
rc = dasd_alias_make_device_known_to_lcu(device);
if (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 */
dasd_eckd_read_conf(device);
Expand Down

0 comments on commit ea4da6e

Please sign in to comment.