Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Jun 2004 10:26:59 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        geom@freebsd.org
Subject:   spoiled but acr = 1.
Message-ID:  <20040604082659.GI12007@darkness.comp.waw.pl>

next in thread | raw e-mail | index | archive | help

--0FRtVia6Q6lt+M0P
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

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.

--=20
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd@FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!

--0FRtVia6Q6lt+M0P
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFAwDJTForvXbEpPzQRAtobAKDidZOQ/RG70G6Sm5MuO5xwQgq0dwCgudPl
TqikDgnNKmA7LFxG6GXRMvQ=
=0B8G
-----END PGP SIGNATURE-----

--0FRtVia6Q6lt+M0P--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040604082659.GI12007>