# HG changeset patch # User Heiko Schlittermann # Date 1288304586 -7200 # Node ID 24d57a2e8df70b252f81b0538fa1617ef6e201f5 # Parent a61b92c603672c8b432afe0bf01b7e0a13bbf9b5# Parent 06bffc9d8977b5e3b664ff764aac997d58802422 merged from stable diff -r a61b92c60367 -r 24d57a2e8df7 is --- a/is Sun Jan 31 23:58:01 2010 +0100 +++ b/is Fri Oct 29 00:23:06 2010 +0200 @@ -45,15 +45,14 @@ do "$src/info/devices"; my %devices = %$VAR1; - #SI::ptable::restore(%devices); - #SI::ptable::mkfs(%devices); - #SI::lvm::pvcreate(%devices); - #SI::lvm::vgcfgrestore("$src/lvm/vg.*", %devices); - #SI::lvm::mkfs(%devices); - #SI::dumper::restore("$src/dump/*", %devices); + SI::ptable::restore(%devices); + SI::ptable::mkfs(%devices); + SI::lvm::pvcreate(%devices); + SI::lvm::vgcfgrestore("$src/lvm/vg.*", %devices); + SI::lvm::mkfs(%devices); + SI::dumper::restore("$src/dump/*", %devices); SI::grub::restore(%devices); - exit; die Dumper \%devices; diff -r a61b92c60367 -r 24d57a2e8df7 lib/SI/dumper.pm --- a/lib/SI/dumper.pm Sun Jan 31 23:58:01 2010 +0100 +++ b/lib/SI/dumper.pm Fri Oct 29 00:23:06 2010 +0200 @@ -10,6 +10,7 @@ sub dump($\%) { my ($file, $devs) = @_; + my $dumpdates = dirname($file) . "/dumpdates"; foreach my $volume ( map { { name => $_, %{ $devs->{volume}{$_} } } } @@ -21,7 +22,7 @@ verbose("dumping volume $volume->{name}"); my $dumpdev = $volume->{name}; my $of = sprintf $file, basename($volume->{name}); - run("dump -0 -z -f $of $dumpdev"); + run("dump -D $dumpdates -u -0 -z -f $of $dumpdev"); verbose("\n"); } } @@ -30,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 @@ -47,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); } diff -r a61b92c60367 -r 24d57a2e8df7 lib/SI/grub.pm --- a/lib/SI/grub.pm Sun Jan 31 23:58:01 2010 +0100 +++ b/lib/SI/grub.pm Fri Oct 29 00:23:06 2010 +0200 @@ -58,7 +58,8 @@ run("chroot $tmpdir grub-mkdevicemap"); run("chroot $tmpdir /usr/sbin/grub-install '(hd0)'"); - #system("/bin/bash --login"); + system("/bin/bash --login") + if $ENV{_SHELL}; }; if ($@) { warn "** EVAL: $@\n"; diff -r a61b92c60367 -r 24d57a2e8df7 si --- a/si Sun Jan 31 23:58:01 2010 +0100 +++ b/si Fri Oct 29 00:23:06 2010 +0200 @@ -45,10 +45,9 @@ $dir =~ s/\/+/\//g; rmtree($dir); - mkpath(map { "$dir/$_" } qw(info ptable lvm blkid mbr dump), - { verbose => 1 }); + mkpath([map { "$dir/$_" } qw(info ptable lvm blkid mbr dump)]); - warn grep { -l && readlink =~ /\/.*-$sys_id$/ } glob("$opt_base"); + #print grep { -l && readlink =~ /\/.*-$sys_id$/ } glob("$opt_base"); SI::ptable::volumes("$dir/ptable/%s", %devices); die Dumper \%devices if $opt_exit =~ /ptable/;