aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/css.h
diff options
context:
space:
mode:
authorPeter Oberparleiter <peter.oberparleiter@de.ibm.com>2007-04-27 10:01:34 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-04-27 10:01:40 -0400
commit83b3370c79b91b9be3f6540c3c914e689134b45f (patch)
treead7c062b260c0259c74e45ff869208c1ad139629 /drivers/s390/cio/css.h
parent387b734fc2b55f776b192c7afdfd892ba42347d4 (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.h10
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 *);
146extern struct subchannel * get_subchannel_by_schid(struct subchannel_id); 146extern struct subchannel * get_subchannel_by_schid(struct subchannel_id);
147extern int css_init_done; 147extern int css_init_done;
148extern int for_each_subchannel(int(*fn)(struct subchannel_id, void *), void *); 148extern int for_each_subchannel(int(*fn)(struct subchannel_id, void *), void *);
149extern int css_process_crw(int, int); 149extern void css_process_crw(int, int);
150extern void css_reiterate_subchannels(void); 150extern 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);
186void device_kill_pending_timer(struct subchannel *); 186void 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. */
189extern int css_enqueue_subchannel_slow(struct subchannel_id schid); 189void css_schedule_eval(struct subchannel_id schid);
190void css_walk_subchannel_slow_list(void (*fn)(unsigned long)); 190void css_schedule_eval_all(void);
191void css_clear_subchannel_slow_list(void);
192int css_slow_subchannels_exist(void);
193extern int need_rescan;
194 191
195int sch_is_pseudo_sch(struct subchannel *); 192int sch_is_pseudo_sch(struct subchannel *);
196 193
197extern struct workqueue_struct *slow_path_wq; 194extern struct workqueue_struct *slow_path_wq;
198extern struct work_struct slow_path_work;
199 195
200int subchannel_add_files (struct device *); 196int subchannel_add_files (struct device *);
201extern struct attribute_group *subch_attr_groups[]; 197extern struct attribute_group *subch_attr_groups[];