From: Dietmar Maurer Date: Fri, 10 Feb 2012 06:47:46 +0000 (+0100) Subject: move test for block device to vmtar.c X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=3e21388903fb50af53b496d7302289d599f521fa;p=qemu-server.git move test for block device to vmtar.c --- diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm index 6e5bee1f..aee79da4 100644 --- a/PVE/VZDump/QemuServer.pm +++ b/PVE/VZDump/QemuServer.pm @@ -382,15 +382,8 @@ sub archive { my $fh; - my $sparse = ''; - - # no sparse file scan for block devices - # no sparse file scan when we use compression - # but we enable it for files - my @filea = ($conffile, 'qemu-server.conf'); # always first file in tar foreach my $di (@{$task->{disks}}) { - $sparse = '-s' if !$comp && $di->{type} eq 'file'; if ($di->{type} eq 'block' || $di->{type} eq 'file') { push @filea, $di->{snappath}, $di->{filename}; } else { @@ -400,6 +393,9 @@ sub archive { my $files = join (' ', map { "'$_'" } @filea); + # no sparse file scan when we use compression + my $sparse = $comp ? '' : '-s'; + my $cmd = "/usr/lib/qemu-server/vmtar $sparse $files"; my $bwl = $opts->{bwlimit}*1024; # bandwidth limit for cstream $cmd .= "|cstream -t $bwl" if $opts->{bwlimit}; diff --git a/vmtar.c b/vmtar.c index b1d84841..6b34a88b 100644 --- a/vmtar.c +++ b/vmtar.c @@ -530,7 +530,7 @@ main (int argc, char **argv) time_t ctime = fs.st_mtime; struct sp_array *ma = sparray_new(); - if (sparse) { + if (sparse && !S_ISBLK(fs.st_mode)) { if (!scan_sparse_file (fd, ma)) { fprintf (stderr, "scanning '%s' failed\n", source); exit (-1);