On 15 April 2014 16:34, YAMAMOTO Takashi <[email protected]> wrote:
> > + if (ukey) {
> > + ovs_mutex_lock(&ukey->mutex);
> > + ukey->mark = ukey->flow_exists = mark;
> > + ovs_mutex_unlock(&ukey->mutex);
> > }
> >
> > - if (!ukey) {
> > - ukey = ukey_create(udump->key, udump->key_len, used);
> > - hmap_insert(&revalidator->ukeys, &ukey->hmap_node,
> > - udump->key_hash);
> > + if (!mark) {
> > + dump_op_init(&ops[n_ops++], key, key_len, ukey);
> > }
>
> you remove unmarked datapath flows here.
> ie. the datapath marks flows by updating "used" and
> revalidate() performs sweep for them.
>
> what kind of datapath flows will be left for
> revalidator_sweep()?
There is a corner case where the datapath doesn't dump a flow from the
datapath. This could happen if a flow is removed while the datapath is
iterating through its flows. In this case, revalidator_sweep() will delete
the flow and clean up its ukey. However, in most cases revalidator_sweep()
will only perform garbage-collection for ukeys.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev