[dpdk-dev] [RFC] mem: add atomic lookup-and-reserve/free memzone API

Burakov, Anatoly anatoly.burakov at intel.com
Wed May 6 11:35:10 CEST 2020


On 05-May-20 4:01 PM, Bruce Richardson wrote:
> On Tue, May 05, 2020 at 02:24:07PM +0000, Anatoly Burakov wrote:
>> Currently, in order to perform a memzone lookup and create/free
>> the memzone, the user has to call two API's, creating a race
>> condition. This is particularly destructive for memzone_free call
>> because the reference provided to memzone_free at the time of call
>> may be stale or refer to a different memzone altogether.
>>
>> Fix this race condition by adding an API to perform lookup and
>> create/free memzone in one go.
>>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
>> ---
>>   lib/librte_eal/common/eal_common_memzone.c | 125 ++++++++---
>>   lib/librte_eal/include/rte_memzone.h       | 235 +++++++++++++++++++++
>>   lib/librte_eal/rte_eal_version.map         |   4 +
>>   3 files changed, 340 insertions(+), 24 deletions(-)
>>
> While I agree that there is a race, is this really a problem in the real
> world? Do we really need to expand the number of APIs for allocating memory
> further?
> 

I'm not sure how much of a problem it is, hence why this is an RFC 
rather than a full blown patch :) as in, "i've identified a race, do we 
care?" kind of proposition.

> If we really do need the ability to do lookup and create in one, rather
> than adding new APIs can we not just add another flag to the existing
> rte_memzone_reserve call?
> 

That's a good idea for memzone_reserve(), but it wouldn't work for 
memzone_free().

-- 
Thanks,
Anatoly


More information about the dev mailing list