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

Davide Italiano davide at freebsd.org
Mon Aug 19 11:23:39 UTC 2013


On Mon, Aug 19, 2013 at 1:16 PM, Andre Oppermann <andre at freebsd.org> wrote:
> 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 */

I think you should just use M_UNUSED or something similar here for
consistency, like it's happening in td_pflags (sys/sys/proc.h), e.g.:

#define TDP_UNUSED9     0x00000100 /* --available-- */


>  #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);
>  }



-- 
Davide

"There are no solved problems; there are only problems that are more
or less solved" -- Henri Poincare


More information about the svn-src-head mailing list