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]>
signature.asc
Description: OpenPGP digital signature
