Delete shared memory segment files when vpp starts 10/16310/2
authorDave Barach <dave@barachs.net>
Fri, 30 Nov 2018 21:46:29 +0000 (16:46 -0500)
committerDamjan Marion <dmarion@me.com>
Sat, 1 Dec 2018 00:32:56 +0000 (00:32 +0000)
Should have been done this way years ago. My bad.

Change-Id: Ic7bf937fb6c4dc5c1b6ae64f2ecf8608b62e7039
Signed-off-by: Dave Barach <dave@barachs.net>
build-root/deb/debian/vpp.service
build-root/deb/debian/vpp.upstart
src/vlibmemory/memory_api.c

index aa1651c..2e86941 100644 (file)
@@ -4,7 +4,6 @@ After=network.target
 
 [Service]
 Type=simple
-ExecStartPre=-/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api
 ExecStartPre=-/sbin/modprobe uio_pci_generic
 ExecStart=/usr/bin/vpp -c /etc/vpp/startup.conf
 ExecStopPost=/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api
index 62e1d27..4a451dd 100644 (file)
@@ -1,12 +1,11 @@
 description    "vector packet processing engine"
-author          "Cisco Systems, Inc <listname@cisco.com>"
+author          "Cisco Systems, Inc <vpp-dev@lists.fd.io>"
 
 manual
 
 respawn
 
 pre-start script
-   rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api || true
    # should be there via dkms, but if not, start anyway
    modprobe uio_pci_generic || true
 end script
index 7a7644a..544e59d 100644 (file)
@@ -932,6 +932,28 @@ vlibmemory_init (vlib_main_t * vm)
   api_main_t *am = &api_main;
   svm_map_region_args_t _a, *a = &_a;
   clib_error_t *error;
+  u8 *remove_path1, *remove_path2;
+
+  /*
+   * By popular request / to avoid support fires, remove any old api segment
+   * files Right Here.
+   */
+  if (am->root_path == 0)
+    {
+      remove_path1 = format (0, "/dev/shm/global_vm%c", 0);
+      remove_path2 = format (0, "/dev/shm/vpe-api%c", 0);
+    }
+  else
+    {
+      remove_path1 = format (0, "/dev/shm/%s-global_vm%c", am->root_path, 0);
+      remove_path2 = format (0, "/dev/shm/%s-vpe-api%c", am->root_path, 0);
+    }
+
+  (void) unlink ((char *) remove_path1);
+  (void) unlink ((char *) remove_path2);
+
+  vec_free (remove_path1);
+  vec_free (remove_path2);
 
   clib_memset (a, 0, sizeof (*a));
   a->root_path = am->root_path;