]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nspawn: downgrade log level when unregistering and machine is already gone
authorLuca Boccassi <luca.boccassi@gmail.com>
Sun, 24 May 2026 18:11:39 +0000 (19:11 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 24 May 2026 19:18:58 +0000 (21:18 +0200)
nspawn started logging at notice level when exiting a container:

root@sid-arm64:~# exit
logout
Container sid-arm64 exited successfully.
Failed to unregister machine in system context, ignoring: No such device or address

Looks like it's racing with machined which already noticed it was
gone and remove it. Downgrade to debug on ENXIO.

Follow-up for 1e084aad7d5c2132ed32ff2a75bbe21205c0f5f3

src/shared/machine-register.c

index 9637793fe549fd29dfe5e1695fad55df6394508c..d1c4f710aec4f84034fa74cbaeced3439281c301 100644 (file)
@@ -286,11 +286,12 @@ void unregister_machine_with_fallback_and_log(
         }
 
         if (r < 0)
-                log_notice_errno(r, "Failed to unregister machine in %s context, ignoring: %m",
-                                 machine_registration_scope_string(
-                                                 ctx->registered_system && ctx->registered_user ? _RUNTIME_SCOPE_INVALID :
-                                                 ctx->registered_system ? RUNTIME_SCOPE_SYSTEM : RUNTIME_SCOPE_USER,
-                                                 !failed_system, !failed_user));
+                log_full_errno(r == -ENXIO ? LOG_DEBUG : LOG_INFO, /* Might have already been noticed and unregistered by machined itself */
+                               r, "Failed to unregister machine in %s context, ignoring: %m",
+                               machine_registration_scope_string(
+                                                ctx->registered_system && ctx->registered_user ? _RUNTIME_SCOPE_INVALID :
+                                                ctx->registered_system ? RUNTIME_SCOPE_SYSTEM : RUNTIME_SCOPE_USER,
+                                                !failed_system, !failed_user));
 }
 
 int unregister_machine(sd_bus *bus, const char *machine_name, RuntimeScope scope) {