diff options
author | Michael Ernst <mernst@de.ibm.com> | 2010-05-26 23:27:08 +0200 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2010-05-26 23:27:09 +0200 |
commit | 094f2100d6bb16ef0c4f82167cc55173ca22ee93 (patch) | |
tree | 5e6540cc332b1b83216d3dfa037ea9ac50b9aacc /arch/s390/include | |
parent | c560d105a197464603247bf55962fc7f23c8cb62 (diff) | |
download | linux-3.10-094f2100d6bb16ef0c4f82167cc55173ca22ee93.tar.gz linux-3.10-094f2100d6bb16ef0c4f82167cc55173ca22ee93.tar.bz2 linux-3.10-094f2100d6bb16ef0c4f82167cc55173ca22ee93.zip |
[S390] cio: unit check handling during internal I/O
Send unit checks that occur during internal I/O to the device driver
and react according to its return code.
Signed-off-by: Michael Ernst <mernst@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include')
-rw-r--r-- | arch/s390/include/asm/ccwdev.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/s390/include/asm/ccwdev.h b/arch/s390/include/asm/ccwdev.h index f4bd346a52d..1c0030f9b89 100644 --- a/arch/s390/include/asm/ccwdev.h +++ b/arch/s390/include/asm/ccwdev.h @@ -91,6 +91,14 @@ struct ccw_device { void (*handler) (struct ccw_device *, unsigned long, struct irb *); }; +/* + * Possible CIO actions triggered by the unit check handler. + */ +enum uc_todo { + UC_TODO_RETRY, + UC_TODO_RETRY_ON_NEW_PATH, + UC_TODO_STOP +}; /** * struct ccw driver - device driver for channel attached devices @@ -107,6 +115,7 @@ struct ccw_device { * @freeze: callback for freezing during hibernation snapshotting * @thaw: undo work done in @freeze * @restore: callback for restoring after hibernation + * @uc_handler: callback for unit check handler * @driver: embedded device driver structure * @name: device driver name */ @@ -124,6 +133,7 @@ struct ccw_driver { int (*freeze)(struct ccw_device *); int (*thaw) (struct ccw_device *); int (*restore)(struct ccw_device *); + enum uc_todo (*uc_handler) (struct ccw_device *, struct irb *); struct device_driver driver; char *name; }; |