--- a/SI/dumper.pm Tue Jan 19 14:49:43 2010 +0100
+++ b/SI/dumper.pm Tue Jan 19 23:45:54 2010 +0100
@@ -6,34 +6,17 @@
use SI::tools;
use File::Basename;
-my @cleanup;
-END {
- #map { eval { run("lvchange -an $_ 2>/dev/null") } } @cleanup;
- #map { eval { run("lvremove -ff $_ 2>/dev/null") } } @cleanup;
-}
-
sub dump($\%) {
my ($file, $devs) = @_;
foreach my $volume ( map { { name => $_, %{$devs->{volume}{$_}}}} keys %{$devs->{volume}}) {
next if !defined $volume->{type} or $volume->{type} !~ /^ext/i;
+ system("fsck -f -C0 $volume->{name}");
+ die "ERR: fsck failed\n" if $? > 2;
+
verbose("dumping volume $volume->{name}");
my $dumpdev = $volume->{name};
-
-# if ($volume->{origin} =~ /lvm/i) {
-# verbose("(lvm)");
-# my ($vg, $lv) = `lvdisplay -c $volume->{name}` =~ /\s*\/dev\/(.*?)\/(.*?):/;
-# my $snap = "snap$$";
-# push @cleanup, "$vg/$lv";
-#
-# #eval {
-# # run("lvcreate -s -L 1G -n snap$$ $vg/$lv 2>/dev/null");
-# #};
-# if ($@) { warn "Can't create snapshot\n" }
-# else { $dumpdev = "/dev/$vg/$snap$$" };
-# }
-
my $of = sprintf $file, basename($volume->{name});
run("dump -0 -z -f $of $dumpdev");
verbose("\n");