diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-02-20 21:28:14 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-20 23:00:12 -0500 |
commit | 49d9c81a699b57a5b6488f3a761669d05e116588 (patch) | |
tree | a26af993889b1fe6af95fcff7d911740b008db6c /drivers/s390/block/dasd.c | |
parent | aa88861fc3184a7d830954661dd281de4ae8d2ba (diff) |
[PATCH] s390: revert dasd eer module
Revert dasd eer module until we have a common understanding of how the
interface should be.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/s390/block/dasd.c')
-rw-r--r-- | drivers/s390/block/dasd.c | 76 |
1 files changed, 1 insertions, 75 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 06bb992a4c6c..af1d5b404cee 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <linux/buffer_head.h> | 19 | #include <linux/buffer_head.h> |
20 | #include <linux/hdreg.h> | 20 | #include <linux/hdreg.h> |
21 | #include <linux/notifier.h> | ||
22 | 21 | ||
23 | #include <asm/ccwdev.h> | 22 | #include <asm/ccwdev.h> |
24 | #include <asm/ebcdic.h> | 23 | #include <asm/ebcdic.h> |
@@ -58,7 +57,6 @@ static void dasd_int_handler(struct ccw_device *, unsigned long, struct irb *); | |||
58 | static void dasd_flush_ccw_queue(struct dasd_device *, int); | 57 | static void dasd_flush_ccw_queue(struct dasd_device *, int); |
59 | static void dasd_tasklet(struct dasd_device *); | 58 | static void dasd_tasklet(struct dasd_device *); |
60 | static void do_kick_device(void *data); | 59 | static void do_kick_device(void *data); |
61 | static void dasd_disable_eer(struct dasd_device *device); | ||
62 | 60 | ||
63 | /* | 61 | /* |
64 | * SECTION: Operations on the device structure. | 62 | * SECTION: Operations on the device structure. |
@@ -153,8 +151,6 @@ dasd_state_new_to_known(struct dasd_device *device) | |||
153 | static inline void | 151 | static inline void |
154 | dasd_state_known_to_new(struct dasd_device * device) | 152 | dasd_state_known_to_new(struct dasd_device * device) |
155 | { | 153 | { |
156 | /* disable extended error reporting for this device */ | ||
157 | dasd_disable_eer(device); | ||
158 | /* Forget the discipline information. */ | 154 | /* Forget the discipline information. */ |
159 | if (device->discipline) | 155 | if (device->discipline) |
160 | module_put(device->discipline->owner); | 156 | module_put(device->discipline->owner); |
@@ -876,9 +872,6 @@ dasd_handle_state_change_pending(struct dasd_device *device) | |||
876 | struct dasd_ccw_req *cqr; | 872 | struct dasd_ccw_req *cqr; |
877 | struct list_head *l, *n; | 873 | struct list_head *l, *n; |
878 | 874 | ||
879 | /* first of all call extended error reporting */ | ||
880 | dasd_write_eer_trigger(DASD_EER_STATECHANGE, device, NULL); | ||
881 | |||
882 | device->stopped &= ~DASD_STOPPED_PENDING; | 875 | device->stopped &= ~DASD_STOPPED_PENDING; |
883 | 876 | ||
884 | /* restart all 'running' IO on queue */ | 877 | /* restart all 'running' IO on queue */ |
@@ -1098,19 +1091,6 @@ restart: | |||
1098 | } | 1091 | } |
1099 | goto restart; | 1092 | goto restart; |
1100 | } | 1093 | } |
1101 | |||
1102 | /* first of all call extended error reporting */ | ||
1103 | if (device->eer && cqr->status == DASD_CQR_FAILED) { | ||
1104 | dasd_write_eer_trigger(DASD_EER_FATALERROR, | ||
1105 | device, cqr); | ||
1106 | |||
1107 | /* restart request */ | ||
1108 | cqr->status = DASD_CQR_QUEUED; | ||
1109 | cqr->retries = 255; | ||
1110 | device->stopped |= DASD_STOPPED_QUIESCE; | ||
1111 | goto restart; | ||
1112 | } | ||
1113 | |||
1114 | /* Process finished ERP request. */ | 1094 | /* Process finished ERP request. */ |
1115 | if (cqr->refers) { | 1095 | if (cqr->refers) { |
1116 | __dasd_process_erp(device, cqr); | 1096 | __dasd_process_erp(device, cqr); |
@@ -1248,8 +1228,7 @@ __dasd_start_head(struct dasd_device * device) | |||
1248 | cqr = list_entry(device->ccw_queue.next, struct dasd_ccw_req, list); | 1228 | cqr = list_entry(device->ccw_queue.next, struct dasd_ccw_req, list); |
1249 | /* check FAILFAST */ | 1229 | /* check FAILFAST */ |
1250 | if (device->stopped & ~DASD_STOPPED_PENDING && | 1230 | if (device->stopped & ~DASD_STOPPED_PENDING && |
1251 | test_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags) && | 1231 | test_bit(DASD_CQR_FLAGS_FAILFAST, &cqr->flags)) { |
1252 | (!device->eer)) { | ||
1253 | cqr->status = DASD_CQR_FAILED; | 1232 | cqr->status = DASD_CQR_FAILED; |
1254 | dasd_schedule_bh(device); | 1233 | dasd_schedule_bh(device); |
1255 | } | 1234 | } |
@@ -2005,9 +1984,6 @@ dasd_generic_notify(struct ccw_device *cdev, int event) | |||
2005 | switch (event) { | 1984 | switch (event) { |
2006 | case CIO_GONE: | 1985 | case CIO_GONE: |
2007 | case CIO_NO_PATH: | 1986 | case CIO_NO_PATH: |
2008 | /* first of all call extended error reporting */ | ||
2009 | dasd_write_eer_trigger(DASD_EER_NOPATH, device, NULL); | ||
2010 | |||
2011 | if (device->state < DASD_STATE_BASIC) | 1987 | if (device->state < DASD_STATE_BASIC) |
2012 | break; | 1988 | break; |
2013 | /* Device is active. We want to keep it. */ | 1989 | /* Device is active. We want to keep it. */ |
@@ -2065,51 +2041,6 @@ dasd_generic_auto_online (struct ccw_driver *dasd_discipline_driver) | |||
2065 | put_driver(drv); | 2041 | put_driver(drv); |
2066 | } | 2042 | } |
2067 | 2043 | ||
2068 | /* | ||
2069 | * notifications for extended error reports | ||
2070 | */ | ||
2071 | static struct notifier_block *dasd_eer_chain; | ||
2072 | |||
2073 | int | ||
2074 | dasd_register_eer_notifier(struct notifier_block *nb) | ||
2075 | { | ||
2076 | return notifier_chain_register(&dasd_eer_chain, nb); | ||
2077 | } | ||
2078 | |||
2079 | int | ||
2080 | dasd_unregister_eer_notifier(struct notifier_block *nb) | ||
2081 | { | ||
2082 | return notifier_chain_unregister(&dasd_eer_chain, nb); | ||
2083 | } | ||
2084 | |||
2085 | /* | ||
2086 | * Notify the registered error reporting module of a problem | ||
2087 | */ | ||
2088 | void | ||
2089 | dasd_write_eer_trigger(unsigned int id, struct dasd_device *device, | ||
2090 | struct dasd_ccw_req *cqr) | ||
2091 | { | ||
2092 | if (device->eer) { | ||
2093 | struct dasd_eer_trigger temp; | ||
2094 | temp.id = id; | ||
2095 | temp.device = device; | ||
2096 | temp.cqr = cqr; | ||
2097 | notifier_call_chain(&dasd_eer_chain, DASD_EER_TRIGGER, | ||
2098 | (void *)&temp); | ||
2099 | } | ||
2100 | } | ||
2101 | |||
2102 | /* | ||
2103 | * Tell the registered error reporting module to disable error reporting for | ||
2104 | * a given device and to cleanup any private data structures on that device. | ||
2105 | */ | ||
2106 | static void | ||
2107 | dasd_disable_eer(struct dasd_device *device) | ||
2108 | { | ||
2109 | notifier_call_chain(&dasd_eer_chain, DASD_EER_DISABLE, (void *)device); | ||
2110 | } | ||
2111 | |||
2112 | |||
2113 | static int __init | 2044 | static int __init |
2114 | dasd_init(void) | 2045 | dasd_init(void) |
2115 | { | 2046 | { |
@@ -2191,11 +2122,6 @@ EXPORT_SYMBOL_GPL(dasd_generic_set_online); | |||
2191 | EXPORT_SYMBOL_GPL(dasd_generic_set_offline); | 2122 | EXPORT_SYMBOL_GPL(dasd_generic_set_offline); |
2192 | EXPORT_SYMBOL_GPL(dasd_generic_auto_online); | 2123 | EXPORT_SYMBOL_GPL(dasd_generic_auto_online); |
2193 | 2124 | ||
2194 | EXPORT_SYMBOL(dasd_register_eer_notifier); | ||
2195 | EXPORT_SYMBOL(dasd_unregister_eer_notifier); | ||
2196 | EXPORT_SYMBOL(dasd_write_eer_trigger); | ||
2197 | |||
2198 | |||
2199 | /* | 2125 | /* |
2200 | * Overrides for Emacs so that we follow Linus's tabbing style. | 2126 | * Overrides for Emacs so that we follow Linus's tabbing style. |
2201 | * Emacs will notice this stuff at the end of the file and automatically | 2127 | * Emacs will notice this stuff at the end of the file and automatically |