|  | /* | 
|  | * scsi_wait_scan.c | 
|  | * | 
|  | * Copyright (C) 2006 James Bottomley <James.Bottomley@SteelEye.com> | 
|  | * | 
|  | * This is a simple module to wait until all the async scans are | 
|  | * complete.  The idea is to use it in initrd/initramfs scripts.  You | 
|  | * modprobe it after all the modprobes of the root SCSI drivers and it | 
|  | * will wait until they have all finished scanning their busses before | 
|  | * allowing the boot to proceed | 
|  | */ | 
|  |  | 
|  | #include <linux/module.h> | 
|  | #include <linux/device.h> | 
|  | #include <scsi/scsi_scan.h> | 
|  |  | 
|  | static int __init wait_scan_init(void) | 
|  | { | 
|  | /* | 
|  | * First we need to wait for device probing to finish; | 
|  | * the drivers we just loaded might just still be probing | 
|  | * and might not yet have reached the scsi async scanning | 
|  | */ | 
|  | wait_for_device_probe(); | 
|  | /* | 
|  | * and then we wait for the actual asynchronous scsi scan | 
|  | * to finish. | 
|  | */ | 
|  | scsi_complete_async_scans(); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | static void __exit wait_scan_exit(void) | 
|  | { | 
|  | } | 
|  |  | 
|  | MODULE_DESCRIPTION("SCSI wait for scans"); | 
|  | MODULE_AUTHOR("James Bottomley"); | 
|  | MODULE_LICENSE("GPL"); | 
|  |  | 
|  | late_initcall(wait_scan_init); | 
|  | module_exit(wait_scan_exit); |