[RELENG_6] ATARAID oddity
Søren Schmidt
sos at FreeBSD.ORG
Tue Sep 23 07:20:14 UTC 2008
Hi
Just the short version:
Since this is softraids and the different vendors use different chips,
there is no 1 to 1 relation between raid type and controller PCI id.
Its a puzzle you cannot solve without loosing a good percentage of the
systems out there.
-Søren
On 23Sep, 2008, at 4:40 , Sean Bruno wrote:
> Sean Bruno wrote:
>> Dieter wrote:
>>>> I.e. if you insert a drive that was part of a volume from an
>>>> Adaptec RAID controller into another system, the new system will
>>>> attempt to treat that disk as though it were associated with a
>>>> HOST Raid controller.
>>>>
>>>> I don't think that this is the desired behavior. Even if the
>>>> host raid meta-data is detected, the system shouldn't attempt to
>>>> treat the disk as part of a HOST raid set without the appropriate
>>>> controller in the system.
>>>>
>>>
>>> Even if there *is* an appropriate controller in the system,
>>> presumably it
>>> isn't going to work unless the disk is connected to that controller.
>>>
>>> We want the ability to migrate a disk from Adaptec to some other
>>> controller without screwy things happening.
>>> _______________________________________________
>> Looking over the ata-raid.c code that controls the detection, it's
>> pretty obvious
>> that it doesn't check to see if the disk belongs to a controller.
>> Moreover it
>> blindly tries to use ANY drive in the system(LSI will do this as
>> well) if it detects
>> meta data.
>>
>> I'm working on a simple patch for this, but I need to figure out
>> which cards are
>> using the Adaptec metadata format. Any ideas where I should look?
>> I seem to have
>> 1 card available(3010S) that I can validate against.
>>
>>
> Well, I tried out this little patch for my system. This probably
> breaks a lot of stuff, but
> it's the beginning of what I think is more correct behavior for
> Adaptec Host-RAID.
>
> If anyone has Adaptec Host-RAID systems out there, please send me
> the PCI-IDs of your
> boards before your try this patch. I would assume that there are
> some Host RAID adapters
> out there that don't conform to the pci-ids I have put in this
> patch. If you have one, let me know.
>
> --
> Sean Bruno
> MiraLink Corporation
> 6015 NE 80th Ave, Ste 100
> Portland, OR 97218
> Cell 503-358-6832
> Phone 503-621-5143
> Fax 503-621-5199
> MSN: sbruno at miralink.com
> Google: seanwbruno at gmail.com
>
> Index: ata-pci.c
> ===================================================================
> --- ata-pci.c (revision 5956)
> +++ ata-pci.c (working copy)
> @@ -532,6 +532,7 @@
> switch (pci_get_vendor(dev)) {
> case ATA_ACARD_ID: return "Acard";
> case ATA_ACER_LABS_ID: return "AcerLabs";
> + case ATA_ADAPTEC_ID: return "Adaptec";
> case ATA_AMD_ID: return "AMD";
> case ATA_ATI_ID: return "ATI";
> case ATA_CYRIX_ID: return "Cyrix";
> Index: ata-raid.c
> ===================================================================
> --- ata-raid.c (revision 5956)
> +++ ata-raid.c (working copy)
> @@ -1304,6 +1304,12 @@
> /* prioritize vendor native metadata layout if possible */
> if (devclass == pci_devclass) {
> switch (pci_get_vendor(GRANDPARENT(device_get_parent(subdisk)))) {
> + /* Adaptec HostRAID */
> + case ATA_ADAPTEC_ID:
> + if (ata_raid_adaptec_read_meta(subdisk, ata_raid_arrays))
> + return 0;
> + break;
> +
> case ATA_HIGHPOINT_ID:
> if (ata_raid_hptv3_read_meta(subdisk, ata_raid_arrays))
> return 0;
> @@ -1358,10 +1364,6 @@
> /* handle controllers that have multiple layout possibilities */
> /* NOTE: the order of these are not insignificant */
>
> - /* Adaptec HostRAID */
> - if (ata_raid_adaptec_read_meta(subdisk, ata_raid_arrays))
> - return 0;
> -
> /* LSILogic v3 and v2 */
> if (ata_raid_lsiv3_read_meta(subdisk, ata_raid_arrays))
> return 0;
> Index: ata-pci.h
> ===================================================================
> --- ata-pci.h (revision 5956)
> +++ ata-pci.h (working copy)
> @@ -71,6 +71,8 @@
> };
>
> /* defines for known chipset PCI id's */
> +#define ATA_ADAPTEC_ID 0x1044
> +
> #define ATA_ACARD_ID 0x1191
> #define ATA_ATP850 0x00021191
> #define ATA_ATP850A 0x00041191
-Søren
More information about the freebsd-drivers
mailing list