• Kevin Wolf's avatar
    block: Allow wait_serialising_requests() at any point · 6460440f
    Kevin Wolf authored
    We can only have a single wait_serialising_requests() call per request
    because otherwise we can run into deadlocks where requests are waiting
    for each other. The same is true when wait_serialising_requests() is not
    at the very beginning of a request, so that other requests can be issued
    between the start of the tracking and wait_serialising_requests().
    Fix this by changing wait_serialising_requests() to ignore requests that
    are already (directly or indirectly) waiting for the calling request.
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
    Reviewed-by: default avatarBenoit Canet <benoit@irqsave.net>
block_int.h 19.6 KB