• Stefan Hajnoczi's avatar
    block: drop bs_snapshots global variable · 29d78271
    Stefan Hajnoczi authored
    
    
    The bs_snapshots global variable points to the BlockDriverState which
    will be used to save vmstate.  This is really a savevm.c concept but was
    moved into block.c:bdrv_snapshots() when it became clear that hotplug
    could result in a dangling pointer.
    
    While auditing the block layer's global state I came upon bs_snapshots
    and realized that a variable is not necessary here.  Simply find the
    first BlockDriverState capable of internal snapshots each time this is
    needed.
    
    The behavior of bdrv_snapshots() is preserved across hotplug because new
    drives are always appended to the bdrv_states list.  This means that
    calling the new find_vmstate_bs() function is idempotent - it returns
    the same BlockDriverState unless it was hot-unplugged.
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarWenchao Xia <xiawenc@linux.vnet.ibm.com>
    Signed-off-by: default avatarWenchao Xia <xiawenc@linux.vnet.ibm.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    29d78271
savevm.c 64.5 KB