Skip to content
Snippets Groups Projects
  • Hanna Reitz's avatar
    d5f8d79c
    block: Make bdrv_child_get_parent_aio_context I/O · d5f8d79c
    Hanna Reitz authored
    
    We want to use bdrv_child_get_parent_aio_context() from
    bdrv_parent_drained_{begin,end}_single(), both of which are "I/O or GS"
    functions.
    
    Prior to 3ed4f708, all the implementations were I/O code anyway.
    3ed4f708 has put block jobs' AioContext field under the job mutex, so
    to make child_job_get_parent_aio_context() work in an I/O context, we
    need to take that lock there.
    
    Furthermore, blk_root_get_parent_aio_context() is not marked as
    anything, but is safe to run in an I/O context, so mark it that way now.
    (blk_get_aio_context() is an I/O code function.)
    
    With that done, all implementations explicitly are I/O code, so we can
    mark bdrv_child_get_parent_aio_context() as I/O code, too, so callers
    know it is safe to run from both GS and I/O contexts.
    
    Signed-off-by: default avatarHanna Reitz <hreitz@redhat.com>
    Message-Id: <20221107151321.211175-2-hreitz@redhat.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    d5f8d79c
    History
    block: Make bdrv_child_get_parent_aio_context I/O
    Hanna Reitz authored
    
    We want to use bdrv_child_get_parent_aio_context() from
    bdrv_parent_drained_{begin,end}_single(), both of which are "I/O or GS"
    functions.
    
    Prior to 3ed4f708, all the implementations were I/O code anyway.
    3ed4f708 has put block jobs' AioContext field under the job mutex, so
    to make child_job_get_parent_aio_context() work in an I/O context, we
    need to take that lock there.
    
    Furthermore, blk_root_get_parent_aio_context() is not marked as
    anything, but is safe to run in an I/O context, so mark it that way now.
    (blk_get_aio_context() is an I/O code function.)
    
    With that done, all implementations explicitly are I/O code, so we can
    mark bdrv_child_get_parent_aio_context() as I/O code, too, so callers
    know it is safe to run from both GS and I/O contexts.
    
    Signed-off-by: default avatarHanna Reitz <hreitz@redhat.com>
    Message-Id: <20221107151321.211175-2-hreitz@redhat.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>