diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2007-05-04 11:52:20 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-07-12 19:29:47 -0400 |
commit | 0458d5b4c9cc4ca0f62625d0144ddc4b4bc97a3c (patch) | |
tree | 8b1fcb4f063ef4aa6f2e3cd41a60d986a1e432d4 /drivers/usb/storage/usb.c | |
parent | ce7cd137fced114d49178b73d468b82096a107fb (diff) |
USB: add USB-Persist facility
This patch (as886) adds the controversial USB-persist facility,
allowing USB devices to persist across a power loss during system
suspend.
The facility is controlled by a new Kconfig option (with appropriate
warnings about the potential dangers); when the option is off the
behavior will remain the same as it is now. But when the option is
on, people will be able to use suspend-to-disk and keep their USB
filesystems intact -- something particularly valuable for small
machines where the root filesystem is on a USB device!
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/storage/usb.c')
-rw-r--r-- | drivers/usb/storage/usb.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c index df5dc186aef5..be4cd8fe4ce6 100644 --- a/drivers/usb/storage/usb.c +++ b/drivers/usb/storage/usb.c | |||
@@ -236,7 +236,7 @@ static void storage_pre_reset(struct usb_interface *iface) | |||
236 | mutex_lock(&us->dev_mutex); | 236 | mutex_lock(&us->dev_mutex); |
237 | } | 237 | } |
238 | 238 | ||
239 | static void storage_post_reset(struct usb_interface *iface) | 239 | static void storage_post_reset(struct usb_interface *iface, int reset_resume) |
240 | { | 240 | { |
241 | struct us_data *us = usb_get_intfdata(iface); | 241 | struct us_data *us = usb_get_intfdata(iface); |
242 | 242 | ||
@@ -249,7 +249,11 @@ static void storage_post_reset(struct usb_interface *iface) | |||
249 | 249 | ||
250 | /* FIXME: Notify the subdrivers that they need to reinitialize | 250 | /* FIXME: Notify the subdrivers that they need to reinitialize |
251 | * the device */ | 251 | * the device */ |
252 | mutex_unlock(&us->dev_mutex); | 252 | |
253 | /* If this is a reset-resume then the pre_reset routine wasn't | ||
254 | * called, so we don't need to unlock the mutex. */ | ||
255 | if (!reset_resume) | ||
256 | mutex_unlock(&us->dev_mutex); | ||
253 | } | 257 | } |
254 | 258 | ||
255 | /* | 259 | /* |