All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier MATZ <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: "Ananyev,
	Konstantin"
	<konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"dev-VfR2kkLFssw@public.gmane.org"
	<dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: [PATCH v3 1/5] mbuf: fix clone support when application uses private mbuf data
Date: Wed, 08 Apr 2015 11:44:22 +0200	[thread overview]
Message-ID: <5524F876.8090900@6wind.com> (raw)
In-Reply-To: <2601191342CEEE43887BDE71AB9772582141451F-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>

Hi Konstantin,

On 04/07/2015 07:17 PM, Ananyev, Konstantin wrote:
>> Just to be sure we're on the same line:
>>
>> - before the patch series
>>
>>     - private area was working before that patch series if clones were not
>>       used. To use a private are, the user had to provide another
>>       function derived from pktmbuf_init() to change m->buf_addr and
>>       m->buf_len.
>>     - using both private area + clones was broken
>>
>> - after the patch series
>>
>>     - private area is working with or without clone. But yo use it,
>>       the user still has to provide another function to change
>>       m->buf_addr, m->buf_len *and m->priv_size*.
>>
>> The series just fixes the fact that "clones + priv" was not working.
>> It does not address the problem that providing a new pktmbuf_init()
>> function is required to use privata area. To fix this, I think it
>> could require a API evolution that should be part of another series.
>
> I don't think we need new pktmbuf_init().
> We just need to update it, so both pktmbuf_init() and detach() setup
> buf_addr, buf_len (and priv_size) to exactly the same values.
> If they don't do that, it means that you can't use attach/detach with
> mempools created with pktmbuf_init() any more.
>
> BTW, another thing that I just realised:
> examples/ipv4_multicast and examples/ip_fragmentation/ -
> both create a pool of mbufs with elem_size < 2K and don't populate mempool's private area -
> so mbp_priv->mbuf_data_room_size == 0, for them.
>
> So that code in detach():
>
>   +	mbp_priv = rte_mempool_get_priv(mp);
>   +	m->priv_size = mp->elt_size - RTE_PKTMBUF_HEADROOM -
>   +		mbp_priv->mbuf_data_room_size -
>   +		sizeof(struct rte_mbuf);
>
>
> Would break both these samples.
> I suppose we need to handle situation when mp->elt_size < RTE_PKTMBUF_HEADROOM + sizeof(struct rte_mbuf),
> (and probably also when mbuf_data_room_size == 0) correctly.

Indeed. I think a mbuf pool (even with buf_len == 0 like in
ip_fragmentation example) should have a pool with a private area and
should call rte_pktmbuf_pool_init() to populate it. So
rte_pktmbuf_pool_init() has to be fixed first to use elt_size
and support the buf_len < RTE_PKTMBUF_HEADROOM, then we can
update frag/multicast examples.

Unfortunately, we don't know the size of the mbuf private area
in rte_pktmbuf_pool_init() if the opaque arg (data_room_size)
is 0, which is the default. I think it should be replaced by a structure
containing data_room_size and mbuf_priv_size, but it would break
applications that are setting data_room_size. I don't see any good
solution to do that while keeping a backward compatibility for
rte_pktmbuf_pool_init(), but as the current API is not ideal,
I think it's worth changing it and add something in the release
note.

We may also want to introduce a new helper as discussed previously:

struct rte_mempool *
rte_pktmbuf_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)

Any comment?


>
> Konstantin

  parent reply	other threads:[~2015-04-08  9:44 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
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 [this message]
     [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=5524F876.8090900@6wind.com \
    --to=olivier.matz-pdr9zngts4eavxtiumwx3w@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@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.