[1/2] lib/metrics: fix to reset the init flag
Checks
Commit Message
metrics_initialized shall be reset in deinit function
This is currently causing issue in running
metrics_autotest mulutiple times
Fixes: 07c1b6925b65 ("telemetry: invert dependency on metrics library")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
lib/librte_metrics/rte_metrics.c | 2 ++
1 file changed, 2 insertions(+)
Comments
On Wed, May 13, 2020 at 12:39 PM Hemant Agrawal <hemant.agrawal@nxp.com> wrote:
>
> metrics_initialized shall be reset in deinit function
> This is currently causing issue in running
> metrics_autotest mulutiple times
>
> Fixes: 07c1b6925b65 ("telemetry: invert dependency on metrics library")
>
> Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
> ---
> lib/librte_metrics/rte_metrics.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/lib/librte_metrics/rte_metrics.c b/lib/librte_metrics/rte_metrics.c
> index e07670219..f570cf226 100644
> --- a/lib/librte_metrics/rte_metrics.c
> +++ b/lib/librte_metrics/rte_metrics.c
> @@ -96,6 +96,8 @@ rte_metrics_deinit(void)
> stats = memzone->addr;
> memset(stats, 0, sizeof(struct rte_metrics_data_s));
>
> + metrics_initialized = 0;
> +
> return rte_memzone_free(memzone);
Should this flag be reset only if rte_memzone_free succeeds?
> On Wed, May 13, 2020 at 12:39 PM Hemant Agrawal
> <hemant.agrawal@nxp.com> wrote:
> >
> > metrics_initialized shall be reset in deinit function This is
> > currently causing issue in running metrics_autotest mulutiple times
> >
> > Fixes: 07c1b6925b65 ("telemetry: invert dependency on metrics
> > library")
> >
> > Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
> > ---
> > lib/librte_metrics/rte_metrics.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/lib/librte_metrics/rte_metrics.c
> > b/lib/librte_metrics/rte_metrics.c
> > index e07670219..f570cf226 100644
> > --- a/lib/librte_metrics/rte_metrics.c
> > +++ b/lib/librte_metrics/rte_metrics.c
> > @@ -96,6 +96,8 @@ rte_metrics_deinit(void)
> > stats = memzone->addr;
> > memset(stats, 0, sizeof(struct rte_metrics_data_s));
> >
> > + metrics_initialized = 0;
> > +
> > return rte_memzone_free(memzone);
>
> Should this flag be reset only if rte_memzone_free succeeds?
>
[Hemant] I thought about it but I did not do it for following reasons.
1. If the memzone is not freed, It will not be initialized next time due to following check in init routine.
memzone = rte_memzone_lookup(RTE_METRICS_MEMZONE_NAME);
if (memzone != NULL)
return;
2. Most applications have very weak error handling in de-init/cleanup parts.
Having said that. It can be changed to do it only on the success of rte_memzone_free
>
> --
> David Marchand
@@ -96,6 +96,8 @@ rte_metrics_deinit(void)
stats = memzone->addr;
memset(stats, 0, sizeof(struct rte_metrics_data_s));
+ metrics_initialized = 0;
+
return rte_memzone_free(memzone);
}