[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