diff options
Diffstat (limited to 'drivers/scsi/scsi_wait_scan.c')
-rw-r--r-- | drivers/scsi/scsi_wait_scan.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c new file mode 100644 index 00000000000..74708fcaf82 --- /dev/null +++ b/drivers/scsi/scsi_wait_scan.c | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * scsi_wait_scan.c | ||
3 | * | ||
4 | * Copyright (C) 2006 James Bottomley <James.Bottomley@SteelEye.com> | ||
5 | * | ||
6 | * This is a simple module to wait until all the async scans are | ||
7 | * complete. The idea is to use it in initrd/initramfs scripts. You | ||
8 | * modprobe it after all the modprobes of the root SCSI drivers and it | ||
9 | * will wait until they have all finished scanning their busses before | ||
10 | * allowing the boot to proceed | ||
11 | */ | ||
12 | |||
13 | #include <linux/module.h> | ||
14 | #include <linux/device.h> | ||
15 | #include <scsi/scsi_scan.h> | ||
16 | |||
17 | static int __init wait_scan_init(void) | ||
18 | { | ||
19 | /* | ||
20 | * First we need to wait for device probing to finish; | ||
21 | * the drivers we just loaded might just still be probing | ||
22 | * and might not yet have reached the scsi async scanning | ||
23 | */ | ||
24 | wait_for_device_probe(); | ||
25 | /* | ||
26 | * and then we wait for the actual asynchronous scsi scan | ||
27 | * to finish. | ||
28 | */ | ||
29 | scsi_complete_async_scans(); | ||
30 | return 0; | ||
31 | } | ||
32 | |||
33 | static void __exit wait_scan_exit(void) | ||
34 | { | ||
35 | } | ||
36 | |||
37 | MODULE_DESCRIPTION("SCSI wait for scans"); | ||
38 | MODULE_AUTHOR("James Bottomley"); | ||
39 | MODULE_LICENSE("GPL"); | ||
40 | |||
41 | late_initcall(wait_scan_init); | ||
42 | module_exit(wait_scan_exit); | ||