--- 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: