diff -r 38af4add892a -r 06bffc9d8977 lib/SI/dumper.pm --- a/lib/SI/dumper.pm Mon Feb 01 00:07:30 2010 +0100 +++ b/lib/SI/dumper.pm Mon Feb 01 00:27:40 2010 +0100 @@ -31,7 +31,7 @@ my @dumps = glob(shift); my $devs = shift; - my $tmpdir = tempdir (CLEANUP => 1); + my $tmpdir = tempdir (CLEANUP => 0); foreach my $dump (@dumps) { # suppose it's gzipped @@ -48,15 +48,20 @@ verbose("restore $dump -> $dev : $fs\n"); run("mount -t $fs $dev $tmpdir"); - my $pid = fork or do { - open(STDIN, $dump) or die "Can't open $dump as STDIN: $!\n"; - chdir $tmpdir or die "Can't chdir to $tmpdir: $!\n"; - exec restore => "-orf-"; - die "Can't exec restore: $!\n"; + + eval { + my $pid = fork or do { + open(STDIN, $dump) or die "Can't open $dump as STDIN: $!\n"; + chdir $tmpdir or die "Can't chdir to $tmpdir: $!\n"; + exec restore => "-orf-"; + die "Can't exec restore: $!\n"; + }; + waitpid($pid, 0); }; - waitpid($pid, 0); run("umount $tmpdir"); + die $@ if $@; } + rmdir($tmpdir); }