aha8 driver bug

I have brand new Seagate Cheetah 36Gb drive, on AHA2940UW controller with latest
Adaptec BIOS. Works like a champ under Win2k and appears to be recognized by RTP
as well. I can see /dev/hd2 and I can run fdisk on it to create partition table.

However, after partition table is created the driver does not recognize partitions
of any type. No matter how many times I reboot or restart driver, /dev/hd2txx never
appears.

Here is some proof:

devb-aha8 -vvvvvv blk verbose &

[1] 577568

Path=0 - AHA-2940

target=0 lun=0 Direct-Access(0) - SEAGATE ST39175LW Rev: 0001
target=1 lun=0 Direct-Access(0) - SEAGATE ST336704LW Rev: 0004
Bmap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0

[1] + Done devb-aha8 -vvvvvv blk ver

fdisk /dev/hd2 show

OS Start End _Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ ( 79) ***** ***** ***** 43012096 21002 MB NO
  2. ------ (—) ----- ----- ----- -------- -----
  3. ------ (—) ----- ----- ----- -------- -----
  4. FAT32 ( 12) 0 ***** ***** 28675962 14001 MB warning

The stars in cylinder fields are due to wrong geometry. If I pass translation to
driver the stars go away but it does not help the problem.

\

devb-aha8 -vvvvvv blk verbose disk translation=255:63:0:1:0 &

[1] 610336

Path=0 - AHA-2940

target=0 lun=0 Direct-Access(0) - SEAGATE ST39175LW Rev: 0001
target=1 lun=0 Direct-Access(0) - SEAGATE ST336704LW Rev: 0004
Bmap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0

[1] + Done devb-aha8 -vvvvvv blk ver

fdisk /dev/hd2 show

OS Start End _Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ ( 79) 1784 4461 2678 43012096 21002 MB NO
  2. ------ (—) ----- ----- ----- -------- -----
  3. ------ (—) ----- ----- ----- -------- -----
  4. FAT32 ( 12) 0 1784 1785 28675962 14001 MB warning

ls /dev/hd*

/dev/hd0 /dev/hd0t12 /dev/hd1 /dev/hd2
/dev/hd0t1 /dev/hd0t7 /dev/hd1t7

Note that another drive (Seagate Barracuda 8Gb) on the same bus works fine.
And the Cheetah drive also works fine in another system with NCR 53C875 controller.
Seems like the aha8 driver is the problem.

I’m using patch A.

uname -a

QNX c773082-a 6.00 2000/10/17-14:59:25edt x86pc x86

  • Igor

And here is another version with “cam verbose” for completeness :slight_smile:

devb-aha8 -vvvvvv blk verbose disk translation=255:63:0:1:0 cam verbose &

[1] 806944

scsi_interpret_sense: path=0, target=2, lun=0, cam_status=4a, scsi_status=0

scsi_interpret_sense: path=0, target=3, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=4, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=5, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=6, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=7, lun=0, cam_status=4a, scsi_status=0
[00] SIM="" HBA=“AHA-2940”
[00,0,0] type=00 ver=02 resp=02 SEAGATE ST39175LW 0001
[00,1,0] type=00 ver=03 resp=02 SEAGATE ST336704LW 0004
Amap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
scsi_interpret_sense: SK_ILLEGAL command 1a in commandbyte
field pointer 3 bit pointer 4
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
scsi_interpret_sense: path=0, target=1, lun=0, cam_status=c4, scsi_status=2
scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
scsi_interpret_sense: SK_ILLEGAL command 1a in commandbyte
field pointer 3 bit pointer 4
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0


Previously, Igor Kovalenko wrote in qdn.public.qnxrtp.os:

I have brand new Seagate Cheetah 36Gb drive, on AHA2940UW controller with latest
Adaptec BIOS. Works like a champ under Win2k and appears to be recognized by RTP
as well. I can see /dev/hd2 and I can run fdisk on it to create partition table.

However, after partition table is created the driver does not recognize partitions
of any type. No matter how many times I reboot or restart driver, /dev/hd2txx never
appears.

Here is some proof:

devb-aha8 -vvvvvv blk verbose &

[1] 577568

Path=0 - AHA-2940

target=0 lun=0 Direct-Access(0) - SEAGATE ST39175LW Rev: 0001
target=1 lun=0 Direct-Access(0) - SEAGATE ST336704LW Rev: 0004
Bmap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0

[1] + Done devb-aha8 -vvvvvv blk ver

fdisk /dev/hd2 show

