diff -r 4e3753b998a9 -r fd87c1e3b451 SI/dumper.pm --- 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");