Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Oct 2011 09:10:45 +0400
From:      "Andrey V. Elsukov" <bu7cher@yandex.ru>
To:        "Lev A. Serebryakov" <lev@FreeBSD.org>
Cc:        svn-src-projects@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r226011 - projects/geom-events/sys/geom/part
Message-ID:  <4E8BE6D5.9030107@yandex.ru>
In-Reply-To: <201110041708.p94H8O8f069977@svn.freebsd.org>
References:  <201110041708.p94H8O8f069977@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 04.10.2011 21:08, Lev A. Serebryakov wrote:
> Author: lev (ports committer)
> Date: Tue Oct  4 17:08:24 2011
> New Revision: 226011
> URL: http://svn.freebsd.org/changeset/base/226011
> 
> Log:
>   Add g_notify_*() calls to geom_part
> 
> Modified:
>   projects/geom-events/sys/geom/part/g_part.c
> 
> Modified: projects/geom-events/sys/geom/part/g_part.c
> ==============================================================================
> --- projects/geom-events/sys/geom/part/g_part.c	Tue Oct  4 17:07:56 2011	(r226010)
> +++ projects/geom-events/sys/geom/part/g_part.c	Tue Oct  4 17:08:24 2011	(r226011)
> @@ -2016,6 +2016,7 @@ g_part_orphan(struct g_consumer *cp)
>  {
>  	struct g_provider *pp;
>  	struct g_part_table *table;
> +	struct g_part_entry *e;
>  
>  	pp = cp->provider;
>  	KASSERT(pp != NULL, ("%s", __func__));
> @@ -2026,6 +2027,11 @@ g_part_orphan(struct g_consumer *cp)
>  	table = cp->geom->softc;
>  	if (table != NULL && table->gpt_opened)
>  		g_access(cp, -1, -1, -1);
> +
> +	LIST_FOREACH(e, &table->gpt_entry, gpe_entry) {
> +		g_notify_destroyed(e->gpe_pp);
> +	}
> +

In some cases you can get panic here. Also geom_part can destroy its
providers in several places, not only when it is orphaned.

-- 
WBR, Andrey V. Elsukov



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