OS Start End _Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ ( 79) ***** ***** ***** 43012096 21002 MB NO
  2. ------ (—) ----- ----- ----- -------- -----
  3. ------ (—) ----- ----- ----- -------- -----
  4. FAT32 ( 12) 0 ***** ***** 28675962 14001 MB warning

The stars in cylinder fields are due to wrong geometry. If I pass translation to
driver the stars go away but it does not help the problem.

\

devb-aha8 -vvvvvv blk verbose disk translation=255:63:0:1:0 &

[1] 610336

Path=0 - AHA-2940

target=0 lun=0 Direct-Access(0) - SEAGATE ST39175LW Rev: 0001
target=1 lun=0 Direct-Access(0) - SEAGATE ST336704LW Rev: 0004
Bmap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0

[1] + Done devb-aha8 -vvvvvv blk ver

fdisk /dev/hd2 show

OS Start End _Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ ( 79) 1784 4461 2678 43012096 21002 MB NO
  2. ------ (—) ----- ----- ----- -------- -----
  3. ------ (—) ----- ----- ----- -------- -----
  4. FAT32 ( 12) 0 1784 1785 28675962 14001 MB warning

ls /dev/hd*

/dev/hd0 /dev/hd0t12 /dev/hd1 /dev/hd2
/dev/hd0t1 /dev/hd0t7 /dev/hd1t7

Note that another drive (Seagate Barracuda 8Gb) on the same bus works fine.
And the Cheetah drive also works fine in another system with NCR 53C875 controller.
Seems like the aha8 driver is the problem.

I’m using patch A.

uname -a

QNX c773082-a 6.00 2000/10/17-14:59:25edt x86pc x86

  • Igor

Ok, I figured it. Drive geometry indeed and it bit me again after all :slight_smile:
The problem can be fixed by startting driver with ‘translation’ option AND editing partition table. When it is restarted next time, even without ‘translation’ all partitions are recognized.

However, if I restart it without ‘translation’ and edit partition table again, problem will come back on next restart, even with ‘translation’ option.

The bottom line is, the ‘translation’ option MUST be passed to driver before editing partition table or it will be screwed. Trouble is, there is no way to pass options to driver during installation, so I can’t install RTP on that drive. It worked on anothr system because there I use my own installer and I do pass ‘translation’ :slight_smile:

Kevin, you’ve got monkey on your back. Perhaps it makes sense to just change default
number of heads to 255 from 64 if you can’t do anything better.

  • Igor


    Previously, Igor Kovalenko wrote in qdn.public.qnxrtp.os:

And here is another version with “cam verbose” for completeness > :slight_smile:

devb-aha8 -vvvvvv blk verbose disk translation=255:63:0:1:0 cam verbose &

[1] 806944

scsi_interpret_sense: path=0, target=2, lun=0, cam_status=4a, scsi_status=0

scsi_interpret_sense: path=0, target=3, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=4, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=5, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=6, lun=0, cam_status=4a, scsi_status=0
scsi_interpret_sense: path=0, target=7, lun=0, cam_status=4a, scsi_status=0
[00] SIM="" HBA=“AHA-2940”
[00,0,0] type=00 ver=02 resp=02 SEAGATE ST39175LW 0001
[00,1,0] type=00 ver=03 resp=02 SEAGATE ST336704LW 0004
Amap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
scsi_interpret_sense: SK_ILLEGAL command 1a in commandbyte
field pointer 3 bit pointer 4
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
scsi_interpret_sense: path=0, target=1, lun=0, cam_status=c4, scsi_status=2
scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
scsi_interpret_sense: SK_ILLEGAL command 1a in commandbyte
field pointer 3 bit pointer 4
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0


Previously, Igor Kovalenko wrote in qdn.public.qnxrtp.os:
I have brand new Seagate Cheetah 36Gb drive, on AHA2940UW controller with latest
Adaptec BIOS. Works like a champ under Win2k and appears to be recognized by RTP
as well. I can see /dev/hd2 and I can run fdisk on it to create partition table.

However, after partition table is created the driver does not recognize partitions
of any type. No matter how many times I reboot or restart driver, /dev/hd2txx never
appears.

Here is some proof:

devb-aha8 -vvvvvv blk verbose &

[1] 577568

Path=0 - AHA-2940

target=0 lun=0 Direct-Access(0) - SEAGATE ST39175LW Rev: 0001
target=1 lun=0 Direct-Access(0) - SEAGATE ST336704LW Rev: 0004
Bmap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0

