Author: glebius
Date: Tue May 19 14:04:21 2015
New Revision: 283107
URL: https://svnweb.freebsd.org/changeset/base/283107

Log:
  Use MTX_SYSINIT() instead of mtx_init() to separate mutex initialization
  from associated structures initialization.  The mutexes are global, while
  the structures are per-vnet.
  
  Submitted by: Nikos Vassiliadis <nvass gmx.com>

Modified:
  head/sys/netpfil/pf/pf.c
  head/sys/netpfil/pf/pf_if.c
  head/sys/netpfil/pf/pf_norm.c

Modified: head/sys/netpfil/pf/pf.c
==============================================================================
--- head/sys/netpfil/pf/pf.c    Tue May 19 14:02:40 2015        (r283106)
+++ head/sys/netpfil/pf/pf.c    Tue May 19 14:04:21 2015        (r283107)
@@ -151,6 +151,7 @@ static VNET_DEFINE(struct pf_send_head, 
 #define        V_pf_sendqueue  VNET(pf_sendqueue)
 
 static struct mtx pf_sendqueue_mtx;
+MTX_SYSINIT(pf_sendqueue_mtx, &pf_sendqueue_mtx, "pf send queue", MTX_DEF);
 #define        PF_SENDQ_LOCK()         mtx_lock(&pf_sendqueue_mtx)
 #define        PF_SENDQ_UNLOCK()       mtx_unlock(&pf_sendqueue_mtx)
 
@@ -172,11 +173,15 @@ static VNET_DEFINE(struct task, pf_overl
 #define        V_pf_overloadtask       VNET(pf_overloadtask)
 
 static struct mtx pf_overloadqueue_mtx;
+MTX_SYSINIT(pf_overloadqueue_mtx, &pf_overloadqueue_mtx,
+    "pf overload/flush queue", MTX_DEF);
 #define        PF_OVERLOADQ_LOCK()     mtx_lock(&pf_overloadqueue_mtx)
 #define        PF_OVERLOADQ_UNLOCK()   mtx_unlock(&pf_overloadqueue_mtx)
 
 VNET_DEFINE(struct pf_rulequeue, pf_unlinked_rules);
 struct mtx pf_unlnkdrules_mtx;
+MTX_SYSINIT(pf_unlnkdrules_mtx, &pf_unlnkdrules_mtx, "pf unlinked rules",
+    MTX_DEF);
 
 static VNET_DEFINE(uma_zone_t, pf_sources_z);
 #define        V_pf_sources_z  VNET(pf_sources_z)
@@ -804,18 +809,13 @@ pf_initialize()
        V_pf_altqs_active = &V_pf_altqs[0];
        V_pf_altqs_inactive = &V_pf_altqs[1];
 
-
        /* Send & overload+flush queues. */
        STAILQ_INIT(&V_pf_sendqueue);
        SLIST_INIT(&V_pf_overloadqueue);
        TASK_INIT(&V_pf_overloadtask, 0, pf_overload_task, curvnet);
-       mtx_init(&pf_sendqueue_mtx, "pf send queue", NULL, MTX_DEF);
-       mtx_init(&pf_overloadqueue_mtx, "pf overload/flush queue", NULL,
-           MTX_DEF);
 
        /* Unlinked, but may be referenced rules. */
        TAILQ_INIT(&V_pf_unlinked_rules);
-       mtx_init(&pf_unlnkdrules_mtx, "pf unlinked rules", NULL, MTX_DEF);
 }
 
 void
@@ -858,10 +858,6 @@ pf_cleanup()
                free(pfse, M_PFTEMP);
        }
 
-       mtx_destroy(&pf_sendqueue_mtx);
-       mtx_destroy(&pf_overloadqueue_mtx);
-       mtx_destroy(&pf_unlnkdrules_mtx);
-
        uma_zdestroy(V_pf_sources_z);
        uma_zdestroy(V_pf_state_z);
        uma_zdestroy(V_pf_state_key_z);

Modified: head/sys/netpfil/pf/pf_if.c
==============================================================================
--- head/sys/netpfil/pf/pf_if.c Tue May 19 14:02:40 2015        (r283106)
+++ head/sys/netpfil/pf/pf_if.c Tue May 19 14:04:21 2015        (r283107)
@@ -103,6 +103,8 @@ LIST_HEAD(pfi_list, pfi_kif);
 static VNET_DEFINE(struct pfi_list, pfi_unlinked_kifs);
 #define        V_pfi_unlinked_kifs     VNET(pfi_unlinked_kifs)
 static struct mtx pfi_unlnkdkifs_mtx;
+MTX_SYSINIT(pfi_unlnkdkifs_mtx, &pfi_unlnkdkifs_mtx, "pf unlinked interfaces",
+    MTX_DEF);
 
 void
 pfi_initialize(void)
@@ -115,8 +117,6 @@ pfi_initialize(void)
        V_pfi_buffer = malloc(V_pfi_buffer_max * sizeof(*V_pfi_buffer),
            PFI_MTYPE, M_WAITOK);
 
-       mtx_init(&pfi_unlnkdkifs_mtx, "pf unlinked interfaces", NULL, MTX_DEF);
-
        kif = malloc(sizeof(*kif), PFI_MTYPE, M_WAITOK);
        PF_RULES_WLOCK();
        V_pfi_all = pfi_kif_attach(kif, IFG_ALL);
@@ -166,8 +166,6 @@ pfi_cleanup(void)
                free(p, PFI_MTYPE);
        }
 
-       mtx_destroy(&pfi_unlnkdkifs_mtx);
-
        free(V_pfi_buffer, PFI_MTYPE);
 }
 

Modified: head/sys/netpfil/pf/pf_norm.c
==============================================================================
--- head/sys/netpfil/pf/pf_norm.c       Tue May 19 14:02:40 2015        
(r283106)
+++ head/sys/netpfil/pf/pf_norm.c       Tue May 19 14:04:21 2015        
(r283107)
@@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_pf.h"
 
 #include <sys/param.h>
+#include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/mbuf.h>
 #include <sys/mutex.h>
@@ -108,6 +109,7 @@ struct pf_fragment_tag {
 };
 
 static struct mtx pf_frag_mtx;
+MTX_SYSINIT(pf_frag_mtx, &pf_frag_mtx, "pf fragments", MTX_DEF);
 #define PF_FRAG_LOCK()         mtx_lock(&pf_frag_mtx)
 #define PF_FRAG_UNLOCK()       mtx_unlock(&pf_frag_mtx)
 #define PF_FRAG_ASSERT()       mtx_assert(&pf_frag_mtx, MA_OWNED)
@@ -197,8 +199,6 @@ pf_normalize_init(void)
        uma_zone_set_max(V_pf_frent_z, PFFRAG_FRENT_HIWAT);
        uma_zone_set_warning(V_pf_frent_z, "PF frag entries limit reached");
 
-       mtx_init(&pf_frag_mtx, "pf fragments", NULL, MTX_DEF);
-
        TAILQ_INIT(&V_pf_fragqueue);
        TAILQ_INIT(&V_pf_cachequeue);
 }
@@ -210,8 +210,6 @@ pf_normalize_cleanup(void)
        uma_zdestroy(V_pf_state_scrub_z);
        uma_zdestroy(V_pf_frent_z);
        uma_zdestroy(V_pf_frag_z);
-
-       mtx_destroy(&pf_frag_mtx);
 }
 
 static int
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to