• K
    block: Attach bs->file only during .bdrv_open() · 4e4bf5c4
    Kevin Wolf 提交于
    The way that attaching bs->file worked was a bit unusual in that it was
    the only child that would be attached to a node which is not opened yet.
    Because of this, the block layer couldn't know yet which permissions the
    driver would eventually need.
    
    This patch moves the point where bs->file is attached to the beginning
    of the individual .bdrv_open() implementations, so drivers already know
    what they are going to do with the child. This is also more consistent
    with how driver-specific children work.
    
    For a moment, bdrv_open() gets its own BdrvChild to perform image
    probing, but instead of directly assigning this BdrvChild to the BDS, it
    becomes a temporary one and the node name is passed as an option to the
    drivers, so that they can simply use bdrv_open_child() to create another
    reference for their own use.
    
    This duplicated child for (the not opened yet) bs is not the final
    state, a follow-up patch will change the image probing code to use a
    BlockBackend, which is completely independent of bs.
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    Reviewed-by: NMax Reitz <mreitz@redhat.com>
    4e4bf5c4
raw-format.c 14.0 KB