[1] + Done devb-aha8 -vvvvvv blk ver

fdisk /dev/hd2 show

OS Start End _Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ ( 79) ***** ***** ***** 43012096 21002 MB NO
  2. ------ (—) ----- ----- ----- -------- -----
  3. ------ (—) ----- ----- ----- -------- -----
  4. FAT32 ( 12) 0 ***** ***** 28675962 14001 MB warning

The stars in cylinder fields are due to wrong geometry. If I pass translation to
driver the stars go away but it does not help the problem.

\

devb-aha8 -vvvvvv blk verbose disk translation=255:63:0:1:0 &

[1] 610336

Path=0 - AHA-2940

target=0 lun=0 Direct-Access(0) - SEAGATE ST39175LW Rev: 0001
target=1 lun=0 Direct-Access(0) - SEAGATE ST336704LW Rev: 0004
Bmap Cache: enabled [512 entries]
Name Cache: enabled [1280 entries]
Buffer Cache: allocated [10M/10M]
Cache Wiping: no limit
Async-IOdone: enabled
Read-ahead: enabled
Delayed-writes: enabled [2 secs/1 sec/+2 secs]
io-blk: Attach ‘/dev/hd1’
io-blk: IO read (/dev/hd1) blks 0…0
io-blk: Auto-Attach ‘/dev/hd1t7’
io-blk: Skipping automount fsys on ‘/dev/hd1t7’ - No such file or directory
io-blk: Attach ‘/dev/hd2’
io-blk: IO read (/dev/hd2) blks 0…0

[1] + Done devb-aha8 -vvvvvv blk ver

fdisk /dev/hd2 show

OS Start End _Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ ( 79) 1784 4461 2678 43012096 21002 MB NO
  2. ------ (—) ----- ----- ----- -------- -----
  3. ------ (—) ----- ----- ----- -------- -----
  4. FAT32 ( 12) 0 1784 1785 28675962 14001 MB warning

ls /dev/hd*

/dev/hd0 /dev/hd0t12 /dev/hd1 /dev/hd2
/dev/hd0t1 /dev/hd0t7 /dev/hd1t7

Note that another drive (Seagate Barracuda 8Gb) on the same bus works fine.
And the Cheetah drive also works fine in another system with NCR 53C875 controller.
Seems like the aha8 driver is the problem.

I’m using patch A.

uname -a

QNX c773082-a 6.00 2000/10/17-14:59:25edt x86pc x86

  • Igor

    \

“Igor Kovalenko” <kovalenko@home.com> wrote in message
news:Voyager.010129013231.679969A@c773082-a.mntp1.il.home.com
|
| Kevin, you’ve got monkey on your back. Perhaps it makes sense to just change
default
| number of heads to 255 from 64 if you can’t do anything better.
|
| - Igor

Dangit Kevin, that better not be MY monkey!

-Warren

In case you don’t know, Kevin has rather high level of immunity to
monkeys. Otherwise he’d already have done something and answered,
because this problem was originally reported about a YEAR ago and it was
mentioned many times since then.

  • igor

Warren Peece wrote:

“Igor Kovalenko” <> kovalenko@home.com> > wrote in message
news:> Voyager.010129013231.679969A@c773082-a.mntp1.il.home.com> …
|
| Kevin, you’ve got monkey on your back. Perhaps it makes sense to just change
default
| number of heads to 255 from 64 if you can’t do anything better.
|
| - Igor

Dangit Kevin, that better not be MY monkey!

-Warren

He must not have seen “Outbreak”… :slight_smile:


“Igor Kovalenko” <Igor.Kovalenko@motorola.com> wrote in message
news:3A75D3FD.B8AD1295@motorola.com
| In case you don’t know, Kevin has rather high level of immunity to
| monkeys. Otherwise he’d already have done something and answered,
| because this problem was originally reported about a YEAR ago and it was
| mentioned many times since then.
|
| - igor
|
| Warren Peece wrote:
| >
| > “Igor Kovalenko” <kovalenko@home.com> wrote in message
| > news:Voyager.010129013231.679969A@c773082-a.mntp1.il.home.com
| > |
| > | Kevin, you’ve got monkey on your back. Perhaps it makes sense to just
change
| > default
| > | number of heads to 255 from 64 if you can’t do anything better.
| > |
| > | - Igor
| >
| > Dangit Kevin, that better not be MY monkey!
| >
| > -Warren

Igor Kovalenko <kovalenko@home.com> wrote:

