VirtualBox

Ticket #10556 (new defect)

Opened 2 years ago

Deleting snapshot gets suddenly interrupted + doesn't check for disk space + doesn't cleanup after fail

Reported by: matteosistisette Owned by:
Priority: critical Component: virtual disk
Version: VirtualBox 4.1.14 Keywords:
Cc: Guest type: Windows
Host type: Linux

Description

There are at least 3 issues here, but since I don't know to which extent they are related, I report them together as they happened.

I'm sorry for the long report but this really NEEDS to be fixed because it is very, very critical

I had a VM with 2 snapshots (+ the current state), like this:

-+--Snapshot A

| +--+--Snapshot B

| +----Current State

From the guest's point of view, the VM's disk had a total space of 40GB of which 30 were used.

In the host, the original vdi file (corresponding to snapshot A) was about 8 GB in size, and the vdi file corresponding to snapshot B was about 22 GB in size. The vdi file corresponding to the current state I cannot tell, but it couldn't be very big because I hadn't written nor deleted much data since the last snapshot.

The machine was turned off.

  1. I deleted (or tried to delete) Snapshot B.

When the progress bar was at about 30%, the dialog with the progress bar suddenly disappeared, without an error message or anything. As if it had suddenly completed despite apparently being only at 30%.

Only that the snapshot was still there.

  1. In the hope that data had not been corrupted, I simply deleted the snapshot AGAIN. I forgot to check for disk space, but the VirtualBox Manager should, well, MUST check that enough disk space is available before starting such an operation. Here's the second issue

=> the host disk got full (it is about 50GB) during the snapshot deletion and the operation failed (V_ERR_DISKFULL or something like that). Available disk space should have been checked BEFORE starting the merge operation.

  1. After this failure, not one byte was cleaned up. The vdi file corresponding to the current state is now about 23 GB in size.

So I guess the merging is done in-place into the image belonging to the later snapshot.

After the disaster, I could boot the VM succesfully (which was a pleasant surprise), so I guess that even if the merging is done in-place it is done somehow in a safe way (this makes sense, otherwise you wouldn't do it in-place, would you?); but if so, then it should be possible, after such a failure, to clean up the garbage that has been left in the later differencing image.

(later I got an error when I tried to delete some files from the guest hard disk, because the host disk was full and I didn't realise that having differencing images, deleting was actually adding more data)

Unless the differencing image actually _is_ screwed up, just not enough to prevent the VM from booting?

Note: See TracTickets for help on using tickets.

www.oracle.com
ContactPrivacy policyTerms of Use