sorry, please ignore this patch. hepeng.0320 <[email protected]> 于2020年10月9日周五 下午8:36写道: > > From: Peng He <[email protected]> > > if for some reason, the dpif ops in push_dp_ops failed with op->dop.type > not equal to DPIF_OP_FLOW_DEL, the generated ukey is installed however > the corresponding datapath flow is not. The consequent upcalls will > always fail to install datapath flows as: > > try_ukey_replace > -> return false > -> upcall return NOSPC error, however the ukey still exist. > > note that, the revalidator_sweep__ will not certainly clean such ukeys. > The current code would try firstly to call revalidate_ukey and it might > result in keeping such ukeys in the end. > > In this case, a large amount of warning logs are observed: > > ofproto_dpif_upcall(pmd-c22/id:13)|WARN|Dropped 3898 log messages in last 87 > seconds (most recently, 29 seconds ago) due to excessive rate > ofproto_dpif_upcall(pmd-c22/id:13)|WARN|upcall_cb failure: ukey installation > fails > > and it will not recovery unless you manually run revalidator/purge. > > this path checks if ops succeeded, if not, will changed > ukey->state into EVICTED state. > > Signed-off-by: Peng He <[email protected]> > --- > ofproto/ofproto-dpif-upcall.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c > index 72a5b4d73..c4c20b30c 100644 > --- a/ofproto/ofproto-dpif-upcall.c > +++ b/ofproto/ofproto-dpif-upcall.c > @@ -2367,11 +2367,6 @@ push_dp_ops(struct udpif *udpif, struct ukey_op *ops, > size_t n_ops) > stats = op->dop.flow_del.stats; > push = &push_buf; > > - if (op->dop.type != DPIF_OP_FLOW_DEL) { > - /* Only deleted flows need their stats pushed. */ > - continue; > - } > - > if (op->dop.error) { > /* flow_del error, 'stats' is unusable. */ > if (op->ukey) { > @@ -2382,6 +2377,11 @@ push_dp_ops(struct udpif *udpif, struct ukey_op *ops, > size_t n_ops) > continue; > } > > + if (op->dop.type != DPIF_OP_FLOW_DEL) { > + /* Only deleted flows need their stats pushed. */ > + continue; > + } > + > if (op->ukey) { > ovs_mutex_lock(&op->ukey->mutex); > transition_ukey(op->ukey, UKEY_EVICTED); > -- > 2.20.1 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
-- hepeng _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
