mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
e6157b97c6
commit1ff2f40305
upstream. Commitc751085943
Author: Rafael J. Wysocki <rjw@sisk.pl> Date: Sun Apr 12 20:06:56 2009 +0200 PM/Hibernate: Wait for SCSI devices scan to complete during resume Broke the scsi_wait_scan module in 2.6.30. Apparently debian still uses it so fix it and backport to stable before removing it in 3.6. The breakage is caused because the function template in include/scsi/scsi_scan.h is defined to be a nop unless SCSI is built in. That means that in the modular case (which is every distro), the scsi_wait_scan module does a simple async_synchronize_full() instead of waiting for scans. Signed-off-by: James Bottomley <JBottomley@Parallels.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
42 lines
1 KiB
C
42 lines
1 KiB
C
/*
|
|
* 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_priv.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);
|