From: Olivier MATZ <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Zoltan Kiss <zoltan.kiss-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"Ananyev,
Konstantin"
<konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"dev-VfR2kkLFssw@public.gmane.org"
<dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: [PATCH v2 1/5] mbuf: fix clone support when application uses private mbuf data
Date: Sat, 28 Mar 2015 22:19:12 +0100 [thread overview]
Message-ID: <55171AD0.7040702@6wind.com> (raw)
In-Reply-To: <55159D39.1040608-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Hi Zoltan,
On 03/27/2015 07:11 PM, Zoltan Kiss wrote:
>> Sorry if it was not clear in my previous messages, but I agree
>> with your description. When attaching a mbuf, only data, not
>> metadata should be shared.
>>
>> In the solution you are suggesting (quoted above), you say we need
>> to set mi->priv_size to md->priv_size in rte_pktmbuf_attach(). I felt
>> this was not possible, but it depends on the meaning we give to
>> priv_size:
>>
>> 1. If the meaning is "the size of the private data embedded in this
>> mbuf", which is the most logical meaning, we cannot do this
>> affectation
>>
>> 2. If the meaning is "the size of the private data embedded in the
>> mbuf the buf_addr is pointing to" (which is harder to get), the
>> affectation makes sense.
>>
>> From what I understand, you feel we should use 2/ as priv_size
>> definition. Is it correct?
>>
>> In my previous message, the definition of m->priv_size was 1/,
>> so that's why I felt assigning mi->priv_size to md->priv_size was
>> not possible.
>>
>> I agree 2/ is probably a good choice, as it would allow to attach
>> to a mbuf with a different priv_size. It may require some additional
>> comments above the field in the structure to explain that.
> I think we need to document it in the comments very well that you can
> attach mbuf's to each other with different private area sizes, and
> applications should care about this difference. And we should give a
> macro to get the private area size, which will get rte_mbuf.mp->priv_size.
> Actually we should give some better name to rte_mbuf.priv_size, it's a
> bit misleading now. Maybe direct_priv_size?
I agree it should be well documented in the API comments, but I'm
not sure it's worth changing the name of the field. After all,
m->buf_addr and m->buf_len are also related to the buffer of the
direct mbuf without beeing named "direct_*".
>>>>> Introducing rte_mbuf_pool_create() seems a good idea to me, it
>>>>> would hide 'rte_pktmbuf_pool_private' from the user and force
>>>>> to initialize all the required fields (mbuf_data_room_size only
>>>>> today, and maybe mbuf_priv_size).
>>>>>
>>>>> The API would be:
>>>>>
>>>>> struct rte_mempool *
>>>>> rte_mbuf_pool_create(const char *name, unsigned n, unsigned elt_size,
>>>>> unsigned cache_size, size_t mbuf_priv_size,
>>>>> rte_mempool_obj_ctor_t *obj_init, void *obj_init_arg,
>>>>> int socket_id, unsigned flags)
>>>>>
>>>>> I can give it a try and send a patch for this.
>>>>
>>>> About this, it is not required anymore for this patch series if we
>>>> agree with my comment above.
>>>
>>> I still think we need some way to setup priv_size on a per-mempool
>>> basis.
>>> Doing that in rte_mbuf_pool_create() seems like a good thing to me.
>>> Not sure, why you decided to drop it?
>>
>> I think we can already do it without changing the API by providing
>> our own rte_pktmbuf_init and rte_pktmbuf_pool_init.
>>
>> rte_pktmbuf_init() has to set:
>> m->buf_len = mp->elt_size - sizeof(struct mbuf);
>> m->priv_size = sizeof(struct mbuf) - sizeof(struct rte_mbuf);
> What's struct mbuf? If we take my assumption above, direct_priv_size
> could go uninitalized, and we can set it when attaching.
In this example, "struct mbuf" is the mbuf used by the application:
struct mbuf {
struct rte_mbuf rte_mb;
struct app_private priv;
};
Therefore, we have:
sizeof(struct mbuf) = sizeof(struct rte_mbuf) +
sizeof(struct app_private);
About keeping the m->priv_size field not initialized, I'm not really
convinced because we would always have to use the pool->mbuf_priv_size
when we want to get the address of data buffer embedded in a mbuf. This
implies several indirections, and we have only one if the info is
already in the mbuf.
>> rte_pktmbuf_pool_init() has to set:
>> /* we can use the default function */
>> mbp_priv->mbuf_data_room_size = MBUF_RXDATA_SIZE +
>> RTE_PKTMBUF_HEADROOM;
>>
>> In this case, it is possible to calculate the mbuf_priv_size only
>> from the pool object:
>>
>> mbuf_priv_size = pool->elt_size - RTE_PKTMBUF_HEADROOM -
>> pool_private->mbuf_data_room_size -
>> sizeof(rte_mbuf)
> My understanding is that the pool private date is something completely
> different than the private data of the mbufs. I think
> rte_mempool.priv_size should be initialized in *mp_init.
As I said in my previous mail, I think we don't need to have
pool_private->mbuf_priv_size for this series, as it can be
calculated from what we already have in pool_private. I'll send
a v3 patch that implement this solution, and it can be a base for
discussions.
However, I think the way mbuf pools are initialized may need some
rework, maybe using rte_mbuf_pool_create() as Konstantin suggested.
I'll try to do some reworks in this area in another series.
Regards,
Olivier
>
>>
>>
>> I agree it's not ideal, but I think the mbuf pool initialization
>> is another problem. That's why I suggested to change this in a
>> separate series that will add rte_mbuf_pool_create() with the
>> API described above. Thoughts?
>
>
>>
>>
>> Thanks,
>> Olivier
>>
>>
>>>
>>> Konstantin
>>>
>>>>
>>>> I'll send a separate patch for that. It's probably a good occasion
>>>> to get rid of the pointer casted into an integer for
>>>> mbuf_data_room_size.
>>>>
>>>> Regards,
>>>> Olivier
next prev parent reply other threads:[~2015-03-28 21:19 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-25 17:00 [PATCH 0/5] mbuf: enhancements of mbuf clones Olivier Matz
[not found] ` <1427302838-8285-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-25 17:00 ` [PATCH 1/5] mbuf: fix clone support when application uses private mbuf data Olivier Matz
[not found] ` <1427302838-8285-2-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-26 13:35 ` Bruce Richardson
2015-03-26 15:30 ` Olivier MATZ
2015-03-25 17:00 ` [PATCH 2/5] mbuf: allow to clone an indirect mbuf Olivier Matz
2015-03-25 17:00 ` [PATCH 3/5] test/mbuf: rename mc variable in m Olivier Matz
2015-03-25 17:00 ` [PATCH 4/5] test/mbuf: enhance mbuf refcnt test Olivier Matz
2015-03-25 17:00 ` [PATCH 5/5] test/mbuf: verify that cloning a clone works properly Olivier Matz
[not found] ` <1427302838-8285-6-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-26 8:48 ` Olivier MATZ
2015-03-26 15:59 ` [PATCH v2 0/5] mbuf: enhancements of mbuf clones Olivier Matz
[not found] ` <1427385595-15011-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-26 15:59 ` [PATCH v2 1/5] mbuf: fix clone support when application uses private mbuf data Olivier Matz
[not found] ` <1427385595-15011-2-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-26 17:13 ` Zoltan Kiss
2015-03-27 0:24 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB97725821407D4D-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-27 9:07 ` Olivier MATZ
[not found] ` <55151DDE.8040301-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-27 13:56 ` Olivier MATZ
[not found] ` <55156188.6040101-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-27 14:25 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB9772582140814C-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-27 15:17 ` Olivier MATZ
[not found] ` <55157477.7090207-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-27 18:11 ` Zoltan Kiss
[not found] ` <55159D39.1040608-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-03-28 21:19 ` Olivier MATZ [this message]
2015-03-30 12:34 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB9772582140FB21-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-30 19:55 ` Olivier MATZ
[not found] ` <5519AA46.1090409-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-30 23:17 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB97725821412EE9-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-31 19:01 ` Olivier MATZ
[not found] ` <551AEF08.8020009-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-01 13:48 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB9772582141368A-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-01 15:18 ` Olivier MATZ
2015-03-26 15:59 ` [PATCH v2 2/5] mbuf: allow to clone an indirect mbuf Olivier Matz
2015-03-26 15:59 ` [PATCH v2 3/5] test/mbuf: rename mc variable in m Olivier Matz
2015-03-26 15:59 ` [PATCH v2 4/5] test/mbuf: enhance mbuf refcnt test Olivier Matz
2015-03-26 15:59 ` [PATCH v2 5/5] test/mbuf: verify that cloning a clone works properly Olivier Matz
2015-03-31 19:22 ` [PATCH v3 0/5] mbuf: enhancements of mbuf clones Olivier Matz
[not found] ` <1427829784-12323-1-git-send-email-zer0-RqaWXwjnwG4BE+pwOMkbTQ@public.gmane.org>
2015-03-31 19:23 ` [PATCH v3 1/5] mbuf: fix clone support when application uses private mbuf data Olivier Matz
[not found] ` <1427829784-12323-2-git-send-email-zer0-RqaWXwjnwG4BE+pwOMkbTQ@public.gmane.org>
2015-04-02 14:32 ` Zoltan Kiss
2015-04-02 17:21 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB97725821413A2D-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-06 21:49 ` Olivier MATZ
[not found] ` <5522FF6B.1030503-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-07 12:40 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB97725821414310-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-07 15:45 ` Olivier MATZ
[not found] ` <5523FB9B.2060508-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-07 17:17 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB9772582141451F-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-08 9:44 ` Olivier MATZ
[not found] ` <5524F876.8090900-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-08 13:45 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB97725821414805-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-09 13:06 ` Olivier MATZ
2015-04-20 15:41 ` [PATCH v4 00/12] mbuf: enhancements of mbuf clones Olivier Matz
[not found] ` <1429544496-22532-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-20 15:41 ` [PATCH v4 01/12] mbuf: fix mbuf data room size calculation rte_pktmbuf_pool_init Olivier Matz
2015-04-20 15:41 ` [PATCH v4 02/12] examples: always initialize mbuf_pool private area Olivier Matz
2015-04-20 15:41 ` [PATCH v4 03/12] mbuf: add accessors to get data room size and private size Olivier Matz
2015-04-20 15:41 ` [PATCH v4 04/12] mbuf: fix rte_pktmbuf_init when mbuf private size is not zero Olivier Matz
2015-04-20 15:41 ` [PATCH v4 05/12] testpmd: use standard functions to initialize mbufs and mbuf pool Olivier Matz
2015-04-20 15:41 ` [PATCH v4 06/12] mbuf: introduce a new helper to create a " Olivier Matz
2015-04-20 15:41 ` [PATCH v4 07/12] apps: use rte_pktmbuf_pool_create to create mbuf pools Olivier Matz
2015-04-20 15:41 ` [PATCH v4 08/12] mbuf: fix clone support when application uses private mbuf data Olivier Matz
2015-04-20 15:41 ` [PATCH v4 09/12] mbuf: allow to clone an indirect mbuf Olivier Matz
2015-04-20 15:41 ` [PATCH v4 10/12] test/mbuf: rename mc variable in m Olivier Matz
2015-04-20 15:41 ` [PATCH v4 11/12] test/mbuf: enhance mbuf refcnt test Olivier Matz
2015-04-20 15:41 ` [PATCH v4 12/12] test/mbuf: verify that cloning a clone works properly Olivier Matz
2015-04-20 16:53 ` [PATCH v4 00/12] mbuf: enhancements of mbuf clones Neil Horman
[not found] ` <20150420165333.GB19573-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-04-20 17:07 ` Olivier MATZ
[not found] ` <55353253.9050804-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-20 17:21 ` Neil Horman
[not found] ` <20150420172140.GC19573-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-04-20 18:24 ` Olivier MATZ
2015-04-21 9:55 ` [PATCH v5 " Olivier Matz
[not found] ` <1429610122-30943-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-21 9:55 ` [PATCH v5 01/12] mbuf: fix mbuf data room size calculation rte_pktmbuf_pool_init Olivier Matz
2015-04-21 9:55 ` [PATCH v5 02/12] examples: always initialize mbuf_pool private area Olivier Matz
2015-04-21 9:55 ` [PATCH v5 03/12] mbuf: add accessors to get data room size and private size Olivier Matz
2015-04-21 9:55 ` [PATCH v5 04/12] mbuf: fix rte_pktmbuf_init when mbuf private size is not zero Olivier Matz
[not found] ` <1429610122-30943-5-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-21 15:07 ` Ananyev, Konstantin
2015-04-21 9:55 ` [PATCH v5 05/12] testpmd: use standard functions to initialize mbufs and mbuf pool Olivier Matz
2015-04-21 9:55 ` [PATCH v5 06/12] mbuf: introduce a new helper to create a " Olivier Matz
2015-04-21 9:55 ` [PATCH v5 07/12] apps: use rte_pktmbuf_pool_create to create mbuf pools Olivier Matz
2015-04-21 9:55 ` [PATCH v5 08/12] mbuf: fix clone support when application uses private mbuf data Olivier Matz
[not found] ` <1429610122-30943-9-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-21 15:01 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB9772582142095C-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-21 15:26 ` Olivier MATZ
2015-04-21 9:55 ` [PATCH v5 09/12] mbuf: allow to clone an indirect mbuf Olivier Matz
2015-04-21 9:55 ` [PATCH v5 10/12] test/mbuf: rename mc variable in m Olivier Matz
2015-04-21 9:55 ` [PATCH v5 11/12] test/mbuf: enhance mbuf refcnt test Olivier Matz
2015-04-21 9:55 ` [PATCH v5 12/12] test/mbuf: verify that cloning a clone works properly Olivier Matz
2015-04-21 11:50 ` [PATCH v5 00/12] mbuf: enhancements of mbuf clones Neil Horman
2015-04-22 9:57 ` [PATCH v6 00/13] " Olivier Matz
[not found] ` <1429696650-9043-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-22 9:57 ` [PATCH v6 01/13] mbuf: fix mbuf data room size calculation rte_pktmbuf_pool_init Olivier Matz
2015-04-22 9:57 ` [PATCH v6 02/13] examples: always initialize mbuf_pool private area Olivier Matz
2015-04-22 9:57 ` [PATCH v6 03/13] mbuf: add accessors to get data room size and private size Olivier Matz
[not found] ` <1429696650-9043-4-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-04-28 9:15 ` Thomas Monjalon
2015-04-22 9:57 ` [PATCH v6 04/13] mbuf: fix rte_pktmbuf_init when mbuf private size is not zero Olivier Matz
2015-04-22 9:57 ` [PATCH v6 05/13] testpmd: use standard functions to initialize mbufs and mbuf pool Olivier Matz
2015-04-22 9:57 ` [PATCH v6 06/13] mbuf: introduce a new helper to create a " Olivier Matz
2015-04-22 9:57 ` [PATCH v6 07/13] apps: use rte_pktmbuf_pool_create to create mbuf pools Olivier Matz
2015-04-22 9:57 ` [PATCH v6 08/13] mbuf: fix clone support when application uses private mbuf data Olivier Matz
2015-04-22 9:57 ` [PATCH v6 09/13] mbuf: allow to clone an indirect mbuf Olivier Matz
2015-04-22 9:57 ` [PATCH v6 10/13] test/mbuf: rename mc variable in m Olivier Matz
2015-04-22 9:57 ` [PATCH v6 11/13] test/mbuf: enhance mbuf refcnt test Olivier Matz
2015-04-22 9:57 ` [PATCH v6 12/13] test/mbuf: verify that cloning a clone works properly Olivier Matz
2015-04-22 9:57 ` [PATCH v6 13/13] test/mbuf: add a test case for clone with different priv size Olivier Matz
2015-04-22 11:59 ` [PATCH v6 00/13] mbuf: enhancements of mbuf clones Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB97725821420BD6-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-04-24 10:38 ` Zoltan Kiss
[not found] ` <553A1D3B.5040400-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-04-27 17:38 ` Thomas Monjalon
2015-04-28 11:15 ` Zoltan Kiss
2015-05-07 1:57 ` Xu, HuilongX
[not found] ` <DF2A19295B96364286FEB7F3DDA27A460110388E-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-07 7:32 ` Olivier MATZ
[not found] ` <554B14F9.5020508-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-05-07 9:39 ` Ananyev, Konstantin
2015-04-28 9:50 ` Thomas Monjalon
2015-03-31 19:23 ` [PATCH v3 2/5] mbuf: allow to clone an indirect mbuf Olivier Matz
2015-03-31 19:23 ` [PATCH v3 3/5] test/mbuf: rename mc variable in m Olivier Matz
2015-03-31 19:23 ` [PATCH v3 4/5] test/mbuf: enhance mbuf refcnt test Olivier Matz
2015-03-31 19:23 ` [PATCH v3 5/5] test/mbuf: verify that cloning a clone works properly 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=55171AD0.7040702@6wind.com \
--to=olivier.matz-pdr9zngts4eavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=zoltan.kiss-QSEj5FYQhm4dnm+yROfE0A@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.