diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2009-06-12 04:26:38 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-06-12 04:27:36 -0400 |
commit | 736e6ea0bf97ec79521f88704ce8506e5d60d078 (patch) | |
tree | 3bfa8317f4c3161bfe86163b8ab87613d629ba7d | |
parent | 92636b152f3b58e459988934f689619af9e04dbc (diff) |
[S390] dasd: sync after async probe
Some functions called as a late_initcall depend on completely
initialized devices. Since commit
f3445a1a656bc26b07946cc6d20de1ef07c8d116 the dasd driver uses the
new async framework and relies on the fact that synchronization is
done in prepare_namespace which is called after the late_initcalls.
Fix this by calling async_synchronize_full at the end of the related
init functions.
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 8 | ||||
-rw-r--r-- | drivers/s390/block/dasd_fba.c | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index c4e818111a40..216c09bcd222 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -3277,8 +3277,14 @@ static struct dasd_discipline dasd_eckd_discipline = { | |||
3277 | static int __init | 3277 | static int __init |
3278 | dasd_eckd_init(void) | 3278 | dasd_eckd_init(void) |
3279 | { | 3279 | { |
3280 | int ret; | ||
3281 | |||
3280 | ASCEBC(dasd_eckd_discipline.ebcname, 4); | 3282 | ASCEBC(dasd_eckd_discipline.ebcname, 4); |
3281 | return ccw_driver_register(&dasd_eckd_driver); | 3283 | ret = ccw_driver_register(&dasd_eckd_driver); |
3284 | if (!ret) | ||
3285 | wait_for_device_probe(); | ||
3286 | |||
3287 | return ret; | ||
3282 | } | 3288 | } |
3283 | 3289 | ||
3284 | static void __exit | 3290 | static void __exit |
diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c index 8c3c8ffbc8bf..597c6ffdb9f2 100644 --- a/drivers/s390/block/dasd_fba.c +++ b/drivers/s390/block/dasd_fba.c | |||
@@ -604,8 +604,14 @@ static struct dasd_discipline dasd_fba_discipline = { | |||
604 | static int __init | 604 | static int __init |
605 | dasd_fba_init(void) | 605 | dasd_fba_init(void) |
606 | { | 606 | { |
607 | int ret; | ||
608 | |||
607 | ASCEBC(dasd_fba_discipline.ebcname, 4); | 609 | ASCEBC(dasd_fba_discipline.ebcname, 4); |
608 | return ccw_driver_register(&dasd_fba_driver); | 610 | ret = ccw_driver_register(&dasd_fba_driver); |
611 | if (!ret) | ||
612 | wait_for_device_probe(); | ||
613 | |||
614 | return ret; | ||
609 | } | 615 | } |
610 | 616 | ||
611 | static void __exit | 617 | static void __exit |