Skip to content
  • Fam Zheng's avatar
    block: Replace in_use with operation blocker · 3718d8ab
    Fam Zheng authored
    
    
    This drops BlockDriverState.in_use with op_blockers:
    
      - Call bdrv_op_block_all in place of bdrv_set_in_use(bs, 1).
    
      - Call bdrv_op_unblock_all in place of bdrv_set_in_use(bs, 0).
    
      - Check bdrv_op_is_blocked() in place of bdrv_in_use(bs).
    
        The specific types are used, e.g. in place of starting block backup,
        bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_BACKUP, ...).
    
        There is one exception in block_job_create, where
        bdrv_op_blocker_is_empty() is used, because we don't know the operation
        type here. This doesn't matter because in a few commits away we will drop
        the check and move it to callers that _do_ know the type.
    
      - Check bdrv_op_blocker_is_empty() in place of assert(!bs->in_use).
    
    Note: there is only bdrv_op_block_all and bdrv_op_unblock_all callers at
    this moment. So although the checks are specific to op types, this
    changes can still be seen as identical logic with previously with
    in_use. The difference is error message are improved because of blocker
    error info.
    
    Signed-off-by: default avatarFam Zheng <famz@redhat.com>
    Reviewed-by: default avatarJeff Cody <jcody@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    3718d8ab