Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Aug 2009 19:08:56 +0000 (UTC)
From:      Marko Zec <zec@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r196620 - in stable/8/sys: . amd64/include/xen cddl/contrib/opensolaris contrib/dev/acpica contrib/pf dev/xen/xenpci kern
Message-ID:  <200908281908.n7SJ8uW7033493@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: zec
Date: Fri Aug 28 19:08:56 2009
New Revision: 196620
URL: http://svn.freebsd.org/changeset/base/196620

Log:
  MFC r196501:
  
    When registering a protocol to an existing protocol domain via
    pf_proto_register(), iterate over all existing vnets to call protosw_init()
    and thus the appropriate .pr_init() handler in the context of each vnet.
    NB in the future we probably want to separate pr_init() handlers into
    two, i.e. per-vnet and global, functions.
  
    This change has no impact on nooptions VIMAGE builds.
  
    Approved by:  re (rwatson), julian (mentor)
  
  Approved by:	re (rwatson)

Modified:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/kern/uipc_domain.c

Modified: stable/8/sys/kern/uipc_domain.c
==============================================================================
--- stable/8/sys/kern/uipc_domain.c	Fri Aug 28 18:01:37 2009	(r196619)
+++ stable/8/sys/kern/uipc_domain.c	Fri Aug 28 19:08:56 2009	(r196620)
@@ -336,6 +336,7 @@ found:
 int
 pf_proto_register(int family, struct protosw *npr)
 {
+	VNET_ITERATOR_DECL(vnet_iter);
 	struct domain *dp;
 	struct protosw *pr, *fpr;
 
@@ -391,7 +392,13 @@ found:
 	mtx_unlock(&dom_mtx);
 
 	/* Initialize and activate the protocol. */
-	protosw_init(fpr);
+	VNET_LIST_RLOCK();
+	VNET_FOREACH(vnet_iter) {
+		CURVNET_SET_QUIET(vnet_iter);
+		protosw_init(fpr);
+		CURVNET_RESTORE();
+	}
+	VNET_LIST_RUNLOCK();
 
 	return (0);
 }



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