Date: Sat, 6 Dec 2008 06:08:12 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r185673 - user/kmacy/HEAD_fast_multi_xmit/sys/kern Message-ID: <200812060608.mB668CpE084838@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Sat Dec 6 06:08:12 2008 New Revision: 185673 URL: http://svn.freebsd.org/changeset/base/185673 Log: revert local mbuf change Modified: user/kmacy/HEAD_fast_multi_xmit/sys/kern/uipc_mbuf.c Modified: user/kmacy/HEAD_fast_multi_xmit/sys/kern/uipc_mbuf.c ============================================================================== --- user/kmacy/HEAD_fast_multi_xmit/sys/kern/uipc_mbuf.c Sat Dec 6 06:02:26 2008 (r185672) +++ user/kmacy/HEAD_fast_multi_xmit/sys/kern/uipc_mbuf.c Sat Dec 6 06:08:12 2008 (r185673) @@ -213,14 +213,17 @@ m_extadd(struct mbuf *mb, caddr_t buf, u void mb_free_ext(struct mbuf *m) { - int mbfree; + int skipmbuf; KASSERT((m->m_flags & M_EXT) == M_EXT, ("%s: M_EXT not set", __func__)); KASSERT(m->m_ext.ref_cnt != NULL, ("%s: ref_cnt not set", __func__)); - mbfree = !(m->m_flags & M_NOFREE); - + /* + * check if the header is embedded in the cluster + */ + skipmbuf = (m->m_flags & M_NOFREE); + /* Free attached storage if this mbuf is the only reference to it. */ if (*(m->m_ext.ref_cnt) == 1 || atomic_fetchadd_int(m->m_ext.ref_cnt, -1) == 1) { @@ -257,21 +260,26 @@ mb_free_ext(struct mbuf *m) m->m_ext.ext_arg2); break; default: - if (m->m_ext.ref_cnt != NULL) - uma_zfree(zone_ext_refcnt, __DEVOLATILE(u_int *, - m->m_ext.ref_cnt)); - break; - - + KASSERT(m->m_ext.ext_type == 0, + ("%s: unknown ext_type", __func__)); } } + if (skipmbuf) + return; /* * Free this mbuf back to the mbuf zone with all m_ext * information purged. */ - if (mbfree) - uma_zfree(zone_mbuf, m); + m->m_ext.ext_buf = NULL; + m->m_ext.ext_free = NULL; + m->m_ext.ext_arg1 = NULL; + m->m_ext.ext_arg2 = NULL; + m->m_ext.ref_cnt = NULL; + m->m_ext.ext_size = 0; + m->m_ext.ext_type = 0; + m->m_flags &= ~M_EXT; + uma_zfree(zone_mbuf, m); } /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812060608.mB668CpE084838>