[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Libguestfs] [PATCH] Target::LibVirt: Don't truncate a volume when opening it



perl's '>' open mode truncates by default, and will create a new file if
necessary. We don't want to truncate an existing volume when writing to it, and
it's an error if the volume doesn't already exist. Use sysopen to be explicit
about this.
---
 lib/Sys/VirtV2V/Target/LibVirt.pm |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm
index c8802ac..99a1ad2 100644
--- a/lib/Sys/VirtV2V/Target/LibVirt.pm
+++ b/lib/Sys/VirtV2V/Target/LibVirt.pm
@@ -20,6 +20,8 @@ use warnings;
 
 package Sys::VirtV2V::Target::LibVirt::Vol;
 
+use POSIX;
+
 use Sys::VirtV2V::UserMessage qw(user_message);
 
 sub _new
@@ -106,7 +108,9 @@ sub open
     my $self = shift;
 
     my $path = $self->get_path();
-    open(my $fd, '>', $path)
+
+    # We want to open the existing volume without truncating it
+    sysopen(my $fd, $path, O_WRONLY)
         or die(user_message(__x("Error opening storage volume {path} ".
                                 "for writing: {error}", error => $!)));
 
-- 
1.6.6.1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]