diff options
author | Stefan Haberland <stefan.haberland@de.ibm.com> | 2014-07-18 12:26:01 (GMT) |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2014-07-22 07:26:23 (GMT) |
commit | 29b8dd9d4274bca6526e4bb8d4f46dec1f4c15c9 (patch) | |
tree | 631cb92a24223b571ea534f28ea7ec0a2950480b /drivers/s390/block/dasd_int.h | |
parent | 8fa56aed12f1b0a2828da52280e2efbbf1163ad5 (diff) | |
download | linux-29b8dd9d4274bca6526e4bb8d4f46dec1f4c15c9.tar.xz |
dasd: fix error recovery for alias devices during format
Kernel panic or a hanging device during format if an alias device is
set offline or I/O errors occur.
Omit the error recovery procedure for alias devices and do retries on
the base device with full erp.
Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd_int.h')
-rw-r--r-- | drivers/s390/block/dasd_int.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h index 7a14582..2cc188c 100644 --- a/drivers/s390/block/dasd_int.h +++ b/drivers/s390/block/dasd_int.h @@ -175,6 +175,7 @@ struct dasd_ccw_req { struct dasd_block *block; /* the originating block device */ struct dasd_device *memdev; /* the device used to allocate this */ struct dasd_device *startdev; /* device the request is started on */ + struct dasd_device *basedev; /* base device if no block->base */ void *cpaddr; /* address of ccw or tcw */ unsigned char cpmode; /* 0 = cmd mode, 1 = itcw */ char status; /* status of this request */ @@ -321,7 +322,7 @@ struct dasd_discipline { int (*term_IO) (struct dasd_ccw_req *); void (*handle_terminated_request) (struct dasd_ccw_req *); int (*format_device) (struct dasd_device *, - struct format_data_t *); + struct format_data_t *, int enable_PAV); int (*free_cp) (struct dasd_ccw_req *, struct request *); /* |