Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Jun 2012 07:47:59 +0400
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        "Kenneth D. Merry" <ken@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r237518 - in head: share/man/man9 sys/cam/scsi sys/dev/xen/blkfront sys/geom
Message-ID:  <4FE7DF6F.6020007@FreeBSD.org>
In-Reply-To: <201206240429.q5O4T3D7087012@svn.freebsd.org>
References:  <201206240429.q5O4T3D7087012@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig47FE5512055CB5C1C8DF0872
Content-Type: text/plain; charset=KOI8-R
Content-Transfer-Encoding: quoted-printable

On 24.06.2012 8:29, Kenneth D. Merry wrote:
> Author: ken
> Date: Sun Jun 24 04:29:03 2012
> New Revision: 237518
> URL: http://svn.freebsd.org/changeset/base/237518
>=20
> Log:
>   Fix a bug which causes a panic in daopen(). The panic is caused by
>   a da(4) instance going away while GEOM is still probing it.
>  =20
>   In this case, the GEOM disk class instance has been created by
>   disk_create(), and the taste of the disk is queued in the GEOM
>   event queue.
>  =20
>   While that event is queued, the da(4) instance goes away.  When the
>   open call comes into the da(4) driver, it dereferences the freed
>   (but non-NULL) peripheral pointer provided by GEOM, which results
>   in a panic.
>  =20
>   The solution is to add a callback to the GEOM disk code that is
>   called when all of its resources are cleaned up.  This is
>   implemented inside GEOM by adding an optional callback that is
>   called when all consumers have detached from a provider, and the
>   provider is about to be deleted.

>  =20
>   geom.h:		Add a new, optional, providergone callback that
>   		is called when a provider is about to be deleted.
>  =20
>   MFC after:	5 days

This will break ABI. If you want to merge this change,
it is better to use one of spare field in the geom structures.

> @@ -102,6 +103,7 @@ struct g_class {
>  	g_start_t		*start;
>  	g_spoiled_t		*spoiled;
>  	g_attrchanged_t		*attrchanged;
> +	g_provgone_t		*providergone;
>  	g_dumpconf_t		*dumpconf;
>  	g_access_t		*access;
>  	g_orphan_t		*orphan;
> @@ -133,6 +135,7 @@ struct g_geom {
>  	g_start_t		*start;
>  	g_spoiled_t		*spoiled;
>  	g_attrchanged_t		*attrchanged;
> +	g_provgone_t		*providergone;
>  	g_dumpconf_t		*dumpconf;
>  	g_access_t		*access;
>  	g_orphan_t		*orphan;

--=20
WBR, Andrey V. Elsukov




--------------enig47FE5512055CB5C1C8DF0872
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)

iQEcBAEBAgAGBQJP599zAAoJEAHF6gQQyKF6SR4H/27Fly46TutKiwWR5aa0MwtI
Pit/4fppncPdkWlXnPubNkUfczwCDIKA5XRQQlgSEVVHeSJoSI5LSVMwGShNDQPE
9j6k8xyoI+D2v9lCqHKjgDm8xc3Ju3tw7vjkSZVjaiZ0rrpMUlnh/iwDZWgYIyu3
UUGl/T9VtBV49VeLR3GAk8F/mnr/SQ6pBCCIWeZ8148t9DyZI3AOewSv4kqjXy9/
+8sZcoFo+vKGEpFfU3VkdpiAmL9HTQBN20zWAVX6p/QqPOWsiwo8VhNrPZ70Qk5G
2DnRw8UgS+a498Ur8WFRMjob6XEN2y45yNkg7CisxS1VcZ5Pejq9isHnW9bk848=
=5UXk
-----END PGP SIGNATURE-----

--------------enig47FE5512055CB5C1C8DF0872--



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