1) Currently the number of delete marked hash entries in Hash bucket is used
for triggering the work item for the deletion. Work item is triggered
when the first entry is delete marked. But due to contention in handling
"number of delete marked entries", the next work item is never
triggered.
As a fix, a new variable is used per hash bucket to trigger the work
item.
2) When Agent gives soft reset, Vrouter marks vr_not_ready. Once
vr_not_ready is set, Work items and RCU callbacks should not be
registered any more. In hash table deletion process, once this is set,
hash bucket is directly manipulated without work item. This results in
issues, if any pending work item is currently being executed. If work
item and hash entry deletion (vr_htable_release_hentry()) access the
same hash bucket, the hash bucket list goes bad.
As a fix, a new API vr_htable_reset() is introduced.
vr_htable_release_hentry() does not manipulate the hash entry if
vr_not_ready is setup. Modules are expected to call vr_htable_reset() to
reset the hash table. Call backs are invoked to act on the reset hash
entries.
Reviewed: https:/ /review. opencontrail. org/23854 github. org/Juniper/ contrail- vrouter/ commit/ 29cf0d18b2a55f6 a663bc064dd4d5b 92f6e6e1c0
Committed: http://
Submitter: Zuul
Branch: R3.0.2.x
commit 29cf0d18b2a55f6 a663bc064dd4d5b 92f6e6e1c0
Author: Divakar <email address hidden>
Date: Thu Aug 18 11:17:21 2016 +0530
Hash table fixes
1) Currently the number of delete marked hash entries in Hash bucket is used
for triggering the work item for the deletion. Work item is triggered
when the first entry is delete marked. But due to contention in handling
"number of delete marked entries", the next work item is never
triggered.
As a fix, a new variable is used per hash bucket to trigger the work
item.
2) When Agent gives soft reset, Vrouter marks vr_not_ready. Once release_ hentry( )) access the
vr_not_ready is set, Work items and RCU callbacks should not be
registered any more. In hash table deletion process, once this is set,
hash bucket is directly manipulated without work item. This results in
issues, if any pending work item is currently being executed. If work
item and hash entry deletion (vr_htable_
same hash bucket, the hash bucket list goes bad.
As a fix, a new API vr_htable_reset() is introduced. release_ hentry( ) does not manipulate the hash entry if
vr_htable_
vr_not_ready is setup. Modules are expected to call vr_htable_reset() to
reset the hash table. Call backs are invoked to act on the reset hash
entries.
Change-Id: I1b0865ad3cc909 1cd682e1eb857e5 1b5538483ab
closes-bug: #1614382