mirror handling of broken harddrives

Terje Elde terje at elde.org
Mon Nov 29 05:34:11 PST 2004


On Mon, Nov 29, 2004 at 12:57:17PM +0100, Simon L. Nielsen wrote:
> > Given faulty hardware, resulting in:
> > 
> > ad0: TIMEOUT - READ_DMA retrying (2 retries left) LBA=35170616
> > ad0: TIMEOUT - READ_DMA retrying (1 retry left) LBA=35170616
> > ad0: FAILURE - READ_DMA timed out
> > 
> > How would this be handled by geom_mirror if it was a part of a two-plex
> > volume?
> 
> I can show you from my log how it handles it :-) :
> 
> ad0: TIMEOUT - WRITE_DMA retrying (2 retries left) LBA=152911
> ad0: FAILURE - WRITE_DMA timed out
> GEOM_MIRROR: Request failed (error=5). ad0[WRITE(offset=78290432, length=16384)]
> GEOM_MIRROR: Device boot: provider ad0 disconnected.
> GEOM_MIRROR: Device boot: provider ad0 detected.
> GEOM_MIRROR: Device boot: rebuilding provider ad0.
> GEOM_MIRROR: Device boot: rebuilding provider ad0 finished.
> GEOM_MIRROR: Device boot: provider ad0 activated.
> 
> So, it just works :-).

Hmm, yes.  But does it work the way it should?

I mean, if the reason for the problem is that the hardware ad0 is defect, then
you'll try to rebuild it again and again.  Every time you're trying to write a
defect sector, the disk will block.

Since this is a DMA timeout, I imagine the blocking can quite easily lead to
other problems as well, for things sharing the same DMA channel.

> geom_mirror has just worked great for me, thanks Pawel! :-)

Works great for me too.  I'm nothing but happy.

Terje



More information about the freebsd-geom mailing list