aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2009-06-12 04:26:38 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-06-12 04:27:36 -0400
commit736e6ea0bf97ec79521f88704ce8506e5d60d078 (patch)
tree3bfa8317f4c3161bfe86163b8ab87613d629ba7d /drivers/s390
parent92636b152f3b58e459988934f689619af9e04dbc (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>
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/block/dasd_eckd.c8
-rw-r--r--drivers/s390/block/dasd_fba.c8
2 files changed, 14 insertions, 2 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index c4e818111a4..216c09bcd22 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 = {
3277static int __init 3277static int __init
3278dasd_eckd_init(void) 3278dasd_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
3284static void __exit 3290static void __exit
diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c
index 8c3c8ffbc8b..597c6ffdb9f 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 = {
604static int __init 604static int __init
605dasd_fba_init(void) 605dasd_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
611static void __exit 617static void __exit