+ $class->lock_config($vmid, sub {
+ my $conf = $class->load_config($vmid);
+ $snap = $conf->{snapshots}->{$snapname};
+ die "snapshot '$snapname' does not exist\n" if !defined($snap);
+
+ # remove parent refs
+ &$unlink_parent($conf, $snap->{parent});
+ foreach my $sn (keys %{$conf->{snapshots}}) {
+ next if $sn eq $snapname;
+ &$unlink_parent($conf->{snapshots}->{$sn}, $snap->{parent});
+ }
+
+
+ delete $conf->{snapshots}->{$snapname};
+ delete $conf->{lock};
+ foreach my $volid (@$unused) {
+ $class->add_unused_volume($conf, $volid);
+ }
+
+ $class->write_config($vmid, $conf);
+ });