On 3 July 2014 10:30, Ben Pfaff <b...@nicira.com> wrote: > On Wed, Jul 02, 2014 at 08:14:15PM +1200, Joe Stringer wrote: > > If the datapath doesn't dump a flow for some reason, and the current > > dump is expected to revalidate all flows in the datapath, then perform > > revalidation for those flows by fetching them during the sweep phase. > > > > Signed-off-by: Joe Stringer <joestrin...@nicira.com> > > --- > > This relies on the mask dumping from the previous patch, but doesn't > > make use of batched flow_get. > > I thought that the logic in revalidator_sweep__() was confusing > before, but this patch left me more confused. > > Is this a correct transformation? From: > HMAP_FOR_EACH_SAFE (ukey, next, hmap_node, revalidator->ukeys) { > bool missed_reval, delete_flow; > > missed_reval = ukey->last_seen && need_revalidate; > ukey->last_seen++; > delete_flow = purge || ukey->last_seen == MAX_UKEY_AGE; > if (!ukey->flow_exists) { > ukey_delete(revalidator, ukey); > continue; > } else if (!delete_flow && missed_reval) { > delete_flow = handle_missed_revalidation(revalidator, ukey); > } > > if (delete_flow) { > struct dump_op *op = &ops[n_ops++]; > > dump_op_init(op, ukey->key, ukey->key_len, ukey); > if (n_ops == REVALIDATE_MAX_BATCH) { > push_dump_ops(revalidator, ops, n_ops); > n_ops = 0; > } > } > } > to: > HMAP_FOR_EACH_SAFE (ukey, next, hmap_node, revalidator->ukeys) { > if (ukey->flow_exists) { > ukey->last_seen++; > if (purge > || ukey->last_seen == MAX_UKEY_AGE > || (ukey->last_seen > 1 > && need_revalidate > && handle_missed_revalidation(revalidator, ukey))) { > struct dump_op *op = &ops[n_ops++]; > > dump_op_init(op, ukey->key, ukey->key_len, ukey); > if (n_ops == REVALIDATE_MAX_BATCH) { > push_dump_ops(revalidator, ops, n_ops); > n_ops = 0; > } > } > } else { > ukey_delete(revalidator, ukey); > } > } > I find the latter easier to understand, if it is equivalent. > (I guess that it will change, though, when you revise the series.) >
Thanks for this! I got deep enough into it that I know what I'm trying to achieve, but not the most elegant way to present that. I made some minor changes in addition to this for v2. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev