• Jeff Moyer's avatar
    blk-flush: move the queue kick into · e67b77c7
    Jeff Moyer authored
    A dm-multipath user reported[1] a problem when trying to boot
    a kernel with commit 4853abaa
    (block: fix flush machinery for stacking drivers with differring
    flush flags) applied.  It turns out that an empty flush request
    can be sent into blk_insert_flush.  When the BUG_ON was fixed
    to allow for this, I/O on the underlying device would stall.  The
    reason is that blk_insert_cloned_request does not kick the queue.
    In the aforementioned commit, I had added a special case to
    kick the queue if data was sent down but the queue flags did
    not require a flush.  A better solution is to push the queue
    kick up into blk_insert_cloned_request.
    
    This patch, along with a follow-on which fixes the BUG_ON, fixes
    the issue reported.
    
    [1] http://www.redhat.com/archives/dm-devel/2011-September/msg00154.html
    
    Reported-by: default avatarChristophe Saout <christophe@saout.de>
    Signed-off-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    
    Stable note: 3.1
    Cc...
    e67b77c7
blk-flush.c 13.1 KB