Messages in this thread | | | Date | Fri, 3 Jan 1997 11:05:31 -0800 | From | "Leonard N. Zubkoff" <> | Subject | Re: Adaptec AHA2940 |
| |
From: lm@neteng.engr.sgi.com (Larry McVoy) Newsgroups: linux.dev.kernel
Is there any place to go to get more info on this? I ran into this while trying to upgrade from an NCR to an AHA2940 and ended up giving up and going with the NCR (partly because I have two machines and wanted to be able to switch disks between both).
I imagine there's some information on this in one of the HOWTOs. The problem is not with SCSI itself, but rather with the necessity for translating SCSI's linear block addresses into the cylinder/head/sector addresses used by the system BIOS. The only place this actually matters is when creating partitions and for booting. Partition creation matters if the disk is shared with other operating systems; Linux could care less as it uses the raw sector addresses in the partition table, and not the C/H/S values, but other operating systems may be quite unhappy and overwrite the wrong data if the C/H/S values aren't consistent with the linear addresses. For booting, the system BIOS is used to load the kernel so the bootstrap must know the C/H/S location of the secondary bootstrap and kernel image.
Once upon a time, many SCSI controllers used the simple 64 heads and 32 sectors/track mapping. This was sufficient for disks smaller than 1GB in size. With the advent of larger disks, so-called "extended translation" was invented to allow larger disks to fit within the number of bits available for C/H/S addresses. This is largely where the problems arise, since there are a number of different extended translations. Furthermore, the NCR/Symbios BIOS follows the CAM specification which tried to optimize the usage of the disk space by computing a C/H/S translation that's optimal for each disk. This causes disks partitioned on a Symbios host adapter to have problems on host adapters that used the fixed schemes, such as Adaptec and BusLogic. However, the Symbios BIOS will adopt a translation that's already present in the partition table, so you can generally move a disk from Adaptec or BusLogic to Symbios.
Adaptec uses either 64/32 or 255/63 translation, based on the size of the disk being > 1GB and the extended translation option being selected. BusLogic uses three translations, 64/32 (< 1GB), 128/32 (1GB..2GB), and 255/63 (>= 2GB), and will also adopt one of these three if its already in the partition table, even if it's incorrect for the disk size; my BusLogic driver also handles this for Linux and warns when the partition table geometry is adopted.
Here's a table of what host adapter changes should and should not work, based on the host adapter that originally partitioned the disk and whether it had extended translation enabled:
Old Host Adapter New Host Adapter Compatible ======================== ======================== ========== Adaptec (extended: any) BusLogic (extended: any) yes Adaptec (extended: any) Symbios/NCR yes BusLogic (extended: off) Adaptec (extended: off) yes BusLogic (extended: on) Adaptec (extended: on) except 1GB..2GB BusLogic (extended: any) Symbios/NCR yes Symbios/NCR Adaptec no Symbios/NCR BusLogic no
Since most of my machines are Linux-only and only require C/H/S addressing for booting, I generally setup all my SCSI disks without extended translation so I get the 64/32 translation. I just make sure the root partition (wherever /boot and vmlinuz are) is located below cylinder 1024. This gives me maximum compatibility for moving them should I ever decide to.
Leonard
| |