From nobody@FreeBSD.org  Fri Aug 18 02:17:21 2006
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 70BAF16A4DA
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 18 Aug 2006 02:17:21 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [216.136.204.117])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 8B92243D69
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 18 Aug 2006 02:17:20 +0000 (GMT)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.13.1/8.13.1) with ESMTP id k7I2HJa4019307
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 18 Aug 2006 02:17:20 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.13.1/8.13.1/Submit) id k7I2HJMS019253;
	Fri, 18 Aug 2006 02:17:19 GMT
	(envelope-from nobody)
Message-Id: <200608180217.k7I2HJMS019253@www.freebsd.org>
Date: Fri, 18 Aug 2006 02:17:19 GMT
From: Yoichi NAKAYAMA <yoichi@FreeBSD.org>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [ata] reboot system makes rebuilding array ready (ICH7)
X-Send-Pr-Version: www-2.3

>Number:         102210
>Category:       kern
>Synopsis:       [ar] [patch] reboot system makes rebuilding array ready (ICH7)
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    vwe
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Aug 18 02:20:15 GMT 2006
>Closed-Date:    Fri Oct 17 14:06:03 UTC 2008
>Last-Modified:  Fri Oct 17 14:06:03 UTC 2008
>Originator:     Yoichi NAKAYAMA
>Release:        7-current
>Organization:
FreeBSD.org
>Environment:
FreeBSD suigei.local-net 7.0-CURRENT FreeBSD 7.0-CURRENT #11: Thu Aug 17 23:51:38 JST 2006     yoichi@suigei.local-net:/usr/obj/usr/src/sys/GENERIC_DEBUG  i386

>Description:
I have raid array with ICH7.
Reboot system when RAID1 volume is under rebuilding,
then the volume, althogh it is out of sync, is shown as READY:
 # atacontrol status ar0
 ar0: ATA RAID1 subdisks: ad10 ad14 status: READY
while "Intel(R) Matrix Strage Manager option ROM v5.7.0.1005 ICH7MR"
shows that the status of the volume is "Rebuild".
# When I boot Windows XP, it does continue rebuilding process.

related part of dmesg:
 atapci2: <Intel ICH7M SATA300 controller> port 0xe080-0xe087,0xe000-0xe003,0xdc00-0xdc07,0xd880-0xd883,0xd800-0xd80f mem 0xffa37800-0xffa37bff irq 19 at device 31.2 on pci0
 ad10: 239372MB <Maxtor 7V250F0 VA111630> at ata5-master SATA150
 ad14: 239372MB <Maxtor 7V250F0 VA111630> at ata7-master SATA150
 ar0: disk0 READY (master) using ad10 at ata5-master
 ar0: disk1 READY (mirror) using ad14 at ata7-master

>How-To-Repeat:
atacontrol detach ata7
atacontrol attach ata7
atacontrol addspare ar0 ad14
atacontrol rebuild ar0
reboot

>Fix:

>Release-Note:
>Audit-Trail:

From: Stef Walter <stef@memberwebs.com>
To: bug-followup@FreeBSD.org, yoichi@FreeBSD.org
Cc:  
Subject: Re: kern/102210: [ar] reboot system makes rebuilding array ready
 (ICH7)
Date: Thu, 20 Mar 2008 06:25:56 +0000 (UTC)

 This is a multi-part message in MIME format.
 --------------090705010509010508020100
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: 7bit
 
 This occurs because when loading the intel matrix raid data, we don't
 set the AR_DF_ONLINE and AR_DF_ASSIGNED correctly. Specifically:
 
  * AR_DF_ONLINE should not be set on a disk just because a disk
    serial number matches.
  * AR_DF_ASSIGNED should be set for spares (see ata_raid_addspare)
 
 Patch attached, intertwined with patch for kern/102211 (vital patch for
 the nasty panic).
 
 
 --------------090705010509010508020100
 Content-Type: text/x-patch;
  name="intel-matrix-raid-rebuild.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="intel-matrix-raid-rebuild.patch"
 
 --- sys/dev/ata/ata-raid.c.orig	2008-03-19 11:20:15.000000000 +0000
 +++ sys/dev/ata/ata-raid.c	2008-03-19 21:53:37.000000000 +0000
 @@ -2157,22 +2165,23 @@
  
  	    /* clear out any old info */
  	    for (disk = 0; disk < raid->total_disks; disk++) {
 +		u_int32_t disk_idx = map->disk_idx[disk] & 0xffff;
  		raid->disks[disk].dev = NULL;
 -		bcopy(meta->disk[map->disk_idx[disk]].serial,
 +		bcopy(meta->disk[disk_idx].serial,
  		      raid->disks[disk].serial,
  		      sizeof(raid->disks[disk].serial));
  		raid->disks[disk].sectors =
 -		    meta->disk[map->disk_idx[disk]].sectors;
 +		    meta->disk[disk_idx].sectors;
  		raid->disks[disk].flags = 0;
 -		if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_ONLINE)
 +		if (meta->disk[disk_idx].flags & INTEL_F_ONLINE)
  		    raid->disks[disk].flags |= AR_DF_ONLINE;
 -		if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_ASSIGNED)
 +		if (meta->disk[disk_idx].flags & INTEL_F_ASSIGNED)
  		    raid->disks[disk].flags |= AR_DF_ASSIGNED;
 -		if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_SPARE) {
 -		    raid->disks[disk].flags &= ~(AR_DF_ONLINE | AR_DF_ASSIGNED);
 -		    raid->disks[disk].flags |= AR_DF_SPARE;
 +		if (meta->disk[disk_idx].flags & INTEL_F_SPARE) {
 +		    raid->disks[disk].flags &= ~AR_DF_ONLINE;
 +		    raid->disks[disk].flags |= (AR_DF_SPARE | AR_DF_ASSIGNED);
  		}
 -		if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_DOWN)
 +		if (meta->disk[disk_idx].flags & INTEL_F_DOWN)
  		    raid->disks[disk].flags &= ~AR_DF_ONLINE;
  	    }
  	}
 @@ -2183,7 +2192,7 @@
  		if (!strncmp(raid->disks[disk].serial, atadev->param.serial,
  		    sizeof(raid->disks[disk].serial))) {
  		    raid->disks[disk].dev = parent;
 -		    raid->disks[disk].flags |= (AR_DF_PRESENT | AR_DF_ONLINE);
 +		    raid->disks[disk].flags |= AR_DF_PRESENT;
  		    ars->raid[raid->volume] = raid;
  		    ars->disk_number[raid->volume] = disk;
  		    retval = 1;
 
 
 --------------090705010509010508020100--
 
State-Changed-From-To: open->closed 
State-Changed-By: vwe 
State-Changed-When: Fri Oct 17 14:04:54 UTC 2008 
State-Changed-Why:  

DUP PR, closing this in favour of PR/102211 
thank you for reporting 


Responsible-Changed-From-To: freebsd-bugs->vwe 
Responsible-Changed-By: vwe 
Responsible-Changed-When: Fri Oct 17 14:04:54 UTC 2008 
Responsible-Changed-Why:  

track 

http://www.freebsd.org/cgi/query-pr.cgi?pr=102210 
>Unformatted:
