On 15 April 2014 16:34, YAMAMOTO Takashi <yamam...@valinux.co.jp> 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 dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev