spoiled but acr = 1.

Pawel Jakub Dawidek pjd at FreeBSD.org
Fri Jun 4 01:27:13 PDT 2004


Hi.

While working on geom_mirror and using geom_nop I've found that this
is possible to panic geom in this way:

We have providers: md0 and md0.nop (attached to md0, but not opened).

We load new class (geom_mirror).

GEOM gives provider md0 for taste.

Class is tasting md0 and opening it with r1w1e1.

Provider was opened for writing so all md0's consumers are marked as
beeing spoiled (md0.nop -> md0 consumer too) and g_spoil_event is send.

Before g_spoil_event can be proceeded we're still in g_new_provider
event and the next provider to taste is md0.nop.

Class is trying to open md0.nop for reading.

Provider md0.nop is trying to open through its consumer (which was
marked as beeing spoiled) provider md0 and... panic.


I'm not sure how to solve this yet. Maybe before we give provider
for taste we should check if any of its consumer is marked as beeing
spoiled. But when we should return with taste of this provider?

Hmm, or maybe something like this:

	http://people.freebsd.org/~pjd/patches/geom_subr.c.14.patch

but I'm afraid we can cancel too much.

-- 
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd at FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-geom/attachments/20040604/f77ea310/attachment.bin


More information about the freebsd-geom mailing list