[ovs-dev] [PATCH ovn v3 2/2] lflow.c: Release ref_lflow_node as soon as it is not needed.

Dumitru Ceara dceara at redhat.com
Thu Sep 17 07:44:49 UTC 2020


On 9/16/20 8:01 PM, Han Zhou wrote:
> If a resource doesn't have any lflows referencing it any more, the
> node ref_lflow_node in lflow_resource_ref.ref_lflow_table should
> be removed and released. Otherwise, the table could keep growing
> in some scenarios, until a recompute is triggered. Now that the
> chance of triggering recompute is lower and there are more resources
> references maintained (for type port-binding), this problem is
> more likely to happen than before. This patch fixes the problem
> by releasing the node as soon as it is not needed.
> 
> Fixes: d2aa2c7cafe ("ovn-controller: Maintain resource references for logical flows.")
> Signed-off-by: Han Zhou <hzhou at ovn.org>
> ---
>  controller/lflow.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/controller/lflow.c b/controller/lflow.c
> index db078d2..b549067 100644
> --- a/controller/lflow.c
> +++ b/controller/lflow.c
> @@ -292,6 +292,10 @@ lflow_resource_destroy_lflow(struct lflow_resource_ref *lfrr,
>      LIST_FOR_EACH_SAFE (lrln, next, list_node, &lfrn->lflow_ref_head) {
>          ovs_list_remove(&lrln->list_node);
>          hmap_remove(&lrln->rlfn->lflow_uuids, &lrln->hmap_node);

I still think a short comment would be useful here, e.g.:

/* Resources that are not referred by any logical flows would be
 * cleaned up in any case during a recompute so it's better to
 * remove them early.
 */

> +        if (hmap_is_empty(&lrln->rlfn->lflow_uuids)) {
> +            hmap_remove(&lfrr->ref_lflow_table, &lrln->rlfn->node);
> +            ref_lflow_node_destroy(lrln->rlfn);
> +        }
>          free(lrln);
>      }
>      free(lfrn);
> 

In any case,

Acked-by: Dumitru Ceara <dceara at redhat.com>

Thanks,
Dumitru



More information about the dev mailing list