svn commit: r254520 - in head/sys: kern sys

Andre Oppermann andre at FreeBSD.org
Mon Aug 19 11:16:55 UTC 2013


Author: andre
Date: Mon Aug 19 11:16:53 2013
New Revision: 254520
URL: http://svnweb.freebsd.org/changeset/base/254520

Log:
  Remove the unused M_NOFREE mbuf flag.  It didn't have any in-tree users
  for a very long time, if ever.
  
  Should such a functionality ever be needed again the appropriate and
  much better way to do it is through a custom EXT_SOMETHING external mbuf
  type together with a dedicated *ext_free function.
  
  Discussed with:	trociny, glebius

Modified:
  head/sys/kern/kern_mbuf.c
  head/sys/kern/uipc_mbuf.c
  head/sys/sys/mbuf.h

Modified: head/sys/kern/kern_mbuf.c
==============================================================================
--- head/sys/kern/kern_mbuf.c	Mon Aug 19 11:08:36 2013	(r254519)
+++ head/sys/kern/kern_mbuf.c	Mon Aug 19 11:16:53 2013	(r254520)
@@ -474,7 +474,6 @@ mb_dtor_mbuf(void *mem, int size, void *
 	if ((flags & MB_NOTAGS) == 0 && (m->m_flags & M_PKTHDR) != 0)
 		m_tag_delete_chain(m, NULL);
 	KASSERT((m->m_flags & M_EXT) == 0, ("%s: M_EXT set", __func__));
-	KASSERT((m->m_flags & M_NOFREE) == 0, ("%s: M_NOFREE set", __func__));
 #ifdef INVARIANTS
 	trash_dtor(mem, size, arg);
 #endif

Modified: head/sys/kern/uipc_mbuf.c
==============================================================================
--- head/sys/kern/uipc_mbuf.c	Mon Aug 19 11:08:36 2013	(r254519)
+++ head/sys/kern/uipc_mbuf.c	Mon Aug 19 11:16:53 2013	(r254520)
@@ -278,17 +278,10 @@ m_extadd(struct mbuf *mb, caddr_t buf, u
 void
 mb_free_ext(struct mbuf *m)
 {
-	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__));
 
-
-	/*
-	 * 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) {
@@ -329,8 +322,6 @@ mb_free_ext(struct mbuf *m)
 				("%s: unknown ext_type", __func__));
 		}
 	}
-	if (skipmbuf)
-		return;
 	
 	/*
 	 * Free this mbuf back to the mbuf zone with all m_ext
@@ -395,7 +386,7 @@ m_demote(struct mbuf *m0, int all)
 			m_freem(m->m_nextpkt);
 			m->m_nextpkt = NULL;
 		}
-		m->m_flags = m->m_flags & (M_EXT|M_RDONLY|M_NOFREE);
+		m->m_flags = m->m_flags & (M_EXT|M_RDONLY);
 	}
 }
 

Modified: head/sys/sys/mbuf.h
==============================================================================
--- head/sys/sys/mbuf.h	Mon Aug 19 11:08:36 2013	(r254519)
+++ head/sys/sys/mbuf.h	Mon Aug 19 11:16:53 2013	(r254520)
@@ -200,7 +200,7 @@ struct mbuf {
 		     /*	0x00008000    free */
 #define	M_VLANTAG	0x00010000 /* ether_vtag is valid */
 #define	M_PROMISC	0x00020000 /* packet was not for us */
-#define	M_NOFREE	0x00040000 /* do not free mbuf, embedded in cluster */
+		     /*	0x00040000    free */
 #define	M_PROTO6	0x00080000 /* protocol-specific */
 #define	M_PROTO7	0x00100000 /* protocol-specific */
 #define	M_PROTO8	0x00200000 /* protocol-specific */
@@ -515,7 +515,7 @@ m_free(struct mbuf *m)
 
 	if (m->m_flags & M_EXT)
 		mb_free_ext(m);
-	else if ((m->m_flags & M_NOFREE) == 0)
+	else
 		uma_zfree(zone_mbuf, m);
 	return (n);
 }


More information about the svn-src-all mailing list