SCSI: fix scsi_wait_scan
authorJames Bottomley <jbottomley@parallels.com>
Wed, 30 May 2012 09:45:39 +0000 (09:45 +0000)
committerWilly Tarreau <w@1wt.eu>
Sun, 7 Oct 2012 21:37:52 +0000 (23:37 +0200)
commit 1ff2f40305772b159a91c19590ee159d3a504afc upstream.

Commit  c751085943362143f84346d274e0011419c84202
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>
Signed-off-by: Willy Tarreau <w@1wt.eu>
drivers/scsi/scsi_priv.h
drivers/scsi/scsi_wait_scan.c

index 1fbf7c78bba0ab80947e9c46207b70bf2f04c75f..11c0085f36448c665ca8d7abbbf9147d98193f5b 100644 (file)
@@ -107,6 +107,7 @@ extern void scsi_exit_procfs(void);
 #endif /* CONFIG_PROC_FS */
 
 /* scsi_scan.c */
+extern int scsi_complete_async_scans(void);
 extern int scsi_scan_host_selected(struct Scsi_Host *, unsigned int,
                                   unsigned int, unsigned int, int);
 extern void scsi_forget_host(struct Scsi_Host *);
index 74708fcaf82fe900c3a77689ccad11c91b48b173..5c22bdae63521efd968d84183e5534f8f1e980bf 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/device.h>
 #include <scsi/scsi_scan.h>
+#include "scsi_priv.h"
 
 static int __init wait_scan_init(void)
 {