• Stefan Hajnoczi's avatar
    blockjob: add block_job_defer_to_main_loop() · dec7d421
    Stefan Hajnoczi authored
    Block jobs will run in the BlockDriverState's AioContext, which may not
    always be the QEMU main loop.
    
    There are some block layer APIs that are either not thread-safe or risk
    lock ordering problems.  This includes bdrv_unref(), bdrv_close(), and
    anything that calls bdrv_drain_all().
    
    The block_job_defer_to_main_loop() API allows a block job to schedule a
    function to run in the main loop with the BlockDriverState AioContext
    held.
    
    This function will be used to perform cleanup and backing chain
    manipulations in block jobs.
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
    Message-id: 1413889440-32577-6-git-send-email-stefanha@redhat.com
    dec7d421
blockjob.h 9.84 KB