Skip to content
  • Seth Forshee's avatar
    usb_storage: Don't freeze in usb-stor-scan · f02fe890
    Seth Forshee authored
    
    
    Scanning cannot be run during suspend or hibernation, but if
    usb-stor-scan freezes another thread waiting on scanning to
    complete may fail to freeze.
    
    However, if usb-stor-scan is left freezable without ever actually
    freezing then the freezer will wait on it to exit, and threads
    waiting for scanning to finish will no longer be blocked. One
    problem with this approach is that usb-stor-scan has a delay to
    wait for devices to settle (which is currently the only point where
    it can freeze). To work around this we can request that the freezer
    send a fake signal when freezing, then use interruptible sleep to
    wake the thread early when freezing happens.
    
    To make this happen, the following changes are made to
    usb-stor-scan:
    
     * Use set_freezable_with_signal() instead of set_freezable() to
       request a fake signal when freezing
    
     * Use wait_event_interruptible_timeout() instead of
       wait_event_freezable_timeout() to avoid freezing
    
    Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    f02fe890