Skip to content

Commit

Permalink
netdev-dpdk: Unlink vhost-user sockets on fatal signals.
Browse files Browse the repository at this point in the history
While killing OVS may not call rte_vhost_driver_unregister()
for vhost-user ports. As a result corresponding socket will
remain in a system and opening of that port after restart
will fail.

(Even after this patch this remains a problem for signals
that OVS does not or cannot catch, such as SIGSEGV and
SIGKILL.)

Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
  • Loading branch information
igsilya authored and blp committed Feb 2, 2016
1 parent fd0571a commit 253134d
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/netdev-dpdk.c
Expand Up @@ -33,6 +33,7 @@
#include "dirs.h"
#include "dp-packet.h"
#include "dpif-netdev.h"
#include "fatal-signal.h"
#include "list.h"
#include "netdev-dpdk.h"
#include "netdev-provider.h"
Expand Down Expand Up @@ -687,7 +688,10 @@ netdev_dpdk_vhost_user_construct(struct netdev *netdev_)
if (err) {
VLOG_ERR("vhost-user socket device setup failure for socket %s\n",
netdev->vhost_id);
} else {
fatal_signal_add_file_to_unlink(netdev->vhost_id);
}

VLOG_INFO("Socket %s created for vhost-user port %s\n", netdev->vhost_id, netdev_->name);
err = vhost_construct_helper(netdev_);
ovs_mutex_unlock(&dpdk_mutex);
Expand Down Expand Up @@ -745,6 +749,8 @@ netdev_dpdk_vhost_destruct(struct netdev *netdev_)

if (rte_vhost_driver_unregister(dev->vhost_id)) {
VLOG_ERR("Unable to remove vhost-user socket %s", dev->vhost_id);
} else {
fatal_signal_remove_file_to_unlink(dev->vhost_id);
}

ovs_mutex_lock(&dpdk_mutex);
Expand Down

0 comments on commit 253134d

Please sign in to comment.