From: Olivier MATZ <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>,
"vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org"
<vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH v2] rte_mbuf: mbuf bulk alloc/free functions added + unittest
Date: Thu, 19 Mar 2015 09:41:25 +0100 [thread overview]
Message-ID: <550A8BB5.9040104@6wind.com> (raw)
In-Reply-To: <20150318205856.GA5151-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
Hi Neil,
On 03/18/2015 09:58 PM, Neil Horman wrote:
>> +/**
>> + * Free a bulk of mbufs into its original mempool.
>> + * This function assumes:
>> + * - refcnt equals 1
>> + * - mbufs are direct
>> + * - all mbufs must belong to the same mempool
>> + *
>> + * @param mbufs
>> + * Array of pointers to mbuf
>> + * @param count
>> + * Array size
>> + */
>> +static inline void rte_pktmbuf_bulk_free(struct rte_mbuf **mbufs,
>> + unsigned count)
>> +{
>> + unsigned idx;
>> +
>> + RTE_MBUF_ASSERT(count > 0);
>> +
>> + for (idx = 0; idx < count; idx++) {
>> + RTE_MBUF_ASSERT(mbufs[idx]->pool == mbufs[0]->pool);
>> + RTE_MBUF_ASSERT(rte_mbuf_refcnt_read(mbufs[idx]) == 1);
>> + rte_mbuf_refcnt_set(mbufs[idx], 0);
> This is really a misuse of the API. The entire point of reference counting is
> to know when an mbuf has no more references and can be freed. By forcing all
> the reference counts to zero here, you allow the refcnt infrastructure to be
> circumvented, causing memory leaks.
>
> I think what you need to do here is enhance the underlying pktmbuf interface
> such that an rte_mbuf structure has a destructor method association with it
> which is called when its refcnt reaches zero. That way the
> rte_pktmbuf_bulk_free function can just decrement the refcnt on each
> mbuf_structure, and the pool as a whole can be returned when the destructor
> function discovers that all mbufs in that bulk pool are freed.
I don't really understand what's the problem here. The API explicitly
describes the conditions for calling this functions: the segments are
directs, they belong to the same mempool, and their refcnt is 1.
This function could be useful in a driver which knows that the mbuf
it allocated matches this conditions. I think an application that
only uses direct mbufs and one mempool could also use this function.
Regards,
Olivier
next prev parent reply other threads:[~2015-03-19 8:41 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-18 20:21 [PATCH v2] rte_mbuf: mbuf bulk alloc/free functions added + unittest vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <1426710078-11230-1-git-send-email-vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-18 20:58 ` Neil Horman
[not found] ` <20150318205856.GA5151-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org>
2015-03-19 8:41 ` Olivier MATZ [this message]
[not found] ` <550A8BB5.9040104-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-19 10:06 ` Ananyev, Konstantin
2015-03-19 13:16 ` Neil Horman
[not found] ` <20150319131639.GB1992-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-03-23 16:44 ` Olivier MATZ
[not found] ` <551042D2.5040300-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-23 17:31 ` Vadim Suraev
[not found] ` <CAJ0CJ8kaVmfic7e9frHjYjvEP2QBcGdiMGVAcrVuGX+4CuOYcQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-23 23:48 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258214070D7-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-24 7:53 ` Vadim Suraev
[not found] ` <2601191342CEEE43887BDE71AB977258214071C0@irsmsx105.ger.corp.intel.com>
[not found] ` <2601191342CEEE43887BDE71AB977258214071C0-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-24 11:00 ` Ananyev, Konstantin
2015-03-23 18:45 ` Neil Horman
2015-03-30 19:04 ` Vadim Suraev
[not found] ` <CAJ0CJ8mn9R4CAKp-M1NE2Td=L+GQnxGvpdeBOVQKDa0jYg9RZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-30 20:15 ` Neil Horman
-- strict thread matches above, loose matches on Subject: below --
2015-03-17 21:36 vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w
[not found] ` <1426628169-1735-1-git-send-email-vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-17 23:46 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F6F10-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-18 5:19 ` Vadim Suraev
[not found] ` <2601191342CEEE43887BDE71AB977258213F7053@irsmsx105.ger.corp.intel.com>
[not found] ` <2601191342CEEE43887BDE71AB977258213F7053-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-18 9:56 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F706D-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-18 10:41 ` Vadim Suraev
[not found] ` <2601191342CEEE43887BDE71AB977258213F7136@irsmsx105.ger.corp.intel.com>
[not found] ` <2601191342CEEE43887BDE71AB977258213F7136-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-18 15:13 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F7188-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-19 8:13 ` Olivier MATZ
[not found] ` <550A850D.9010309-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-19 10:47 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F749B-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-19 10:54 ` Olivier MATZ
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=550A8BB5.9040104@6wind.com \
--to=olivier.matz-pdr9zngts4eavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org \
--cc=vadim.suraev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.