svn commit: r266970 - stable/10/sys/geom

Ian Lepore ian at FreeBSD.org
Mon Jun 2 13:07:29 UTC 2014


On Mon, 2014-06-02 at 10:14 +0000, Andrey V. Elsukov wrote:
> Author: ae
> Date: Mon Jun  2 10:14:03 2014
> New Revision: 266970
> URL: http://svnweb.freebsd.org/changeset/base/266970
> 
> Log:
>   MFC r266444:
>     We have two functions from where a geom orphan method could be called:
>     g_orphan_register and g_resize_provider_event. Both are called from the
>     event queue. Also we have GEOM_DEV class, which does deferred destroy
>     for its consumers via g_dev_destroy (also called from the event queue).
>     So it is possible, that for some consumers an orphan method will be
>     called twice. This triggers panic in g_dev_orphan.
>     Check that consumer isn't already orphaned before call orphan method.
> 
> Modified:
>   stable/10/sys/geom/geom_event.c
> Directory Properties:
>   stable/10/   (props changed)
> 
> Modified: stable/10/sys/geom/geom_event.c
> ==============================================================================
> --- stable/10/sys/geom/geom_event.c	Mon Jun  2 07:08:34 2014	(r266969)
> +++ stable/10/sys/geom/geom_event.c	Mon Jun  2 10:14:03 2014	(r266970)
> @@ -206,6 +206,14 @@ g_orphan_register(struct g_provider *pp)
>  		KASSERT(cp->geom->orphan != NULL,
>  		    ("geom %s has no orphan, class %s",
>  		    cp->geom->name, cp->geom->class->name));
> +		/*
> +		 * XXX: g_dev_orphan method does deferred destroying
> +		 * and it is possible, that other event could already
> +		 * call the orphan method. Check consumer's flags to
> +		 * do not schedule it twice.
> +		 */
> +		if (cp->flags & G_CF_ORPHAN)
> +			continue;
>  		cp->flags |= G_CF_ORPHAN;
>  		cp->geom->orphan(cp);
>  	}
> 

Why is this comment flagged with XXX?  Doesn't that generally mean that
more action or further analysis in the future is required?  Nothing
about the comment itself indicates that there's more work to do.

-- Ian




More information about the svn-src-all mailing list