Is there a "disconnected" state for geom_mirror providers?

Paul Mather paul at gromit.dlib.vt.edu
Sun Apr 24 09:32:02 PDT 2005


On Sun, 2005-04-24 at 11:41 +0200, Pawel Jakub Dawidek wrote:
> On Sat, Apr 23, 2005 at 10:13:21PM -0400, Paul Mather wrote:
> +> The provider ad0 did not show up as a "stale" provider of my "raid1"
> +> mirror (from which it had disappeared when it was detached due to the
> +> "TIMEOUT - WRITE_DMA" failure).  I had to do a "gmirror forget raid1"
> +> before a "gmirror insert raid1 ad0" would allow me to re-insert it so I
> +> could perform a "gmirror rebuild raid1 ad0" to kick off synchronisation.
> +> 
> +> What is the definition of a "broken" component?  What is the difference
> +> between a "stale" and a "broken" component?
> 
> If gmirror gets an error for READ or WRITE operation, it assumes provider
> is broken. This is very important - if it will be marked only as stale,
> it will be connected, resynchronization will start, but because there
> was an error on provider, it probably will be disconnected again and we
> have endless loop.

I guess it depends on what caused the disconnection in the first place.
If it was a READ of a bad sector, it could be that subsequent
resynchronisation will force a block reallocation of the bad block and
the drive will no longer be "broken."

> Stale provider is when it is hot-plug and you remove it; when you use
> 'deactivate' command to disconnect it; when it doesn't show up on mirror
> start, but later.
> 
> The rule is simple: when an error was returned on I/O operation, provider
> is marked as broken.

Thanks for the clarification.  That makes sense.  I just need to
remember "gmirror forget" before I attempt to add back in the disk in my
"TIMEOUT - WRITE_DMA" not-really-broken broken disk case. :-)

The shame about it being deleted from the mirror as opposed to marked as
"broken" is you lose info (shown in "gmirror list") about the broken
component priority, etc., which is useful for when you add a replacement
device (or re-add the same one, as in my case).

If you marked a component as "broken" (but still listed as part of the
mirror), you could add a "-f" option to "gmirror rebuild" to force
rebuilding onto it a la RAIDframe. :-)

Cheers,

Paul.
-- 
e-mail: paul at gromit.dlib.vt.edu

"Without music to decorate it, time is just a bunch of boring production
 deadlines or dates by which bills must be paid."
        --- Frank Vincent Zappa


More information about the freebsd-geom mailing list