On 17.09.19 13:04, Kevin Wolf wrote:
> Nodes involved in internal snapshots were those that were returned by
> bdrv_next(), inserted and not read-only. bdrv_next() in turn returns all
> nodes that are either the root node of a BlockBackend or monitor-owned
> nodes.
> 
> With the typical -drive use, this worked well enough. However, in the
> typical -blockdev case, the user defines one node per option, making all
> nodes monitor-owned nodes. This includes protocol nodes etc. which often
> are not snapshottable, so "savevm" only returns an error.
> 
> Change the conditions so that internal snapshot still include all nodes
> that have a BlockBackend attached (we definitely want to snapshot
> anything attached to a guest device and probably also the built-in NBD
> server; snapshotting block job BlockBackends is more of an accident, but
> a preexisting one), but other monitor-owned nodes are only included if
> they have no parents.
> 
> This makes internal snapshots usable again with typical -blockdev
> configurations.
> 
> Cc: [email protected]
> Signed-off-by: Kevin Wolf <[email protected]>
> ---
>  block/snapshot.c | 26 +++++++++++++++++++-------
>  1 file changed, 19 insertions(+), 7 deletions(-)

Reviewed-by: Max Reitz <[email protected]>

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to