mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
1ff2f40305
Commit c751085943
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.
Cc: <stable@vger.kernel.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
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);
|