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
Show replies by date
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