Gleb, Since you did a lot of work in GRN 240233 to fix PF issues, especially for VIMAGE, I thought I would ask your opinion on the attached patch.
In this post: http://lists.freebsd.org/pipermail/freebsd-virtualization/2013-July/001405.html I reported multiple PF-related panics when VIMAGE was enabled in my kernel config. In these posts: http://lists.freebsd.org/pipermail/freebsd-virtualization/2013-July/001413.html http://lists.freebsd.org/pipermail/freebsd-virtualization/2013-July/001420.html Marko Zec seemed to think that de-virtualizing V_pf_mtag_z would be a valid solution to this problem, and that keeping V_pf_mtag_z as a per-vnet variable is not necessary. What do you think of Marko's comments, and this patch? Thanks. -- Craig
Index: sys/netpfil/pf/pf.c =================================================================== --- sys/netpfil/pf/pf.c (revision 253346) +++ sys/netpfil/pf/pf.c (working copy) @@ -187,8 +187,7 @@ static VNET_DEFINE(uma_zone_t, pf_sources_z); #define V_pf_sources_z VNET(pf_sources_z) -static VNET_DEFINE(uma_zone_t, pf_mtag_z); -#define V_pf_mtag_z VNET(pf_mtag_z) +uma_zone_t pf_mtag_z; VNET_DEFINE(uma_zone_t, pf_state_z); VNET_DEFINE(uma_zone_t, pf_state_key_z); @@ -749,7 +748,7 @@ V_pf_altqs_inactive = &V_pf_altqs[1]; /* Mbuf tags */ - V_pf_mtag_z = uma_zcreate("pf mtags", sizeof(struct m_tag) + + pf_mtag_z = uma_zcreate("pf mtags", sizeof(struct m_tag) + sizeof(struct pf_mtag), NULL, NULL, pf_mtag_init, NULL, UMA_ALIGN_PTR, 0); @@ -803,7 +802,7 @@ mtx_destroy(&pf_overloadqueue_mtx); mtx_destroy(&pf_unlnkdrules_mtx); - uma_zdestroy(V_pf_mtag_z); + uma_zdestroy(pf_mtag_z); uma_zdestroy(V_pf_sources_z); uma_zdestroy(V_pf_state_z); uma_zdestroy(V_pf_state_key_z); @@ -827,7 +826,7 @@ pf_mtag_free(struct m_tag *t) { - uma_zfree(V_pf_mtag_z, t); + uma_zfree(pf_mtag_z, t); } struct pf_mtag * @@ -838,7 +837,7 @@ if ((mtag = m_tag_find(m, PACKET_TAG_PF, NULL)) != NULL) return ((struct pf_mtag *)(mtag + 1)); - mtag = uma_zalloc(V_pf_mtag_z, M_NOWAIT); + mtag = uma_zalloc(pf_mtag_z, M_NOWAIT); if (mtag == NULL) return (NULL); bzero(mtag + 1, sizeof(struct pf_mtag));
_______________________________________________ freebsd-virtualization@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization To unsubscribe, send any mail to "freebsd-virtualization-unsubscr...@freebsd.org"