• Alan Stern's avatar
    usb-storage: Add quirk to defeat Kindle's automatic unload · 546aa0e4
    Alan Stern authored
    Matthias reports that the Amazon Kindle automatically removes its
    emulated media if it doesn't receive another SCSI command within about
    one second after a SYNCHRONIZE CACHE.  It does so even when the host
    has sent a PREVENT MEDIUM REMOVAL command.  The reason for this
    behavior isn't clear, although it's not hard to make some guesses.
    
    At any rate, the results can be unexpected for anyone who tries to
    access the Kindle in an unusual fashion, and in theory they can lead
    to data loss (for example, if one file is closed and synchronized
    while other files are still in the middle of being written).
    
    To avoid such problems, this patch creates a new usb-storage quirks
    flag telling the driver always to issue a REQUEST SENSE following a
    SYNCHRONIZE CACHE command, and adds an unusual_devs entry for the
    Kindle with the flag set.  This is sufficient to prevent the Kindle
    from doing its automatic unload, without interfering with proper
    operation.
    
    Another possible way to deal with this would be to increase the
    frequency of TEST UNIT READY polling that the kernel normally carries
    out for removable-media storage devices.  However that would increase
    the overall load on the system and it is not as reliable, because the
    user can override the polling interval.  Changing the driver's
    behavior is safer and has minimal overhead.
    
    CC: <stable@vger.kernel.org>
    Reported-and-tested-by: default avatarMatthias Schwarzott <zzam@gentoo.org>
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20210317190654.GA497856@rowland.harvard.eduSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    546aa0e4
transport.c 43.7 KB