On Tue, Dec 06, 2005 at 02:28:01PM +0200, Jari Aalto wrote:
> 
> Following my other posts: Here is install report from another machine,
> with exactly the same results. I've tried to reproduce as much debug
> as I know. Let me know how can I help more.

Thanks, very clear report.

> /dev/hda7       /               ext3,auto    defaults,errors=remount-ro,noat\

Bingo!  We know about lists of file system types, we know about the 'auto'
file system type, but you're the first to actually test the combination of
the two.

Could you try the attached patch?  Note that the patch is relative to 
development;
there's an offset when applying to the debian version.

Regards,
Erik
=== modified file 'perl/Plan.pm'
--- perl/Plan.pm
+++ perl/Plan.pm
@@ -614,41 +614,43 @@
 
        addDevicePlan ($actions, $abd, []);
 
+       #
+       # Do the file system type.  This may be a list of types, to be tried
+       # in turn, and the list can contain 'auto': look at the block device
+       # to determine type.
+       #
        my $fsType = $root->type;
-
-       if ($fsType eq "auto") {
-               #
-               # Let's guess the fstype using /sbin/blkid.
-               #
-               my ($rc, $guess) = Base::runCmd (missingOk => 1,
-                       cmd => ['/sbin/blkid', $rootDevName]);
-               if (!defined ($guess)) {
-                       my $origin = $root->origin;
-                       Base::fatal ("the command /sbin/blkid is not found, so 
file system type 'auto' for '$rootDevName' is not supported; use an explicit 
file system type ($origin)");
-               }
-               if (@{$guess} != 1) {
-                       my $origin = $root->origin;
-                       Base::fatal ("the command /sbin/blkid $rootDevName did 
not give exactly one line of output, so file system type 'auto' for 
'$rootDevName' is not supported; use an explicit file system type ($origin)");
-               }
-
-               if (${$guess}[0] !~ /\sTYPE="([a-zA-Z0-9]+)"/) {
-                       my $origin = $root->origin;
-                       Base::fatal ("the command /sbin/blkid $rootDevName did 
not have TYPE=\"fstype\" in the output, so file system type 'auto' for 
'$rootDevName' is not supported; use an explicit file system type ($origin)");
-               }
-               $fsType = $1;
-               Base::debug ("blkid $rootDevName => $fsType");
-       }
-
-       #
-       # Actually, fsType may be a comma-separated list of types,
-       # to be tried in turn
-       #
        my @types = grep {$_ ne ''} split (',', $fsType);
        if (@types == 0) {
                my $origin = $root->origin;
                Base::fatal ("no file system type given for '$rootDevName'; use 
an explicit file system type ($origin)");
        }
-       ModProbe::addModules ($actions, [ @types ]);
+
+       for my $type (@types) {
+               if ($type eq "auto") {
+                       #
+                       # Let's guess the fstype using /sbin/blkid.
+                       #
+                       my ($rc, $guess) = Base::runCmd (missingOk => 1,
+                               cmd => ['/sbin/blkid', $rootDevName]);
+                       if (!defined ($guess)) {
+                               my $origin = $root->origin;
+                               Base::fatal ("the command /sbin/blkid is not 
found, so file system type 'auto' for '$rootDevName' is not supported; use an 
explicit file system type ($origin)");
+                       }
+                       if (@{$guess} != 1) {
+                               my $origin = $root->origin;
+                               Base::fatal ("the command /sbin/blkid 
$rootDevName did not give exactly one line of output, so file system type 
'auto' for '$rootDevName' is not supported; use an explicit file system type 
($origin)");
+                       }
+                       if (${$guess}[0] !~ /\sTYPE="([a-zA-Z0-9]+)"/) {
+                               my $origin = $root->origin;
+                               Base::fatal ("the command /sbin/blkid 
$rootDevName did not have TYPE=\"fstype\" in the output, so file system type 
'auto' for '$rootDevName' is not supported; use an explicit file system type 
($origin)");
+                       }
+                       $type = $1;
+                       Base::debug ("blkid $rootDevName => $fsType");
+               }
+
+               ModProbe::addModules ($actions, [ $type ]);
+       }
 
        my $yspecial = $abd->yspecial();
        my $opts = $root->opts->cmdLineVersion();

Reply via email to