public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb-storage: implement autosuspend
@ 2010-07-28 21:12 Alan Stern
  2010-07-28 21:16 ` James Bottomley
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Alan Stern @ 2010-07-28 21:12 UTC (permalink / raw)
  To: James Bottomley, Greg KH
  Cc: Matthew Dharm, Oliver Neukum, SCSI development list,
	USB Storage list

This patch (as1400) adds runtime-PM support to usb-storage.  It
utilizes the SCSI layer's runtime-PM implementation, so its scope is
limited.  Currently the only effect is that disk-like devices (such as
card readers or flash drives) will be autosuspended if they aren't
mounted and their device files aren't open.  This would apply, for
example, to card readers that don't contain a memory card.

Unfortunately this won't interact very well with the removable-media
polling normally carried out by hal or DeviceKit.  Maybe those
programs can be changed to use a longer polling interval, or maybe the
default autosuspend time for usb-storage should be set to something
below 1 second.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

---

Now that the SCSI runtime-PM patches have been accepted for the 
upcoming merge window, it's time to make use of the new mechanism in 
usb-storage.  That's what this does.

Because this patch depends on those SCSI changes, either it should also 
go via James's tree or else the SCSI patches should be imported into 
Greg's tree first.  James and Greg, which route is easier for you?

Alan Stern



Index: usb-2.6/drivers/usb/storage/usb.c
===================================================================
--- usb-2.6.orig/drivers/usb/storage/usb.c
+++ usb-2.6/drivers/usb/storage/usb.c
@@ -336,6 +336,7 @@ static int usb_stor_control_thread(void 
 		else {
 			US_DEBUG(usb_stor_show_command(us->srb));
 			us->proto_handler(us->srb, us);
+			usb_mark_last_busy(us->pusb_dev);
 		}
 
 		/* lock access to the state */
@@ -845,6 +846,7 @@ static int usb_stor_scan_thread(void * _
 		/* Should we unbind if no devices were detected? */
 	}
 
+	usb_autopm_put_interface(us->pusb_intf);
 	complete_and_exit(&us->scanning_done, 0);
 }
 
@@ -968,6 +970,7 @@ int usb_stor_probe2(struct us_data *us)
 		goto BadDevice;
 	}
 
+	usb_autopm_get_interface_no_resume(us->pusb_intf);
 	wake_up_process(th);
 
 	return 0;
@@ -1040,6 +1043,7 @@ static struct usb_driver usb_storage_dri
 	.pre_reset =	usb_stor_pre_reset,
 	.post_reset =	usb_stor_post_reset,
 	.id_table =	usb_storage_usb_ids,
+	.supports_autosuspend = 1,
 	.soft_unbind =	1,
 };
 


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2010-08-02 23:48 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-28 21:12 [PATCH] usb-storage: implement autosuspend Alan Stern
2010-07-28 21:16 ` James Bottomley
2010-07-28 21:25   ` Greg KH
2010-07-28 21:29     ` James Bottomley
2010-07-28 21:35       ` Greg KH
2010-07-28 22:56         ` James Bottomley
2010-07-28 23:09           ` Greg KH
2010-07-29 14:14             ` Alan Stern
2010-07-29 14:19               ` Greg KH
2010-08-02 14:36 ` Oliver Neukum
2010-08-02 15:07   ` Alan Stern
2010-08-02 23:47 ` patch "USB: usb-storage: implement autosuspend" added to gregkh-2.6 tree gregkh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox