Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761422Ab2FVGba (ORCPT ); Fri, 22 Jun 2012 02:31:30 -0400 Received: from mga09.intel.com ([134.134.136.24]:53120 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761331Ab2FVGaj (ORCPT ); Fri, 22 Jun 2012 02:30:39 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.67,351,1309762800"; d="scan'208";a="161108547" Subject: [set5 PATCH 4/6] scsi: cleanup usages of scsi_complete_async_scans To: linux-scsi@vger.kernel.org From: Dan Williams Cc: "Rafael J. Wysocki" , Len Brown , Arjan van de Ven , linux-kernel@vger.kernel.org, James Bottomley Date: Thu, 21 Jun 2012 23:47:17 -0700 Message-ID: <20120622064717.21538.83362.stgit@dwillia2-linux.jf.intel.com> In-Reply-To: <20120622064657.21538.61711.stgit@dwillia2-linux.jf.intel.com> References: <20120622064657.21538.61711.stgit@dwillia2-linux.jf.intel.com> User-Agent: StGit/0.16-1-g7004 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4456 Lines: 147 Now that scsi registers its async scan work with the async subsystem, wait_for_device_probe() is sufficient for ensuring all scanning is complete. Cc: Arjan van de Ven Cc: Len Brown Cc: Rafael J. Wysocki Cc: James Bottomley Signed-off-by: Dan Williams --- drivers/scsi/scsi_scan.c | 12 ------------ drivers/scsi/scsi_wait_scan.c | 15 +++++---------- include/scsi/scsi_scan.h | 11 ----------- kernel/power/hibernate.c | 8 -------- kernel/power/user.c | 2 -- 5 files changed, 5 insertions(+), 43 deletions(-) delete mode 100644 include/scsi/scsi_scan.h diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index a381fa2..2731c81 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -187,18 +187,6 @@ int scsi_complete_async_scans(void) return 0; } -/* Only exported for the benefit of scsi_wait_scan */ -EXPORT_SYMBOL_GPL(scsi_complete_async_scans); - -#ifndef MODULE -/* - * For async scanning we need to wait for all the scans to complete before - * trying to mount the root fs. Otherwise non-modular drivers may not be ready - * yet. - */ -late_initcall(scsi_complete_async_scans); -#endif - /** * scsi_unlock_floptical - unlock device via a special MODE SENSE command * @sdev: scsi device to send command to diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c index ae78148..57de24a 100644 --- a/drivers/scsi/scsi_wait_scan.c +++ b/drivers/scsi/scsi_wait_scan.c @@ -12,21 +12,16 @@ #include #include -#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 + * This will not return until all async work (system wide) is + * quiesced. Probing queues host-scanning work to the async + * queue which is why we don't need a separate call to + * scsi_complete_async_scans() */ wait_for_device_probe(); - /* - * and then we wait for the actual asynchronous scsi scan - * to finish. - */ - scsi_complete_async_scans(); return 0; } @@ -38,5 +33,5 @@ MODULE_DESCRIPTION("SCSI wait for scans"); MODULE_AUTHOR("James Bottomley"); MODULE_LICENSE("GPL"); -late_initcall(wait_scan_init); +module_init(wait_scan_init); module_exit(wait_scan_exit); diff --git a/include/scsi/scsi_scan.h b/include/scsi/scsi_scan.h deleted file mode 100644 index 7889888..0000000 --- a/include/scsi/scsi_scan.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _SCSI_SCSI_SCAN_H -#define _SCSI_SCSI_SCAN_H - -#ifdef CONFIG_SCSI -/* drivers/scsi/scsi_scan.c */ -extern int scsi_complete_async_scans(void); -#else -static inline int scsi_complete_async_scans(void) { return 0; } -#endif - -#endif /* _SCSI_SCSI_SCAN_H */ diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 8b53db3..238025f 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -27,7 +27,6 @@ #include #include #include -#include #include "power.h" @@ -748,13 +747,6 @@ static int software_resume(void) async_synchronize_full(); } - /* - * We can't depend on SCSI devices being available after loading - * one of their modules until scsi_complete_async_scans() is - * called and the resume device usually is a SCSI one. - */ - scsi_complete_async_scans(); - swsusp_resume_device = name_to_dev_t(resume_file); if (!swsusp_resume_device) { error = -ENODEV; diff --git a/kernel/power/user.c b/kernel/power/user.c index 91b0fd0..4ed81e7 100644 --- a/kernel/power/user.c +++ b/kernel/power/user.c @@ -24,7 +24,6 @@ #include #include #include -#include #include @@ -84,7 +83,6 @@ static int snapshot_open(struct inode *inode, struct file *filp) * appear. */ wait_for_device_probe(); - scsi_complete_async_scans(); data->swap = -1; data->mode = O_WRONLY; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/