diff -r c9575527c96d -r d12753b246fd SI/system.pm --- a/SI/system.pm Tue Jan 19 23:51:00 2010 +0100 +++ b/SI/system.pm Wed Jan 20 08:41:48 2010 +0100 @@ -20,25 +20,34 @@ sub hostname(\%) { my $devs = shift; my $mnt = tempdir(CLEANUP => 1); - my $r; + my $h; - foreach my $fs ( - grep { $devs->{volume}{$_}{type} =~ /^ext/i } - grep { exists $devs->{volume}{$_}{type} } - keys %{ $devs->{volume} } - ) + foreach my $fs (grep { exists $devs->{volume}{$_}{type} and $devs->{volume}{$_}{type} =~ /^ext/i } @{$devs->{volumes}}) { run("mount -r $fs $mnt"); if (-f "$mnt/etc/hostname") { - die "ERR: found 2nd hostname" if defined $r; - chomp($r = cat("$mnt/etc/hostname")); + chomp($h = cat("$mnt/etc/hostname")); } run("umount $mnt"); + return $h if defined $h; } - return $r; + return $h; } +sub fsck(\%) { + my $devs = shift; + + foreach my $v ( grep { exists $devs->{volume}{type} } keys %{$devs->{volume}} ) { + my $volume = $devs->{volume}{$v}; + next if $volume->{type} !~ /^ext/i; + + system("fsck -C0 $v"); + die "ERR: fsck failed\n" if $? > 2; + } +} + + 1; # vim:sts=4 sw=4 aw ai si: