SI/system.pm
branchstable
changeset 19 d12753b246fd
parent 17 d4942418a9ea
child 26 39421a9700c5
--- 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: