Matthew Booth
2010-Oct-11 10:49 UTC
[Libguestfs] [PATCH 1/2] Remove incompletely transferred libvirt volumes
If a user interrupted transfer of data to a libvirt volume, the incomplete data was left in place. This patch causes the volume to be removed. Fixes RHBZ#616728 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index 029e4e2..943b95a 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -21,6 +21,7 @@ use warnings; package Sys::VirtV2V::Target::LibVirt::Vol; use POSIX; +use Sys::Virt; use Sys::VirtV2V::Util qw(user_message); @@ -143,6 +144,17 @@ sub close delete($self->{fd}); } +sub DESTROY +{ + my $self = shift; + + # Check if the volume has been opened, but not closed + return unless (exists($self->{fd})); + + # Assume the volume is incomplete and delete it + $self->{vol}->delete(Sys::Virt::StorageVol::DELETE_NORMAL); +} + package Sys::VirtV2V::Target::LibVirt; use Sys::Virt; -- 1.7.2.3
Matthew Booth
2010-Oct-11 10:49 UTC
[Libguestfs] [PATCH 2/2] exit instead of die() on signal
Net::SSL catches die() and will print an untidy confess() if the signal is received in Net::SSL::read(). exit(1) achieves the same goal without triggering the confess(). --- v2v/virt-v2v.pl | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/v2v/virt-v2v.pl b/v2v/virt-v2v.pl index 93bfcd5..c72647c 100755 --- a/v2v/virt-v2v.pl +++ b/v2v/virt-v2v.pl @@ -414,7 +414,8 @@ END { sub signal_exit { $g->close() if (defined($g)); - die(user_message(__x("Received signal {sig}. Exiting.", sig => shift))); + warn user_message(__x("Received signal {sig}. Exiting.", sig => shift)); + exit(1); } # Inspect the guest's storage. Returns an OS hashref as returned by -- 1.7.2.3