kern/73660: geom_mirror hanging on boot because of cdrom in drive, causes mirror to degrade

Dierk Sacher usenet01 at blaxxtarz.de
Sun Nov 7 21:10:24 PST 2004


>Number:         73660
>Category:       kern
>Synopsis:       geom_mirror hanging on boot because of cdrom in drive, causes mirror to degrade
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Nov 08 05:10:24 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Dierk Sacher
>Release:        5.3-RELEASE
>Organization:
DSITC
>Environment:
FreeBSD 5.3-RELEASE FreeBSD 5.3-RELEASE #0: Fri Nov  5 04:19:18 UTC 2004 root at harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
>Description:
The ATA Layout:
  C0-master: ad0
  C0-slave : acd0
  C1-master: ad2
  C1-master: -none-

A geom_mirror is set up with providers ad0 and ad2. The mirror contains a full slice with all partitions.

On load of geom_mirror, there are errors:
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 error=4<ABORTED>

This _only_ happens, if I have a medium in the cdrom drive.

On boot, the activation of ad0 hangs, because of the error on acd0. What seems to happen is, that the default mirror.timout=4 forces the mirror 
to start without ad0. 

The mirror comes up not only in degraded state, but ad0 is missing at all. I'm able to reattach the ad0 provider, but this causes a full resync of the mirror.

Syslog:
..
ad0: 114473MB <ST3120022A/8.01> [232581/16/63] at ata0-master UDMA100
GEOM_MIRROR: Device gm0 created (id=285889984).
GEOM_MIRROR: Device gm0: provider ad0 detected.
acd0: CDROM <SAMSUNG CD-ROM SH-152A/C503> at ata0-slave UDMA33
ad2: 114473MB <ST3120022A/8.01> [232581/16/63] at ata1-master UDMA100
GEOM_MIRROR: Force device gm0 start due to timeout.
GEOM_MIRROR: Device gm0 destroyed.
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 error=4<ABORTED>
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 error=4<ABORTED>
GEOM_MIRROR: Device gm0 created (id=285889984).
GEOM_MIRROR: Device gm0: provider ad2 detected.
GEOM_MIRROR: Force device gm0 start due to timeout.
GEOM_MIRROR: Device gm0: provider ad2 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
Mounting root from ufs:/dev/mirror/gm0s1a
..
>How-To-Repeat:
Have a CDROM drive on same IDE channel with a geom_mirror provider &&
Have a medium in drive &&
Boot with synced mirror.

>Fix:
Fix unknown (not a kernel developer,sry)

Workarround:
In device.hints, set kern.geom_mirror.timeout=30 (??? someone able to confirm that this isn't bogus? I'm not shure about this one.)
  or
Do not have a medium in your CDROM
  or
Do not have a CDROM Drive together with a geom providing harddrive on the same Channel at all.

Syslog with CDROM in Drive _and_ higher Timeout:
ad0: 114473MB <ST3120022A/8.01> [232581/16/63] at ata0-master UDMA100
GEOM_MIRROR[1]: Creating device gm0 (id=285889984).
GEOM_MIRROR[0]: Device gm0 created (id=285889984).
GEOM_MIRROR[1]: Adding disk ad0 to gm0.
GEOM_MIRROR[1]: Disk ad0 state changed from NONE to NEW (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad0 detected.
acd0: CDROM <SAMSUNG CD-ROM SH-152A/C503> at ata0-slave UDMA33
ad2: 114473MB <ST3120022A/8.01> [232581/16/63] at ata1-master UDMA100
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 error=4<ABORTED>
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 error=4<ABORTED>
GEOM_MIRROR[1]: Adding disk ad2 to gm0.
GEOM_MIRROR[1]: Disk ad2 state changed from NONE to NEW (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad2 detected.
GEOM_MIRROR[1]: Device gm0 state changed from STARTING to RUNNING.
GEOM_MIRROR[1]: Disk ad2 state changed from NEW to ACTIVE (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad2 activated.
GEOM_MIRROR[1]: Disk ad0 state changed from NEW to ACTIVE (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad0 activated.
GEOM_MIRROR[0]: Device gm0: provider mirror/gm0 launched.
Mounting root from ufs:/dev/mirror/gm0s1a
GEOM_MIRROR[1]: Disk ad2 (device gm0) marked as dirty.
GEOM_MIRROR[1]: Disk ad0 (device gm0) marked as dirty.

Syslog without a medium in the CDROM drive:
ad0: 114473MB <ST3120022A/8.01> [232581/16/63] at ata0-master UDMA100
GEOM_MIRROR[1]: Creating device gm0 (id=285889984).
GEOM_MIRROR[0]: Device gm0 created (id=285889984).
GEOM_MIRROR[1]: Adding disk ad0 to gm0.
GEOM_MIRROR[1]: Disk ad0 state changed from NONE to NEW (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad0 detected.
acd0: CDROM <SAMSUNG CD-ROM SH-152A/C503> at ata0-slave UDMA33
ad2: 114473MB <ST3120022A/8.01> [232581/16/63] at ata1-master UDMA100
GEOM_MIRROR[1]: Adding disk ad2 to gm0.
GEOM_MIRROR[1]: Disk ad2 state changed from NONE to NEW (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad2 detected.
GEOM_MIRROR[1]: Device gm0 state changed from STARTING to RUNNING.
GEOM_MIRROR[1]: Disk ad2 state changed from NEW to ACTIVE (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad2 activated.
GEOM_MIRROR[1]: Disk ad0 state changed from NEW to ACTIVE (device gm0).
GEOM_MIRROR[0]: Device gm0: provider ad0 activated.
GEOM_MIRROR[0]: Device gm0: provider mirror/gm0 launched.
Mounting root from ufs:/dev/mirror/gm0s1a
GEOM_MIRROR[1]: Disk ad2 (device gm0) marked as dirty.
GEOM_MIRROR[1]: Disk ad0 (device gm0) marked as dirty.

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list