]> xenbits.xensource.com Git - libvirt.git/commitdiff
lxc: more logging during startup paths
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 16 Jan 2015 17:20:48 +0000 (17:20 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 27 Jan 2015 13:57:02 +0000 (13:57 +0000)
Add more logging to the lxc controller and container files to
facilitate debugging startup problems. Also make it clear when
the container is going to close stdout and thus no longer do
any logging.

src/lxc/lxc_container.c
src/lxc/lxc_controller.c

index e848e8e407e2ab89f5c91d44a9e6c1328f5913bb..cc20b6d84fa1e613ecf731c9012e5fd01cdaae1e 100644 (file)
@@ -274,6 +274,10 @@ static int lxcContainerSetupFDs(int *ttyfd,
     size_t i;
     size_t j;
 
+    VIR_DEBUG("Logging from the container init will now cease "
+              "as the FDs are about to be closed for exec of "
+              "the container init process");
+
     if (setsid() < 0) {
         virReportSystemError(errno, "%s",
                              _("setsid failed"));
@@ -2250,6 +2254,7 @@ static int lxcContainerChild(void *data)
     if (virSecurityManagerSetProcessLabel(argv->securityDriver, vmDef) < 0)
         goto cleanup;
 
+    VIR_DEBUG("Setting up inherited FDs");
     VIR_FORCE_CLOSE(argv->handshakefd);
     VIR_FORCE_CLOSE(argv->monitor);
     if (lxcContainerSetupFDs(&ttyfd,
@@ -2264,11 +2269,13 @@ static int lxcContainerChild(void *data)
     VIR_FORCE_CLOSE(argv->handshakefd);
 
     if (ret == 0) {
+        VIR_DEBUG("Executing init binary");
         /* this function will only return if an error occurred */
         ret = virCommandExec(cmd);
     }
 
     if (ret != 0) {
+        VIR_DEBUG("Tearing down container");
         virErrorPtr err = virGetLastError();
         if (err && err->message)
             fprintf(stderr, "%s\n", err->message);
@@ -2379,6 +2386,7 @@ int lxcContainerStart(virDomainDefPtr def,
         cflags |= CLONE_NEWNET;
     }
 
+    VIR_DEBUG("Cloning container init process");
     pid = clone(lxcContainerChild, stacktop, cflags, &args);
     VIR_FREE(stack);
     VIR_DEBUG("clone() completed, new container PID is %d", pid);
index 00d0e2362851e211653c7c2c49db1c3ee890cd37..03dff29cce355b5e42403dd13b9f358d99f8c682 100644 (file)
@@ -693,6 +693,8 @@ static int virLXCControllerSetupResourceLimits(virLXCControllerPtr ctrl)
     virBitmapPtr nodeset = NULL;
     virDomainNumatuneMemMode mode;
 
+    VIR_DEBUG("Setting up process resource limits");
+
     if (virLXCControllerGetNumadAdvice(ctrl, &auto_nodeset) < 0)
         goto cleanup;
 
@@ -1263,9 +1265,12 @@ static int virLXCControllerSetupUserns(virLXCControllerPtr ctrl)
     int ret = -1;
 
     /* User namespace is disabled for container */
-    if (ctrl->def->idmap.nuidmap == 0)
+    if (ctrl->def->idmap.nuidmap == 0) {
+        VIR_DEBUG("No uid map, skipping userns setup");
         return 0;
+    }
 
+    VIR_DEBUG("Setting up userns maps");
     if (virAsprintf(&uid_map, "/proc/%d/uid_map", ctrl->initpid) < 0)
         goto cleanup;
 
@@ -1866,9 +1871,12 @@ static int lxcSetPersonality(virDomainDefPtr def)
 {
     virArch altArch;
 
+    VIR_DEBUG("Checking for 32-bit personality");
     altArch = lxcContainerGetAlt32bitArch(virArchFromHost());
     if (altArch &&
         (def->os.arch == altArch)) {
+        VIR_DEBUG("Setting personality to %s",
+                  virArchToString(altArch));
         if (personality(PER_LINUX32) < 0) {
             virReportSystemError(errno, _("Unable to request personality for %s on %s"),
                                  virArchToString(altArch),