All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yasufumi Ogawa <yasufum.o@gmail.com>
To: "Burakov, Anatoly" <anatoly.burakov@intel.com>
Cc: David Marchand <david.marchand@redhat.com>,
	"Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
	dev <dev@dpdk.org>, Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
Subject: Re: [dpdk-dev] [PATCH v7 1/1] fbarray: fix duplicated fbarray file in secondary
Date: Fri, 6 Dec 2019 05:13:52 +0900	[thread overview]
Message-ID: <9fa34e1d-8140-63a7-f25d-8e02415b2840@gmail.com> (raw)
In-Reply-To: <a64bafdd-1836-f47d-cf41-e7d8ccb3bfab@intel.com>

Hi Anatoly,

On 2019/12/02 19:43, Burakov, Anatoly wrote:
> On 29-Nov-19 5:44 AM, Yasufumi Ogawa wrote:
>> Hi Anatoly,
>>
>> On 2019/11/27 19:26, Burakov, Anatoly wrote:
>>> On 26-Nov-19 7:40 PM, Yasufumi Ogawa wrote:
>>>> Hi David,
>>>>
>>>> Sorry for slow reply.
>>>>
>>>> On 2019/11/14 21:27, David Marchand wrote:
>>>>> On Thu, Nov 14, 2019 at 12:42 PM Yasufumi Ogawa 
>>>>> <yasufum.o@gmail.com> wrote:
>>>>>>
>>>>>> On 2019/11/14 2:01, Burakov, Anatoly wrote:
>>>>>>> On 13-Nov-19 9:43 PM, yasufum.o@gmail.com wrote:
>>>>>>>> From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
>>>>>>>>
>>>>>>>> In secondary_msl_create_walk(), it creates a file for fbarrays 
>>>>>>>> with its
>>>>>>>> PID for reserving unique name among secondary processes. 
>>>>>>>> However, it
>>>>>>>> does not work if several secondaries run as app containers 
>>>>>>>> because each
>>>>>>>> of containerized secondary has PID 1, and failed to reserve 
>>>>>>>> unique name
>>>>>>>> other than first one. To reserve unique name in each of 
>>>>>>>> containers, use
>>>>>>>> hostname in addition to PID.
>>>>>>>>
>>>>>>>> Cc: stable@dpdk.org
>>>>>>>>
>>>>>>>> Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
>>>>>>>> ---
>>>>>>>>    lib/librte_eal/linux/eal/eal_memalloc.c | 16 +++++++++++++---
>>>>>>>>    1 file changed, 13 insertions(+), 3 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/lib/librte_eal/linux/eal/eal_memalloc.c
>>>>>>>> b/lib/librte_eal/linux/eal/eal_memalloc.c
>>>>>>>> index af6d0d023..11de6d4d6 100644
>>>>>>>> --- a/lib/librte_eal/linux/eal/eal_memalloc.c
>>>>>>>> +++ b/lib/librte_eal/linux/eal/eal_memalloc.c
>>>>>>>> @@ -1365,6 +1365,12 @@ secondary_msl_create_walk(const struct
>>>>>>>> rte_memseg_list *msl,
>>>>>>>>        struct rte_memseg_list *primary_msl, *local_msl;
>>>>>>>>        char name[PATH_MAX];
>>>>>>>>        int msl_idx, ret;
>>>>>>>> +    char hostname[HOST_NAME_MAX+1] = { 0 };
>>>>>>>> +    /* filename of secondary's fbarray is defined such as
>>>>>>>> +     * "fbarray_memseg-1048576k-0-0_PID_HOSTNAME" and length of 
>>>>>>>> PID
>>>>>>>> +     * can be 7 digits maximumly.
>>>>>>>> +     */
>>>>>>>> +    int fbarray_sec_name_len = 32 + 7 + 1 + HOST_NAME_MAX + 1;
>>>>>>>
>>>>>>> What does 32 stand for? Maybe #define both 32 and 7 values?
>>>>>> Hi Anatoly,
>>>>>>
>>>>>> Thank you for your comments! If my understanding is correct, the 
>>>>>> prefix
>>>>>> "fbarray_memseg-1048576k-0-0_" is 28 digits and it could be larger if
>>>>>> using the size of hugepage or the number of NUMA nodes are larger
>>>>>> possibly. However, I think 32 digits is still enough.
>>>>>>
>>>>>>   > Maybe #define both 32 and 7 values?
>>>>>> Yes. I think it should be better to use #define if this values are
>>>>>> referred several times.
>>>>>
>>>>>
>>>>> We can truncate to RTE_FBARRAY_NAME_LEN in all cases.
>>>>> And iiuc, rte_fbarray_init will refuse any longer name anyway.
>>>> Could I confirm the issue? I've understood that it is failed to 
>>>> validate the name of fbarray in fully_validate() at 
>>>> "lib/librte_eal/common/eal_common_fbarray.c:697".
>>>>
>>>> static int
>>>> fully_validate(const char *name, unsigned int elt_sz, unsigned int len)
>>>> {
>>>>          if (name == NULL || elt_sz == 0 || len == 0 || len > 
>>>> INT_MAX) {
>>>>                  rte_errno = EINVAL;
>>>>                  return -1;
>>>>          }
>>>>
>>>>          if (strnlen(name, RTE_FBARRAY_NAME_LEN) == 
>>>> RTE_FBARRAY_NAME_LEN) {
>>>>                  rte_errno = ENAMETOOLONG;
>>>>                  return -1;
>>>>          }
>>>>          return 0;
>>>> }
>>>>
>>>> I should overwrite the definition of RTE_FBARRAY_NAME_LEN as 
>>>> previous patch in this case, and it causes an ABI breakage, right? 
>>>> If so, I would like to make the change and give up to update stable 
>>>> release.
>>>>
>>>> Thanks,
>>>> Yasufumi
>>>>
>>>
>>> It seems we're getting into bikeshedding...
>>>
>>> We can do this without ABI breakage. You could have just used 
>>> RTE_FBARRAY_NAME_LEN as max fbarray name length for 
>>> fbarray_sec_name_len (i.e. that would include hostname + pid + 
>>> whatever else there is). The name, as David has pointed out, would be 
>>> truncated to RTE_FBARRAY_NAME_LEN anyway (or, more precisely, it will 
>>> be refused if it's longer than that), so this is the most you can 
>>> have - so you can just use that as the maximum.
>> I sent v8 patch to change the size of RTE_FBARRAY_NAME_LEN itself to 
>> be allowed the size of secondary's fbarray over 64 bytes. I appreciate 
>> if you agree that.
>>
> 
> Why not just limit the name to RTE_FBARRAY_NAME_LEN instead of changing 
> the definition of RTE_FBARRAY_NAME_LEN?

Could I confirm my understanding? I understand that RTE_FBARRAY_NAME_LEN 
is 64 currently and it is not enough for secondary in a container if 
hostname is added to the name of secondary's fbarray.

Regards,
Yasufumi

> 
> One the other hand, technically, fbarray API is experimental. The only 
> structure that uses rte_fbarray is rte_memseg_list, but API's using 
> either rte_fbarray or rte_memseg_list are either internal (memory/VFIO 
> subsystem), or are marked as experimental (walk functions).
> 
> So i *think* we're actually OK with changing the length of 
> RTE_FBARRAY_NAME_LEN as far as ABI policy goes: nothing in the stable 
> ABI gets affected. David, thoughts?
> 
> (i think it's probably time to make experimental memory/fbarray stuff 
> stable, but that's a different conversation...)
> 
>> Thanks,
>> Yasufumi
>>
> 
> 

  reply	other threads:[~2019-12-05 20:13 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-16  1:59 [dpdk-dev] [PATCH] fbarray: get fbarrays from containerized secondary ogawa.yasufumi
2019-04-16  3:43 ` [dpdk-dev] [PATCH v2 0/1] Get " ogawa.yasufumi
2019-04-16  3:43   ` [dpdk-dev] [PATCH v2 1/1] fbarray: get " ogawa.yasufumi
2019-07-04 20:17     ` Thomas Monjalon
2019-07-05  8:53     ` Burakov, Anatoly
2019-07-09 10:22       ` Yasufumi Ogawa
2019-07-09 10:24         ` Burakov, Anatoly
2019-07-09 10:26           ` Burakov, Anatoly
2019-07-11  9:37             ` Yasufumi Ogawa
2019-07-11  9:43               ` Burakov, Anatoly
2019-07-11 10:31 ` [dpdk-dev] [PATCH v3 0/1] " yasufum.o
2019-07-11 10:31   ` [dpdk-dev] [PATCH v3 1/1] " yasufum.o
2019-07-11 10:53     ` Burakov, Anatoly
2019-07-11 11:57       ` Yasufumi Ogawa
2019-07-11 13:14         ` Burakov, Anatoly
2019-07-12  2:22           ` Yasufumi Ogawa
2019-07-22  1:06             ` Ogawa Yasufumi
2019-07-22  9:33               ` Burakov, Anatoly
2019-07-22  9:25             ` Burakov, Anatoly
2019-07-24  8:20   ` [dpdk-dev] [PATCH v4 0/1] " yasufum.o
2019-07-24  8:20     ` [dpdk-dev] [PATCH v4 1/1] " yasufum.o
2019-07-24  9:59       ` Burakov, Anatoly
2019-07-30  8:16         ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2019-07-30  9:18           ` Burakov, Anatoly
2019-07-31  5:48             ` Yasufumi Ogawa
2019-10-11  9:36       ` [dpdk-dev] " David Marchand
2019-10-25 15:36         ` David Marchand
2019-10-25 19:54           ` Yasufumi Ogawa
2019-10-26 16:15             ` David Marchand
2019-10-26 18:11               ` Yasufumi Ogawa
2019-10-28  8:07     ` [dpdk-dev] [PATCH v5 0/1] fbarray: fix duplicated fbarray file in secondary yasufum.o
2019-10-28  8:07       ` [dpdk-dev] [PATCH v5 1/1] " yasufum.o
2019-10-29 12:03         ` Ananyev, Konstantin
2019-10-30 13:42           ` Yasufumi Ogawa
2019-10-30 19:00             ` Ananyev, Konstantin
2019-10-31 10:03               ` Yasufumi Ogawa
2019-10-31 10:32                 ` Ananyev, Konstantin
2019-11-01  9:04     ` [dpdk-dev] [PATCH v6 0/1] " yasufum.o
2019-11-01  9:04       ` [dpdk-dev] [PATCH v6 1/1] " yasufum.o
2019-11-01 12:01         ` Ananyev, Konstantin
2019-11-04 10:20         ` Burakov, Anatoly
2019-11-05 10:13           ` David Marchand
2019-11-05 11:31             ` Burakov, Anatoly
2019-11-05 11:41               ` Ananyev, Konstantin
2019-11-06 10:37                 ` Burakov, Anatoly
2019-11-08  3:19                   ` Yasufumi Ogawa
2019-11-13 21:43     ` [dpdk-dev] [PATCH v7 0/1] " yasufum.o
2019-11-13 21:43       ` [dpdk-dev] [PATCH v7 1/1] " yasufum.o
2019-11-14 10:01         ` Burakov, Anatoly
2019-11-14 11:42           ` Yasufumi Ogawa
2019-11-14 12:27             ` David Marchand
2019-11-26 19:40               ` Yasufumi Ogawa
2019-11-27 10:26                 ` Burakov, Anatoly
2019-11-29  5:44                   ` Yasufumi Ogawa
2019-12-02 10:43                     ` Burakov, Anatoly
2019-12-05 20:13                       ` Yasufumi Ogawa [this message]
2019-11-14 12:55         ` David Marchand
2019-11-14 17:32         ` Ananyev, Konstantin
2019-11-27  8:48       ` [dpdk-dev] [PATCH v8 0/1] " Yasufumi Ogawa
2019-11-27  8:48         ` [dpdk-dev] [PATCH v8 1/1] " Yasufumi Ogawa
2019-12-06 10:44           ` Burakov, Anatoly
2019-12-06 13:18             ` Yasufumi Ogawa
2020-02-14  7:46             ` Yasufumi Ogawa
2020-02-14 15:08               ` David Marchand
2020-02-14 15:29                 ` Thomas Monjalon
2020-02-17 12:54                   ` Yasufumi Ogawa
2023-06-13 16:51 ` [dpdk-dev] [PATCH] fbarray: get fbarrays from containerized secondary Stephen Hemminger

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=9fa34e1d-8140-63a7-f25d-8e02415b2840@gmail.com \
    --to=yasufum.o@gmail.com \
    --cc=anatoly.burakov@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@intel.com \
    --cc=ogawa.yasufumi@lab.ntt.co.jp \
    /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.