M_NOFREE removal (was Re: svn commit: r254520 - in head/sys: kern sys)

Andre Oppermann andre at freebsd.org
Wed Aug 21 18:18:44 UTC 2013


On 21.08.2013 18:38, Navdeep Parhar wrote:
> On 08/21/13 08:08, Andre Oppermann wrote:
>> On 20.08.2013 00:38, Peter Grehan wrote:
> <snip>
>>
>>>    If there's an alternative to M_NOFREE, I'd be more than happy to use
>>> that.
>>
>> Set up your own (*ext_free) function and omit freeing of the mbuf
>> itself.  Make
>> sure to properly track your mbufs to avoid leaking them.
>>
>
> How is this an alternate to M_NOFREE?  Your suggestion indicates that
> you may have removed M_NOFREE thinking it did something other than what
> it actually did.  And this suggestion doesn't even work -- note the
> uma_zfree(zone_mbuf, m) at the end of mb_free_ext that would run after
> any custom ext_free.
>
> To recap: M_NOFREE was the way to tell the mbuf subsystem that the mbuf
> does not come from zone_mbuf.  Nothing more and nothing less.  The mbuf
> was in other ways like any other mbuf and could have a pkthdr (or not),
> internal storage (or not), external cluster (or not), etc. etc.

Mea culpa.  You're totally right.  I have mixed up my mental model with
another working tree I carry along for quite some time.  In it (*ext_free)
completely replaces mb_free_ext() making it very easy to keep the mbuf.
We should move that way hopefully sooner than later, simplifying a couple
of things including externally managed refcounts.

Sorry for the chaos and not getting it.

M_NOFREE is back with r254605.

-- 
Andre



More information about the freebsd-net mailing list