]> xenbits.xensource.com Git - libvirt.git/commitdiff
lxc: don't build pidfile string multiple times
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 16 Jan 2015 11:54:30 +0000 (11:54 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 27 Jan 2015 13:57:02 +0000 (13:57 +0000)
Build the pidfile string once when starting a guest and then
use the same string thereafter. This will benefit following
patches which need the pidfile string in more situations.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/lxc/lxc_process.c

index 63040b6026217bf009131b731284022a2b2ceff6..ebad5cc122c17a2d5775e00893c786e5ba7947fe 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010-2014 Red Hat, Inc.
+ * Copyright (C) 2010-2015 Red Hat, Inc.
  * Copyright IBM Corp. 2008
  *
  * lxc_process.c: LXC process lifecycle management
@@ -1013,6 +1013,7 @@ int virLXCProcessStart(virConnectPtr conn,
     virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
     virCgroupPtr selfcgroup;
     int status;
+    char *pidfile = NULL;
 
     if (virCgroupNewSelf(&selfcgroup) < 0)
         return -1;
@@ -1063,7 +1064,10 @@ int virLXCProcessStart(virConnectPtr conn,
 
     if (virAsprintf(&logfile, "%s/%s.log",
                     cfg->logDir, vm->def->name) < 0)
-        return -1;
+        goto cleanup;
+
+    if (!(pidfile = virPidFileBuildPath(cfg->stateDir, vm->def->name)))
+        goto cleanup;
 
     if (!(caps = virLXCDriverGetCapabilities(driver, false)))
         goto cleanup;
@@ -1261,14 +1265,14 @@ int virLXCProcessStart(virConnectPtr conn,
     }
 
     /* And get its pid */
-    if ((r = virPidFileRead(cfg->stateDir, vm->def->name, &vm->pid)) < 0) {
+    if ((r = virPidFileReadPath(pidfile, &vm->pid)) < 0) {
         if (virLXCProcessReadLogOutput(vm, logfile, pos, ebuf, sizeof(ebuf)) > 0)
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            _("guest failed to start: %s"), ebuf);
         else
             virReportSystemError(-r,
-                                 _("Failed to read pid file %s/%s.pid"),
-                                 cfg->stateDir, vm->def->name);
+                                 _("Failed to read pid file %s"),
+                                 pidfile);
         goto cleanup;
     }
 
@@ -1387,6 +1391,7 @@ int virLXCProcessStart(virConnectPtr conn,
     VIR_FREE(ttyFDs);
     VIR_FORCE_CLOSE(handshakefds[0]);
     VIR_FORCE_CLOSE(handshakefds[1]);
+    VIR_FREE(pidfile);
     VIR_FREE(logfile);
     virObjectUnref(cfg);
     virObjectUnref(caps);