Hi, all

I found this issue when I use ovs 2.6.1 and dpdk 16.07, the error is located in 
the line "ovs_mutex_lock(&dev->mutex);" in get_stats() in lib/netdev-vport.c, 
it looks like a deadlock is detected, so resulted in ovs-vswitchd coredump, 
anybody noticed this issue? How can we fix it? this has bothered me two days.


static int
get_stats(const struct netdev *netdev, struct netdev_stats *stats)
{
    struct netdev_vport *dev = netdev_vport_cast(netdev);

    ovs_mutex_lock(&dev->mutex);
    /* Passing only collected counters */
    stats->tx_packets = dev->stats.tx_packets;
    stats->tx_bytes = dev->stats.tx_bytes;
    stats->rx_packets = dev->stats.rx_packets;
    stats->rx_bytes = dev->stats.rx_bytes;
    ovs_mutex_unlock(&dev->mutex);

    return 0;
}

If I commented out lock and unlock, I'll get the ovs log:

ovs_rcu(urcu3)|WARN|blocked 32000 ms waiting for revalidator8 to quiesce

ovs-ofctl will also hang.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to