From: Zbigniew Jędrzejewski-Szmek Date: Sun, 15 Jan 2017 00:48:04 +0000 (-0500) Subject: Merge pull request #4879 from poettering/systemd X-Git-Tag: v233~237 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6b3d378331fe714c7bf2263eaa9a8b33fc878e7c;p=thirdparty%2Fsystemd.git Merge pull request #4879 from poettering/systemd --- 6b3d378331fe714c7bf2263eaa9a8b33fc878e7c diff --cc NEWS index b8767a27581,aad574ef746..540f4231a13 --- a/NEWS +++ b/NEWS @@@ -2,10 -2,11 +2,15 @@@ systemd System and Service Manage CHANGES WITH 233 in spe + * DBus policy files are now installed into /usr rather than /etc. Make + sure your system has dbus >= 1.9.18 running before upgrading to this + version, or override the install path with --with-dbuspolicydir= . + + * The shell invoked by debug-shell.service now defaults to /bin/sh in + all cases. If distributions want to use a different shell for this + purpose (for example Fedora's /sbin/sushell) they need to specify + this explicitly at configure time using --with-debug-shell=. + * The confirmation spawn prompt has been reworked to offer the following choices: diff --cc TODO index 89e08749035,39e4d8bcc47..c06a47b7ea1 --- a/TODO +++ b/TODO @@@ -24,6 -24,19 +24,19 @@@ Janitorial Clean-ups Features: + * Maybe add a small tool invoked early at boot, that adds in or resizes + partitions automatically, to be used when the media used is actually larger + than the image written onto it is. + + * change the dependency Set* objects in Unit structures to become Hashmap*, and + then store a bit mask who created a specific dependency: the source unit via + fragment configuration, the destination unit via fragment configuration, or + the source unit via udev rules (in case of .device units), or any combination - there of. This information can then be used to flush out old udev-created ++ thereof. This information can then be used to flush out old udev-created + dependencies when the udev properties change, and eventually to implement a + "systemctl refresh" operation for reloading the configuration of individual + units without reloading the whole set. + * Add ExecMonitor= setting. May be used multiple times. Forks off a process in the service cgroup, which is supposed to monitor the service, and when it exits the service is considered failed by its monitor. diff --cc man/systemd-firstboot.xml index b269e481135,4e3b1a3a814..8cdc297a0ee --- a/man/systemd-firstboot.xml +++ b/man/systemd-firstboot.xml @@@ -240,6 -240,20 +240,20 @@@ otherwise. + + Kernel Command Line + + + + systemd.firstboot= + - Takes a boolean argument, defaults to on. If off systemd-firstboot.service - won't interactively query the user for basic settings at first boot, even if if the settings are not ++ Takes a boolean argument, defaults to on. If off, systemd-firstboot.service ++ won't interactively query the user for basic settings at first boot, even if those settings are not + initialized yet. + + + + See Also diff --cc src/gpt-auto-generator/gpt-auto-generator.c index 0f95f0d813b,f05544f3d46..e61ef8f249e --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@@ -876,8 -664,40 +664,40 @@@ static int get_block_device_harder(cons if (!IN_SET(de->d_type, DT_LNK, DT_UNKNOWN)) continue; - if (found) /* Don't try to support multiple backing block devices */ - goto fallback; + if (found) { + _cleanup_free_ char *u = NULL, *v = NULL, *a = NULL, *b = NULL; + + /* We found a device backed by multiple other devices. We don't really support automatic + * discovery on such setups, with the exception of dm-verity partitions. In this case there are - * two backing devices: the data partitoin and the hash partition. We are fine with such ++ * two backing devices: the data partition and the hash partition. We are fine with such + * setups, however, only if both partitions are on the same physical device. Hence, let's + * verify this. */ + + u = strjoin(p, "/", de->d_name, "/../dev"); + if (!u) + return -ENOMEM; + + v = strjoin(p, "/", found->d_name, "/../dev"); + if (!v) + return -ENOMEM; + + r = read_one_line_file(u, &a); + if (r < 0) { + log_debug_errno(r, "Failed to read %s: %m", u); + goto fallback; + } + + r = read_one_line_file(v, &b); + if (r < 0) { + log_debug_errno(r, "Failed to read %s: %m", v); + goto fallback; + } + + /* Check if the parent device is the same. If not, then the two backing devices are on + * different physical devices, and we don't support that. */ + if (!streq(a, b)) + goto fallback; + } found = de; }