--- a/SI/system.pm Tue Jan 19 23:48:10 2010 +0100
+++ b/SI/system.pm Wed Jan 20 21:42:28 2010 +0100
@@ -20,23 +20,38 @@
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} }
+ 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;