• D
    block: prevent race/cleanup · 12c2bdb2
    Derek Basehore 提交于
    Remove a race condition which causes a warning in disk_clear_events.  This
    is a race between disk_clear_events() and disk_flush_events().
    ev->clearing will be altered by disk_flush_events() even though we are
    blocking event checking through disk_flush_events().  If this happens
    after ev->clearing was cleared for disk_clear_events(), this can cause the
    WARN_ON_ONCE() in that function to be triggered.
    
    This change also has disk_clear_events() not go through a workqueue.
    Since we have to wait for the work to complete, we should just call the
    function directly.  Also, since this work cannot be put on a freezable
    workqueue, it will have to contend with increased demand, so calling the
    function directly avoids this.
    
    [akpm@linux-foundation.org: fix spello in comment]
    Signed-off-by: NDerek Basehore <dbasehore@chromium.org>
    Cc: Mandeep Singh Baines <msb@chromium.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    12c2bdb2
genhd.c 43.8 KB