burnt again by gmirror

Rick C. Petty rick at kiwi-computer.com
Tue Oct 31 19:54:49 UTC 2006


A few days ago, one of my machines rebooted (6.2-PRERELEASE).  It's using
gmirror, two SATA disks of equal model/size: ad4 & ad8.  Today I noticed
ad4 was loaded and ad8 said 0% (using systat).  I tried:

# gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  ad4

# gmirror list
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 1
SyncID: 4
ID: 793566958
Providers:
1. Name: mirror/gm0
   Mediasize: 320072932864 (298G)
   Sectorsize: 512
   Mode: r7w6e8
Consumers:
1. Name: ad4
   Mediasize: 320072933376 (298G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 1
   SyncID: 4
   ID: 3554825454

and noticed ad8 is not listed.  Wonderful.  A quick check that ad8 is
indeed present:

# atacontrol list
ATA channel 0:
    Master:      no device present
    Slave:       no device present
ATA channel 1:
    Master: acd0 <16X8 DVD DUAL/A070> ATA/ATAPI revision 5
    Slave:       no device present
ATA channel 2:
    Master:  ad4 <WDC WD3200KS-00PFB0/21.00M21> Serial ATA II
    Slave:       no device present
ATA channel 3:
    Master:      no device present
    Slave:       no device present
ATA channel 4:
    Master:  ad8 <WDC WD3200KS-00PFB0/21.00M21> Serial ATA II
    Slave:       no device present
ATA channel 5:
    Master:      no device present
    Slave:       no device present

# atacontrol reinit ata4
Master:  ad8 <WDC WD3200KS-00PFB0/21.00M21> Serial ATA II
Slave:       no device present

As expected, but reiniting the channel doesn't attach ad8 to the mirror,
because the disk is already there.  So I tried detach/attach of ata4 and
noticed this in dmesg:

kernel: subdisk8: detached
kernel: ad8: detached
kernel: ad8: 305245MB <WDC WD3200KS-00PFB0 21.00M21> at ata4-master SATA300
GEOM_MIRROR: Component ad8 (device gm0) broken, skipping.
GEOM_MIRROR: Cannot add disk ad8 to gm0 (error=22).

I tried a few more things:

# gmirror rebuild gm0 ad8
No such provider: ad8.

# gmirror insert gm0 ad8
Not all disks connected.

# gmirror activate gm0 ad8

(in dmesg, the same GEOM_MIRROR errors showed up).  What is going on here?
This was working just fine until my last reboot.  /var/run/dmesg.boot was
empty, presumably because the msg buffer overran itself.  The error
messages are misleading (assuming they are even remotely correct) and quite
unhelpful.  Why didn't gmirror pick up the ad8 provider on startup?  Why
does it think there's another, unconnected disk (which makes sense) but
doesn't allow it to be re-attached?  Is there any way to have gmirror
consume the ad8 provider?

-- Rick C. Petty


More information about the freebsd-geom mailing list