diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2008-04-17 01:45:59 -0400 |
---|---|---|
committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2008-04-17 01:46:57 -0400 |
commit | 22806dc1a8ffd88a7c7bdd070879e6e323db496a (patch) | |
tree | 45db4877914d6e0dbdb9de4b09f37d5ecce795b6 /drivers/s390/cio/css.c | |
parent | 374b8f45f1d5cb17f45ba1d7c74ce8cc9e2f1407 (diff) |
[S390] cio: Fix race for "fast" path gone/path back situations.
Make sure we wait for previous evaluations triggered by path state
changes to have settled before we manipulate path states again.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/css.c')
-rw-r--r-- | drivers/s390/cio/css.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index 3b45bbe6cce0..3e829c827493 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
@@ -533,6 +533,12 @@ void css_schedule_eval_all(void) | |||
533 | spin_unlock_irqrestore(&slow_subchannel_lock, flags); | 533 | spin_unlock_irqrestore(&slow_subchannel_lock, flags); |
534 | } | 534 | } |
535 | 535 | ||
536 | void css_wait_for_slow_path(void) | ||
537 | { | ||
538 | flush_workqueue(ccw_device_notify_work); | ||
539 | flush_workqueue(slow_path_wq); | ||
540 | } | ||
541 | |||
536 | /* Reprobe subchannel if unregistered. */ | 542 | /* Reprobe subchannel if unregistered. */ |
537 | static int reprobe_subchannel(struct subchannel_id schid, void *data) | 543 | static int reprobe_subchannel(struct subchannel_id schid, void *data) |
538 | { | 544 | { |