Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755902Ab2EYHfq (ORCPT ); Fri, 25 May 2012 03:35:46 -0400 Received: from mga11.intel.com ([192.55.52.93]:39270 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752737Ab2EYHfl (ORCPT ); Fri, 25 May 2012 03:35:41 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.71,315,1320652800"; d="scan'208";a="157129097" Subject: [PATCH 4/4] scsi: cleanup usages of scsi_complete_async_scans To: mroos@linux.ee From: Dan Williams Cc: Len Brown , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, James Bottomley , "Rafael J. Wysocki" , Arjan van de Ven Date: Fri, 25 May 2012 00:50:43 -0700 Message-ID: <20120525075043.21933.3650.stgit@dwillia2-linux.jf.intel.com> In-Reply-To: <20120525074813.21933.91876.stgit@dwillia2-linux.jf.intel.com> References: <20120525074813.21933.91876.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: 4461 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 fb42aa0..20c7108 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -184,18 +184,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 74708fc..57de24a 100644 --- a/drivers/scsi/scsi_wait_scan.c +++ b/drivers/scsi/scsi_wait_scan.c @@ -12,21 +12,16 @@ #include #include -#include 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 e09dfbf..821114a 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "power.h" @@ -735,13 +734,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/