From: Luca Boccassi Date: Tue, 22 Jun 2021 21:59:40 +0000 (+0100) Subject: ExtensionImages: log explicit error when extension-release metadata does not match X-Git-Tag: v249-rc2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=db4c8a25160cf12d6b16e027cdf1f0258dac49e6;p=thirdparty%2Fsystemd.git ExtensionImages: log explicit error when extension-release metadata does not match When an ExtensionImages= extension-release metadata does not match, the log messages (unless debug level is set) are pretty much incomprehensible: systemd[463]: run-u11.service: Failed to set up mount namespacing: /run/systemd/unit-extensions/0: Stale file handle systemd[463]: run-u11.service: Failed at step NAMESPACE spawning /usr/bin/echo: Stale file handle Add an explicit log message if we get ESTALE from the dissect code, to make it clear what's happening without needing to enable debugging: systemd[463]: Failed to mount image /tmp/app3.raw, extension-release metadata does not match the lower layer's: ID=debian VERSION_ID=11 SYSEXT_LEVEL=11 --- diff --git a/src/core/namespace.c b/src/core/namespace.c index 6d77ce99674..f270529fd19 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -1157,6 +1157,15 @@ static int mount_image(const MountEntry *m, const char *root_directory) { host_os_release_id, host_os_release_version_id, host_os_release_sysext_level); if (r == -ENOENT && m->ignore) return 0; + if (r == -ESTALE && host_os_release_id) + return log_error_errno(r, + "Failed to mount image %s, extension-release metadata does not match the lower layer's: ID=%s%s%s%s%s", + mount_entry_source(m), + host_os_release_id, + host_os_release_version_id ? " VERSION_ID=" : "", + strempty(host_os_release_version_id), + host_os_release_sysext_level ? " SYSEXT_LEVEL=" : "", + strempty(host_os_release_sysext_level)); if (r < 0) return log_debug_errno(r, "Failed to mount image %s on %s: %m", mount_entry_source(m), mount_entry_path(m));