Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Sep 2008 08:43:23 +0200
From:      =?ISO-8859-1?Q?S=F8ren_Schmidt?= <sos@FreeBSD.ORG>
To:        Sean Bruno <sbruno@miralink.com>
Cc:        freebsd-drivers@FreeBSD.ORG
Subject:   Re: [RELENG_6] ATARAID oddity
Message-ID:  <B9F3337E-85C1-4971-8AEA-D7EC8F249422@FreeBSD.ORG>
In-Reply-To: <48D8572B.3060204@miralink.com>
References:  <200809222203.WAA20882@sopwith.solgatos.com> <48D82921.3010904@miralink.com> <48D8572B.3060204@miralink.com>

index | next in thread | previous in thread | raw e-mail

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@miralink.com
> Google:  seanwbruno@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








help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B9F3337E-85C1-4971-8AEA-D7EC8F249422>