From: Olivier Matz <olivier.matz@6wind.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: dev@dpdk.org, bruce.richardson@intel.com
Subject: Re: [PATCH 1/4] lpm: allocation of an existing object should fail
Date: Thu, 31 Mar 2016 09:35:10 +0200 [thread overview]
Message-ID: <56FCD32E.2090707@6wind.com> (raw)
In-Reply-To: <20160330144649.670d66d1@xeon-e3>
Hi Stephen,
On 03/30/2016 11:46 PM, Stephen Hemminger wrote:
> On Wed, 30 Mar 2016 17:30:24 +0200
> Olivier Matz <olivier.matz@6wind.com> wrote:
>
>> diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
>> index 4c44cd7..9877a30 100644
>> --- a/lib/librte_lpm/rte_lpm6.c
>> +++ b/lib/librte_lpm/rte_lpm6.c
>> @@ -182,8 +182,11 @@ rte_lpm6_create(const char *name, int socket_id,
>> if (strncmp(name, lpm->name, RTE_LPM6_NAMESIZE) == 0)
>> break;
>> }
>> - if (te != NULL)
>> + if (te != NULL) {
>> + lpm = NULL;
>> + rte_errno = EEXIST;
>> goto exit;
>> + }
>>
>> /* allocate tailq entry */
>>
>
> with older memzone model, objects in huge memory area were never freed.
> That means when application restarts it finds the old LPM and works.
> With your change it would break such an application.
>
Could you be more precise about the use case you are
describing? Are you talking about a secondary process?
The API description of lpm and hash says since the first
release that EEXIST should be returned if a memzone with
the same name already exists:
* @return
* Handle to LPM object on success, NULL otherwise with rte_errno set
* to an appropriate values. Possible rte_errno values include:
* - E_RTE_NO_CONFIG - function could not get pointer to rte_config
structure
* - E_RTE_SECONDARY - function was called from a secondary process
instance
* - EINVAL - invalid parameter passed to function
* - ENOSPC - the maximum number of memzones has already been allocated
* - EEXIST - a memzone with the same name already exists
* - ENOMEM - no appropriate memory area found in which to create memzone
*/
struct rte_lpm *
rte_lpm_create(const char *name, int socket_id,
const struct rte_lpm_config *config);
* @return
* Pointer to hash table structure that is used in future hash table
* operations, or NULL on error, with error code set in rte_errno.
* Possible rte_errno errors include:
* - E_RTE_NO_CONFIG - function could not get pointer to rte_config
structure
* - E_RTE_SECONDARY - function was called from a secondary process
instance
* - ENOENT - missing entry
* - EINVAL - invalid parameter passed to function
* - ENOSPC - the maximum number of memzones has already been allocated
* - EEXIST - a memzone with the same name already exists
* - ENOMEM - no appropriate memory area found in which to create memzone
*/
struct rte_hash *
rte_hash_create(const struct rte_hash_parameters *params);
>From my point of view, the behavior I'm fixing is more a bug
fix than an API change. But if required, I can send a deprecation
notice for 16.04 and have the fix integrated for 16.07.
next prev parent reply other threads:[~2016-03-31 7:35 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-15 12:25 [RFC] hash/lpm: return NULL if the object exists Olivier Matz
2016-03-25 10:32 ` Olivier Matz
2016-03-25 10:45 ` Bruce Richardson
2016-03-30 15:30 ` [PATCH 0/4] fix lpm and hash creation Olivier Matz
2016-03-30 15:30 ` [PATCH 1/4] lpm: allocation of an existing object should fail Olivier Matz
2016-03-30 21:46 ` Stephen Hemminger
2016-03-31 7:35 ` Olivier Matz [this message]
2016-04-01 16:25 ` Olivier Matz
2016-03-31 10:55 ` Bruce Richardson
2016-03-30 15:30 ` [PATCH 2/4] hash: " Olivier Matz
2016-03-30 15:30 ` [PATCH 3/4] hash: keep the list locked at creation Olivier Matz
2016-03-30 15:30 ` [PATCH 4/4] autotest: fix func reentrancy Olivier Matz
2016-03-31 7:35 ` [PATCH 0/4] fix lpm and hash creation Olivier Matz
2016-04-05 7:35 ` [PATCH v2 0/4] fix creation of duplicate lpm and hash Olivier Matz
2016-04-05 7:35 ` [PATCH v2 1/4] lpm: allocation of an existing object should fail Olivier Matz
2016-04-05 7:35 ` [PATCH v2 2/4] hash: " Olivier Matz
2016-04-05 7:35 ` [PATCH v2 3/4] hash: keep the list locked at creation Olivier Matz
2016-04-05 11:05 ` De Lara Guarch, Pablo
2016-04-05 7:35 ` [PATCH v2 4/4] autotest: fix func reentrancy Olivier Matz
2016-04-05 11:00 ` De Lara Guarch, Pablo
2016-04-05 11:53 ` [PATCH v3 0/4] fix creation of duplicate lpm and hash Olivier Matz
2016-04-05 11:53 ` [PATCH v3 1/4] lpm: allocation of an existing object should fail Olivier Matz
2016-04-05 11:53 ` [PATCH v3 2/4] hash: " Olivier Matz
2016-04-05 11:53 ` [PATCH v3 3/4] hash: keep the list locked at creation Olivier Matz
2016-04-05 11:53 ` [PATCH v3 4/4] autotest: fix func reentrancy Olivier Matz
2016-04-05 15:51 ` [PATCH v3 0/4] fix creation of duplicate lpm and hash Thomas Monjalon
2016-04-06 10:11 ` De Lara Guarch, Pablo
2016-04-06 10:32 ` De Lara Guarch, Pablo
2016-04-06 11:14 ` Olivier Matz
2016-04-06 11:20 ` De Lara Guarch, Pablo
2016-04-06 11:57 ` Olivier Matz
2016-04-06 13:27 ` [PATCH v4 " Olivier Matz
2016-04-06 13:27 ` [PATCH v4 1/4] lpm: allocation of an existing object should fail Olivier Matz
2016-04-06 13:27 ` [PATCH v4 2/4] hash: " Olivier Matz
2016-04-06 13:28 ` [PATCH v4 3/4] hash: keep the list locked at creation Olivier Matz
2016-04-06 13:28 ` [PATCH v4 4/4] autotest: fix func reentrancy Olivier Matz
2016-04-06 15:31 ` [PATCH v4 0/4] fix creation of duplicate lpm and hash Thomas Monjalon
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=56FCD32E.2090707@6wind.com \
--to=olivier.matz@6wind.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=stephen@networkplumber.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.