[PATCH v3 2/2] ring: add ring info telemetry cmd

Jie Hai haijie1 at huawei.com
Fri Feb 3 08:28:00 CET 2023


On 2023/2/2 21:07, Konstantin Ananyev wrote:
> 31/01/2023 02:28, Jie Hai пишет:
>> This patch supports dump of the info of ring by its name.
>> An example using this command is shown below:
>>
>> --> /ring/info,MP_mb_pool_0
>> {
>>    "/ring/info": {
>>      "name": "MP_mb_pool_0",
>>      "socket": 0,
>>      "flags": 0,
>>      "producer_type": "MP",
>>      "consumer_type": "MC",
>>      "size": 262144,
>>      "mask": 262143,
>>      "capacity": 262143,
>>      "used_count": 147173,
>>      "consumer_tail": 8283,
>>      "consumer_head": 8283,
>>      "producer_tail": 155456,
>>      "producer_head": 155456,
>>      "mz_name": "RG_MP_mb_pool_0",
>>      "mz_len": 2097920,
>>      "mz_hugepage_sz": 1073741824,
>>      "mz_socket_id": 0,
>>      "mz_flags": 0
>>    }
>> }
>>
>> Signed-off-by: Jie Hai <haijie1 at huawei.com>

>> +static int
>> +ring_handle_info(const char *cmd __rte_unused, const char *params,
>> +        struct rte_tel_data *d)
>> +{
>> +    const struct rte_memzone *mz;
>> +    struct rte_ring *r;
>> +
>> +    if (params == NULL || strlen(params) == 0 ||
>> +        strlen(params) >= RTE_RING_NAMESIZE)
>> +        return -EINVAL;
>> +
>> +    r = rte_ring_lookup(params);
>> +    if (r == NULL)
>> +        return -EINVAL;
> 
> thanks for the update, but I think there still a potential problem here:
> as we release tailq_lock inside ring_lookup() and then grab it after again.
> Between these two points we have sort of race condition.
> We need a way not to release it in between.
> Probably the simplest way - make this function to use ring_walk()
> that you introduced in previous patch, instead of ring_lookup().
> Similar to what mempool_handle_info() is doing.
> 
> 
Thanks for your comments, and I have learned a lot from it. That will be 
corrected in v4.

> .


More information about the dev mailing list