From: Jarno Rajahalme Date: Wed, 12 Feb 2014 17:27:11 +0000 (-0800) Subject: ofproto-dpif: Use adaptive mutex for stats. X-Git-Tag: sliver-openvswitch-2.1.90-1~1^2~57 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=97ba2d36f659170fc5645c47c928041d5c8f51e8 ofproto-dpif: Use adaptive mutex for stats. Stats critical sections are held for very short time, so it makes sense to spin on them for a while rather than sleeping immediately. Signed-off-by: Jarno Rajahalme Signed-off-by: Ben Pfaff --- diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 08570f1eb..328b215dc 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -1049,7 +1049,7 @@ construct(struct ofproto *ofproto_) ofproto->mbridge = mbridge_create(); ofproto->has_bonded_bundles = false; ofproto->lacp_enabled = false; - ovs_mutex_init(&ofproto->stats_mutex); + ovs_mutex_init_adaptive(&ofproto->stats_mutex); ovs_mutex_init(&ofproto->vsp_mutex); guarded_list_init(&ofproto->pins); @@ -3176,7 +3176,7 @@ rule_construct(struct rule *rule_) OVS_NO_THREAD_SAFETY_ANALYSIS { struct rule_dpif *rule = rule_dpif_cast(rule_); - ovs_mutex_init(&rule->stats_mutex); + ovs_mutex_init_adaptive(&rule->stats_mutex); rule->packet_count = 0; rule->byte_count = 0; rule->used = rule->up.modified; @@ -3291,7 +3291,7 @@ static enum ofperr group_construct(struct ofgroup *group_) { struct group_dpif *group = group_dpif_cast(group_); - ovs_mutex_init(&group->stats_mutex); + ovs_mutex_init_adaptive(&group->stats_mutex); ovs_mutex_lock(&group->stats_mutex); group_construct_stats(group); ovs_mutex_unlock(&group->stats_mutex);