Re: Error mounting root fs on 72:01 using Promise FastTrak TX2000(PDC20271)

From: Walt H
Date: Mon Dec 22 2003 - 21:08:44 EST


Nicklas Bondesson wrote:
> Actually the 2.4.18 seems to be the only one working. I'm sure someone out
> there have the proper fix for this. Who should I talk to in order to get
> this fixed? I'm willing to help out in any way I can.
>
> /Nicke

Well, not really sure. I thought Alan Cox did the original pdcraid.c for linux
some time back, but it really hasn't seen many changes. There were two general
Linux changes that took place back around 2.4.22 that might affect you. The
first, was the addition of the new Promise IDE driver, which you've got
configured. The second, has to do with how Linux reports the geometry of a
drive. This change affected my setup which is why I wrote the patch for the
pdcraid driver. If your system makes it all the way through kernel booting
(which it seems to do), but can't mount the filesystem on the raid, it seems to
indicate the latter change affecting you also. The only other thing I can think
of, is to use my patch (attached) with patch -p1 < pdcraid.patch from your
/usr/src/linux and make sure that you've got both Promise drivers compiled in
your kernel. Recompile and see what happens. Outside of that, I'm stuck. Good luck,

-Walt
--- /usr/src/temp/linux-2.4.21-xfs/linux/drivers/ide/raid/pdcraid.c 2003-12-22 17:59:09.653139067 -0800
+++ linux/drivers/ide/raid/pdcraid.c 2003-07-21 20:47:14.000000000 -0700
@@ -361,7 +361,11 @@
if (ideinfo->sect==0)
return 0;
- lba = (ideinfo->capacity / (ideinfo->head*ideinfo->sect));
- lba = lba * (ideinfo->head*ideinfo->sect);
- lba = lba - ideinfo->sect;
+ if (ideinfo->head!=255) {
+ lba = (ideinfo->capacity / (ideinfo->head*ideinfo->sect));
+ lba = lba * (ideinfo->head*ideinfo->sect);
+ lba = lba - ideinfo->sect; }
+ else {
+ lba = ideinfo->capacity - ideinfo->sect;
+ }

return lba;