Ok, I figured it. Drive geometry indeed and it bit me again after all > :slight_smile:
The problem can be fixed by startting driver with ‘translation’ option AND editing partition table. When it is restarted next time, even without ‘translation’ all partitions are recognized.

However, if I restart it without ‘translation’ and edit partition table again, problem will come back on next restart, even with ‘translation’ option.

The bottom line is, the ‘translation’ option MUST be passed to driver before editing partition table or it will be screwed. Trouble is, there is no way to pass options to driver during installation, so I can’t install RTP on that drive. It worked on anothr system because there I use my own installer and I do pass ‘translation’ > :slight_smile:

Kevin, you’ve got monkey on your back. Perhaps it makes sense to just change default
number of heads to 255 from 64 if you can’t do anything better.

A new devb-aha8 (based on the latest Adaptec CHIM code) is currently going
through QA. The driver should hopefully make it into the next patch…

To work around the problem you can spec the translation to diskboot using
the -o option (patch A). Here is the use message:

diskboot [options]…

Options:
-d dir Directory to search for .qfs files on partition filesystems.
default: qnx - /boot/fs
dos - /Program Files/qnx/boot/fs
linux - /qnx/boot/fs
-e Search ext2 paritions.
-o cmd,options
Provide options to a command.
-o “devb-eide,blk cache=30m” (eide block driver only)
-o “devb-*,blk cache=30m” (all block drivers)
-o “pci-bios,-m” (pci-bios)
-s Start drivers and filesystems but do not run fs-pkg or the sysinit.
-t Increase disk timeouts 10 sec with each -t (default: 15 sec).
-v Be more verbose with each -v.
-x drvr Exclude this driver. Provide the full name. ie: -x devb-eide

Example:
diskboot

Diskboot is built into the bootimage for systems which boot from a
block device. If you press the space bar while diskboot is running it
will allow you to select additional options.

Kevin Chiles wrote:

Igor Kovalenko <> kovalenko@home.com> > wrote:
Ok, I figured it. Drive geometry indeed and it bit me again after all > :slight_smile:
The problem can be fixed by startting driver with ‘translation’ option AND editing partition table. When it is restarted next time, even without ‘translation’ all partitions are recognized.

However, if I restart it without ‘translation’ and edit partition table again, problem will come back on next restart, even with ‘translation’ option.

The bottom line is, the ‘translation’ option MUST be passed to driver before editing partition table or it will be screwed. Trouble is, there is no way to pass options to driver during installation, so I can’t install RTP on that drive. It worked on anothr system because there I use my own installer and I do pass ‘translation’ > :slight_smile:

Kevin, you’ve got monkey on your back. Perhaps it makes sense to just change default
number of heads to 255 from 64 if you can’t do anything better.

A new devb-aha8 (based on the latest Adaptec CHIM code) is currently going
through QA. The driver should hopefully make it into the next patch…

How does that help? The problem is not really specific to aha8 driver.
All others behave the same way, using ‘default’ 64 heads for all types
of hard drives. Does the new driver query drives or SCSI BIOS to find
out geometry?

To work around the problem you can spec the translation to diskboot using
the -o option (patch A). Here is the use message:

I know about diskboot. How do I pass options at installation time, when
I boot from your CD or floppy?
So far I just have to do installation to another (smaller) then boot
from my own floppy, start aha8 with proper options and copy partition
content from smaller drive to bigger. Yuck. This is a shame guys…

Diskboot is built into the bootimage for systems which boot from a
block device. If you press the space bar while diskboot is running it
will allow you to select additional options.

I’m not sure if diskboot is used by installer. And even if it was used,
I don’t believe it allows to enter an arbitrary option, it only allows
to disable some particular things.

What happens is installer detects the drive, asks to create partition, I
say ‘ok’ it creates partition then restarts driver to remount partition
table. At that point installation simply fails because driver does NOT
see new partition after restart since wrong geometry was used to create
it. The dinit tries to initialize /dev/hdXt79 which does NOT exist and
chokes.

To fix it the installer must either allow to enter explicit options for
drivers, or use some ‘educated guess’ for geometry. For example, 64
heads for smaller drives and 255 heads for bigger ones (>8.4Gb). I’m
wondering why do I have to explain those things, can you just try to
install RTP from CD onto a big SCSI drive? Did not your Q&A try that?

Note also that docs wrongly claim that the only thing QNX needs drive
geometry is for is for fdisk write boot sector. Apparently it is also
needed to create proper partition table.

  • igor