core/systemd to 218-1

This commit is contained in:
Kevin Mihelich 2014-12-18 19:03:46 +00:00
parent 9acd86e4a5
commit 4c810c769d
11 changed files with 5 additions and 359 deletions

View file

@ -1,33 +0,0 @@
From 1ab19cb167b32967556eefd8f6d3df0e3de7d67d Mon Sep 17 00:00:00 2001
From: Dave Reisner <dreisner@archlinux.org>
Date: Wed, 29 Oct 2014 13:32:43 -0400
Subject: [PATCH] nspawn: ignore EEXIST when creating mount point
A combination of commits f3c80515c and 79d80fc14 cause nspawn to
silently fail with a commandline such as:
# systemd-nspawn -D /build/extra-x86_64 --bind=/usr
strace shows the culprit:
[pid 27868] writev(2, [{"Failed to create mount point /build/extra-x86_64/usr: File exists", 82}, {"\n", 1}], 2) = 83
---
src/nspawn/nspawn.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index b6d9bc6..d88987a 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -758,7 +758,7 @@ static int mount_binds(const char *dest, char **l, bool ro) {
* and char devices. */
if (S_ISDIR(source_st.st_mode)) {
r = mkdir_label(where, 0755);
- if (r < 0) {
+ if (r < 0 && errno != EEXIST) {
log_error("Failed to create mount point %s: %s", where, strerror(-r));
return r;
--
2.1.2

View file

@ -1,25 +0,0 @@
From ef7b6c0190fefaacf6d8f8e1a6dda4ba8b98091b Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 29 Oct 2014 17:58:43 +0100
Subject: [PATCH] sd-bus: properly handle removals of non-existing matches
---
src/libsystemd/sd-bus/bus-match.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
index 18afe0f..5658c61 100644
--- a/src/libsystemd/sd-bus/bus-match.c
+++ b/src/libsystemd/sd-bus/bus-match.c
@@ -537,7 +537,7 @@ static int bus_match_find_compare_value(
else if (BUS_MATCH_CAN_HASH(t))
n = hashmap_get(c->compare.children, value_str);
else {
- for (n = c->child; !value_node_same(n, t, value_u8, value_str); n = n->next)
+ for (n = c->child; n && !value_node_same(n, t, value_u8, value_str); n = n->next)
;
}
--
2.1.3

View file

@ -1,31 +0,0 @@
From d5a248dbe933c5cbe3ba3d0c5eb8a035018ba6af Mon Sep 17 00:00:00 2001
From: Dan Williams <dcbw@redhat.com>
Date: Thu, 30 Oct 2014 14:23:00 -0500
Subject: [PATCH] sd-dhcp-client: clean up raw socket sd_event_source when
creating new UDP socket
The raw socket sd_event_source used for DHCP server solicitations
was simply dropped on the floor when creating the new UDP socket
after a lease has been acquired. Clean it up properly so we're
not still listening and responding to events on it.
---
src/libsystemd-network/sd-dhcp-client.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
index 0eba4c3..1f7f238 100644
--- a/src/libsystemd-network/sd-dhcp-client.c
+++ b/src/libsystemd-network/sd-dhcp-client.c
@@ -1269,6 +1269,9 @@ static int client_handle_message(sd_dhcp_client *client, DHCPMessage *message,
if (r >= 0) {
client->timeout_resend =
sd_event_source_unref(client->timeout_resend);
+ client->receive_message =
+ sd_event_source_unref(client->receive_message);
+ client->fd = asynchronous_close(client->fd);
if (IN_SET(client->state, DHCP_STATE_REQUESTING,
DHCP_STATE_REBOOTING))
--
2.1.3

View file

@ -1,39 +0,0 @@
From 0ffce503cd6e5a5ff5ba5cd1cc23684cfb8bb9e3 Mon Sep 17 00:00:00 2001
From: Dave Reisner <dreisner@archlinux.org>
Date: Thu, 30 Oct 2014 20:12:05 -0400
Subject: [PATCH] shared/install: avoid prematurely rejecting "missing" units
f7101b7368df copied some logic to prevent enabling masked units, but
also added a check which causes attempts to enable templated units to
fail. Since we know the logic beyond this check will properly handle
units which truly do not exist, we can rely on the unit file state
comparison to suffice for expressing the intent of f7101b7368df.
ref: https://bugs.archlinux.org/task/42616
---
src/shared/install.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/shared/install.c b/src/shared/install.c
index 035b44c..cab93e8 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1620,12 +1620,10 @@ int unit_file_enable(
STRV_FOREACH(i, files) {
UnitFileState state;
+ /* We only want to know if this unit is masked, so we ignore
+ * errors from unit_file_get_state, deferring other checks.
+ * This allows templated units to be enabled on the fly. */
state = unit_file_get_state(scope, root_dir, *i);
- if (state < 0) {
- log_error("Failed to get unit file state for %s: %s", *i, strerror(-state));
- return state;
- }
-
if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) {
log_error("Failed to enable unit: Unit %s is masked", *i);
return -ENOTSUP;
--
2.1.3

View file

@ -1,68 +0,0 @@
From 4b5d8d0f22ae61ceb45a25391354ba53b43ee992 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Thu, 6 Nov 2014 22:24:13 +0100
Subject: [PATCH] shutdown: fix arguments to /run/initramfs/shutdown
Our initrd interface specifies that the verb is in argv[1].
This is where systemd passes it to systemd-shutdown, but getopt
permutes argv[]. This confuses dracut's shutdown script:
Shutdown called with argument '--log-level'. Rebooting!
getopt can be convinced to not permute argv[] by having '-' as the first
character of optstring. Let's use it. This requires changing the way
non-option arguments (in our case, the verb) are processed.
This fixes a bug where the system would reboot instead of powering off.
---
src/core/shutdown.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/core/shutdown.c b/src/core/shutdown.c
index dd11ae3..48ed7fa 100644
--- a/src/core/shutdown.c
+++ b/src/core/shutdown.c
@@ -75,7 +75,9 @@ static int parse_argv(int argc, char *argv[]) {
assert(argc >= 1);
assert(argv);
- while ((c = getopt_long(argc, argv, "", options, NULL)) >= 0)
+ /* "-" prevents getopt from permuting argv[] and moving the verb away
+ * from argv[1]. Our interface to initrd promises it'll be there. */
+ while ((c = getopt_long(argc, argv, "-", options, NULL)) >= 0)
switch (c) {
case ARG_LOG_LEVEL:
@@ -113,6 +115,13 @@ static int parse_argv(int argc, char *argv[]) {
break;
+ case '\001':
+ if (!arg_verb)
+ arg_verb = optarg;
+ else
+ log_error("Excess arguments, ignoring");
+ break;
+
case '?':
return -EINVAL;
@@ -120,15 +129,11 @@ static int parse_argv(int argc, char *argv[]) {
assert_not_reached("Unhandled option code.");
}
- if (optind >= argc) {
+ if (!arg_verb) {
log_error("Verb argument missing.");
return -EINVAL;
}
- arg_verb = argv[optind];
-
- if (optind + 1 < argc)
- log_error("Excess arguments, ignoring");
return 0;
}
--
2.1.3

View file

@ -1,32 +0,0 @@
From 8232e39e7cf32071e11b3b04839e6c98fbc81d0f Mon Sep 17 00:00:00 2001
From: Colin Guthrie <colin@mageia.org>
Date: Wed, 5 Nov 2014 15:29:41 +0000
Subject: [PATCH] udev hwdb: Change error message regarding missing hwdb.bin
back to debug.
When used in an initramfs, it's expected that the hwdb.bin file is
not present (it makes for a very large initramfs otherwise).
While it's nice to tell the user about this, as it's not strictly
speaking an error we really shouldn't be so forceful in our
reporting.
---
src/libudev/libudev-hwdb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c
index a1cfc0b..0716072 100644
--- a/src/libudev/libudev-hwdb.c
+++ b/src/libudev/libudev-hwdb.c
@@ -296,7 +296,7 @@ _public_ struct udev_hwdb *udev_hwdb_new(struct udev *udev) {
}
if (!hwdb->f) {
- udev_err(udev, "hwdb.bin does not exist, please run udevadm hwdb --update");
+ udev_dbg(udev, "hwdb.bin does not exist, please run udevadm hwdb --update");
udev_hwdb_unref(hwdb);
return NULL;
}
--
2.1.3

View file

@ -1,31 +0,0 @@
From 919699ec301ea507edce4a619141ed22e789ac0d Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 31 Oct 2014 16:22:36 +0100
Subject: [PATCH] units: don't order journal flushing afte remote-fs.target
Instead, only depend on the actual file systems we need.
This should solve dep loops on setups where remote-fs.target is moved
into late boot.
---
units/systemd-journal-flush.service.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
index 699670b..2612220 100644
--- a/units/systemd-journal-flush.service.in
+++ b/units/systemd-journal-flush.service.in
@@ -10,8 +10,9 @@ Description=Trigger Flushing of Journal to Persistent Storage
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
DefaultDependencies=no
Requires=systemd-journald.service
-After=systemd-journald.service local-fs.target remote-fs.target
+After=systemd-journald.service
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
+RequiresMountsFor=/var/log/journal
[Service]
ExecStart=@rootbindir@/journalctl --flush
--
2.1.3

View file

@ -1,35 +0,0 @@
From a87a38c20196a4aeb56b6ba71d688eefd0b21c30 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Tue, 4 Nov 2014 20:28:08 +0100
Subject: [PATCH] units: make systemd-journald.service Type=notify
It already calls sd_notify(), so it looks like an oversight.
Without it, its ordering to systemd-journal-flush.service is
non-deterministic and the SIGUSR1 from flushing may kill journald before
it has its signal handlers set up.
https://bugs.freedesktop.org/show_bug.cgi?id=85871
https://bugzilla.redhat.com/show_bug.cgi?id=1159641
---
(foutrelis: dropped systemd-journald-audit.socket from Sockets= in order to
apply to systemd 217)
units/systemd-journald.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in
index 7ee67fd..8d380c8 100644
--- a/units/systemd-journald.service.in
+++ b/units/systemd-journald.service.in
@@ -14,6 +14,7 @@ After=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-a
Before=sysinit.target
[Service]
+Type=notify
Sockets=systemd-journald.socket systemd-journald-dev-log.socket
ExecStart=@rootlibexecdir@/systemd-journald
Restart=always
--
2.1.3

View file

@ -1,29 +0,0 @@
From 1f1926aa5e836caa3bd6df43704aecd606135103 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Sun, 2 Nov 2014 21:45:42 -0500
Subject: [PATCH] units: order sd-journal-flush after sd-remount-fs
Otherwise we could attempt to flush the journal while /var/log/ was
still ro, and silently skip journal flushing.
The way that errors in flushing are handled should still be changed to
be more transparent and robust.
---
units/systemd-journal-flush.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
index fa29089..98c91b4 100644
--- a/units/systemd-journal-flush.service.in
+++ b/units/systemd-journal-flush.service.in
@@ -11,6 +11,7 @@ Documentation=man:systemd-journald.service(8) man:journald.conf(5)
DefaultDependencies=no
Requires=systemd-journald.service
After=systemd-journald.service
+After=systemd-remount-fs.service
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
RequiresMountsFor=/var/log/journal
--
2.1.3

View file

@ -6,8 +6,8 @@
pkgbase=systemd
pkgname=('systemd' 'libsystemd' 'systemd-sysvcompat')
pkgver=217
pkgrel=8
pkgver=218
pkgrel=1
arch=('i686' 'x86_64')
url="http://www.freedesktop.org/wiki/Software/systemd"
makedepends=('acl' 'cryptsetup' 'docbook-xsl' 'gobject-introspection' 'gperf'
@ -16,46 +16,14 @@ makedepends=('acl' 'cryptsetup' 'docbook-xsl' 'gobject-introspection' 'gperf'
'python-lxml' 'quota-tools' 'shadow' 'xz')
options=('strip' 'debug')
source=("http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
'0001-nspawn-ignore-EEXIST-when-creating-mount-point.patch'
'0001-sd-dhcp-client-clean-up-raw-socket-sd_event_source-w.patch'
'0001-shared-install-avoid-prematurely-rejecting-missing-u.patch'
'0001-sd-bus-properly-handle-removals-of-non-existing-matc.patch'
'0001-units-don-t-order-journal-flushing-afte-remote-fs.ta.patch'
'0001-units-order-sd-journal-flush-after-sd-remount-fs.patch'
'0001-units-make-systemd-journald.service-Type-notify.patch'
'0001-shutdown-fix-arguments-to-run-initramfs-shutdown.patch'
'0001-udev-hwdb-Change-error-message-regarding-missing-hwd.patch'
'initcpio-hook-udev'
'initcpio-install-systemd'
'initcpio-install-udev')
md5sums=('e68dbff3cc19f66e341572d9fb2ffa89'
'ca9e33118fd8d456563854d95512a577'
'ade8c1b5b2c85d0a83b7bcf5aa6d131a'
'7aaf44ce842deb449fca0f2595bbc1e4'
'4adc3ddce027693bafa53089322e859b'
'42ff9d59bb057637355b202157d59991'
'92497d06e0af615be4b368fe615109c0'
'a321d62d6ffada9e6976bdd339fa3219'
'f72e8d086172177c224f0ce48ef54222'
'6326988822e9d18217525b2cb25cec1d'
md5sums=('4e2c511b0a7932d7fc9d79822273aac6'
'90ea67a7bb237502094914622a39e281'
'107c489f27c667be4101aecd3369b355'
'c9db3010602913559295de3481019681'
'bde43090d4ac0ef048e3eaee8202a407')
prepare() {
cd "$pkgname-$pkgver"
patch -Np1 <../0001-nspawn-ignore-EEXIST-when-creating-mount-point.patch
patch -Np1 <../0001-sd-dhcp-client-clean-up-raw-socket-sd_event_source-w.patch
patch -Np1 <../0001-shared-install-avoid-prematurely-rejecting-missing-u.patch
patch -Np1 <../0001-sd-bus-properly-handle-removals-of-non-existing-matc.patch
patch -Np1 <../0001-units-don-t-order-journal-flushing-afte-remote-fs.ta.patch
patch -Np1 <../0001-units-order-sd-journal-flush-after-sd-remount-fs.patch
patch -Np1 <../0001-units-make-systemd-journald.service-Type-notify.patch
patch -Np1 <../0001-shutdown-fix-arguments-to-run-initramfs-shutdown.patch
}
build() {
cd "$pkgname-$pkgver"

View file

@ -137,6 +137,7 @@ build() {
systemd-fsck@.service \
systemd-hibernate-resume@.service \
systemd-journald.service \
systemd-journald-audit.socket \
systemd-journald-dev-log.socket \
systemd-tmpfiles-setup-dev.service \
systemd-udev-trigger.service \