diff options
author | Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | 2007-04-27 10:01:34 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-04-27 10:01:40 -0400 |
commit | 83b3370c79b91b9be3f6540c3c914e689134b45f (patch) | |
tree | ad7c062b260c0259c74e45ff869208c1ad139629 /drivers/s390/cio/css.h | |
parent | 387b734fc2b55f776b192c7afdfd892ba42347d4 (diff) |
[S390] cio: replace subchannel evaluation queue with bitmap
Use a bitmap for indicating which subchannels require evaluation
instead of allocating memory for each evaluation request. This
approach reduces memory consumption during recovery in case of
massive evaluation request occurrence and removes the need for
memory allocation failure handling.
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/css.h')
-rw-r--r-- | drivers/s390/cio/css.h | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/s390/cio/css.h b/drivers/s390/cio/css.h index b2b1a265c602..4b3133a7bae1 100644 --- a/drivers/s390/cio/css.h +++ b/drivers/s390/cio/css.h | |||
@@ -146,7 +146,7 @@ extern void css_sch_device_unregister(struct subchannel *); | |||
146 | extern struct subchannel * get_subchannel_by_schid(struct subchannel_id); | 146 | extern struct subchannel * get_subchannel_by_schid(struct subchannel_id); |
147 | extern int css_init_done; | 147 | extern int css_init_done; |
148 | extern int for_each_subchannel(int(*fn)(struct subchannel_id, void *), void *); | 148 | extern int for_each_subchannel(int(*fn)(struct subchannel_id, void *), void *); |
149 | extern int css_process_crw(int, int); | 149 | extern void css_process_crw(int, int); |
150 | extern void css_reiterate_subchannels(void); | 150 | extern void css_reiterate_subchannels(void); |
151 | 151 | ||
152 | #define __MAX_SUBCHANNEL 65535 | 152 | #define __MAX_SUBCHANNEL 65535 |
@@ -186,16 +186,12 @@ int device_trigger_verify(struct subchannel *sch); | |||
186 | void device_kill_pending_timer(struct subchannel *); | 186 | void device_kill_pending_timer(struct subchannel *); |
187 | 187 | ||
188 | /* Helper functions to build lists for the slow path. */ | 188 | /* Helper functions to build lists for the slow path. */ |
189 | extern int css_enqueue_subchannel_slow(struct subchannel_id schid); | 189 | void css_schedule_eval(struct subchannel_id schid); |
190 | void css_walk_subchannel_slow_list(void (*fn)(unsigned long)); | 190 | void css_schedule_eval_all(void); |
191 | void css_clear_subchannel_slow_list(void); | ||
192 | int css_slow_subchannels_exist(void); | ||
193 | extern int need_rescan; | ||
194 | 191 | ||
195 | int sch_is_pseudo_sch(struct subchannel *); | 192 | int sch_is_pseudo_sch(struct subchannel *); |
196 | 193 | ||
197 | extern struct workqueue_struct *slow_path_wq; | 194 | extern struct workqueue_struct *slow_path_wq; |
198 | extern struct work_struct slow_path_work; | ||
199 | 195 | ||
200 | int subchannel_add_files (struct device *); | 196 | int subchannel_add_files (struct device *); |
201 | extern struct attribute_group *subch_attr_groups[]; | 197 | extern struct attribute_group *subch_attr_groups[]; |