• Jens Axboe's avatar
    blk-mq: fix race with timeouts and requeue events · 87ee7b11
    Jens Axboe authored
    If a requeue event races with a timeout, we can get into the
    situation where we attempt to complete a request from the
    timeout handler when it's not start anymore. This causes a crash.
    So have the timeout handler check that REQ_ATOM_STARTED is still
    set on the request - if not, we ignore the event. If this happens,
    the request has now been marked as complete. As a consequence, we
    need to ensure to clear REQ_ATOM_COMPLETE in blk_mq_start_request(),
    as to maintain proper request state.
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    87ee7b11
blk-mq.c 36.9 KB