chiark / gitweb /
systemd: ignore hw timestamps in containers
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 17 Apr 2013 00:29:59 +0000 (20:29 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 17 Apr 2013 04:09:16 +0000 (00:09 -0400)
They are irrelevant and misleading.

E.g. systemd-analyze:

  Startup finished in 6d 4h 15min 32.330s (kernel) + 49ms 914us (userspace) = 6d 4h 15min 32.380s

becomes

Startup finished in 53.735ms (userspace) = 53.735ms

which looks much better :)

src/core/manager.c
src/shared/virt.c

index f8d097e368aac39c8925f53016dd4012ffe349e1..1ee6a8ed53946a752125e2f318ff0a686312f19a 100644 (file)
@@ -441,10 +441,12 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) {
                 return -ENOMEM;
 
         dual_timestamp_get(&m->userspace_timestamp);
-        dual_timestamp_from_monotonic(&m->kernel_timestamp, 0);
+        if (detect_container(NULL) <= 0) {
+                dual_timestamp_from_monotonic(&m->kernel_timestamp, 0);
 #ifdef ENABLE_EFI
-        efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp);
+                efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp);
 #endif
+        }
 
         m->running_as = running_as;
         m->name_data_slot = m->conn_data_slot = m->subscribed_data_slot = -1;
index fddb45d6e832e1e4106eae3f3e065078d21304d9..7b18e58c166f9d4cf21cda8d35f2da8a337e60a8 100644 (file)
@@ -168,7 +168,7 @@ int detect_vm(const char **id) {
 }
 
 int detect_container(const char **id) {
-        char *e = NULL;
+        char _cleanup_free_ *e = NULL;
         int r;
 
         /* Unfortunately many of these operations require root access
@@ -216,8 +216,6 @@ int detect_container(const char **id) {
                         *id = "other";
         }
 
-        free(e);
-
         return r;
 }