• Alan Stern's avatar
    Block: use a freezable workqueue for disk-event polling · 62d3c543
    Alan Stern authored
    This patch (as1519) fixes a bug in the block layer's disk-events
    polling.  The polling is done by a work routine queued on the
    system_nrt_wq workqueue.  Since that workqueue isn't freezable, the
    polling continues even in the middle of a system sleep transition.
    
    Obviously, polling a suspended drive for media changes and such isn't
    a good thing to do; in the case of USB mass-storage devices it can
    lead to real problems requiring device resets and even re-enumeration.
    
    The patch fixes things by creating a new system-wide, non-reentrant,
    freezable workqueue and using it for disk-events polling.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    CC: <stable@kernel.org>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    62d3c543
workqueue.c 104 KB