systemd-217-4
This commit is contained in:
parent
0440dc0ca2
commit
ea19761321
23
0001-NEWS-well-it-s-Options-now-not-Discard.patch
Normal file
23
0001-NEWS-well-it-s-Options-now-not-Discard.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From 0ec05200ca022ef7cf38b02e7a20e7dbff6689b7 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Tue, 28 Oct 2014 20:36:32 +0100
|
||||
Subject: [PATCH] NEWS: well, it's Options= now, not Discard=
|
||||
|
||||
(cherry picked from commit c4ac990007cd0069bb7e76ec15dd731320f382fd)
|
||||
---
|
||||
NEWS | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 84a43fd5df..82a1948a38 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -76,7 +76,7 @@ CHANGES WITH 217:
|
||||
rotating media anymore, and nobody stepped up to actively
|
||||
maintain this component of systemd it has now been removed.
|
||||
|
||||
- * Swap units can use Discard= to specify discard options.
|
||||
+ * Swap units can use Options= to specify discard options.
|
||||
Discard options specified for swaps in /etc/fstab are now
|
||||
respected.
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 267edb57a744028055f0fc4f8dbd0d691e6324ed 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.
|
||||
|
||||
[ Picked from upstream commit 919699ec301ea507edce4a619141ed22e789ac0d.
|
||||
The upstream commit contains unrelated changes in nspawn by mistake.
|
||||
They've been stripped in this backport. -- mschmidt ]
|
||||
---
|
||||
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.0
|
||||
|
@ -0,0 +1,23 @@
|
||||
From 0eac08a5cfa2771ad740e6e432c32daaf28b0bdc 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
|
||||
|
||||
(cherry picked from commit ef7b6c0190fefaacf6d8f8e1a6dda4ba8b98091b)
|
||||
---
|
||||
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 18afe0f12a..5658c61ba7 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)
|
||||
;
|
||||
}
|
||||
|
32
0003-nspawn-ignore-EEXIST-when-creating-mount-point.patch
Normal file
32
0003-nspawn-ignore-EEXIST-when-creating-mount-point.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 45c51a0b7f642419bf1f7cd396ab3653dcfd99a9 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
|
||||
|
||||
(cherry picked from commit 1ab19cb167b32967556eefd8f6d3df0e3de7d67d)
|
||||
---
|
||||
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 b6d9bc631c..d88987a580 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;
|
40
0004-udev-path_id-update-comments.patch
Normal file
40
0004-udev-path_id-update-comments.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 4adcaf0458a128135a1b65777541a1d643044233 Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay@vrfy.org>
|
||||
Date: Thu, 30 Oct 2014 01:18:34 +0100
|
||||
Subject: [PATCH] udev: path_id - update comments
|
||||
|
||||
(cherry picked from commit a42cdff19f2d34f12ceca0f40707421a8aaa2c2f)
|
||||
---
|
||||
src/udev/udev-builtin-path_id.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
|
||||
index 0d247f6b5a..df996cb17a 100644
|
||||
--- a/src/udev/udev-builtin-path_id.c
|
||||
+++ b/src/udev/udev-builtin-path_id.c
|
||||
@@ -548,9 +548,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
|
||||
}
|
||||
|
||||
/*
|
||||
- * Do return devices with have an unknown type of parent device, they
|
||||
- * might produce conflicting IDs below multiple independent parent
|
||||
- * devices.
|
||||
+ * Do not return devices with an unknown parent device type. They
|
||||
+ * might produce conflicting IDs if the parent does not provide a
|
||||
+ * unique and predictable name.
|
||||
*/
|
||||
if (!supported_parent) {
|
||||
free(path);
|
||||
@@ -558,9 +558,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
|
||||
}
|
||||
|
||||
/*
|
||||
- * Do not return a have-only a single-parent block devices, some
|
||||
- * have entire hidden buses behind it, and not create predictable
|
||||
- * IDs that way.
|
||||
+ * Do not return block devices without a well-known transport. Some
|
||||
+ * devices do not expose their buses and do not provide a unique
|
||||
+ * and predictable name that way.
|
||||
*/
|
||||
if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) {
|
||||
free(path);
|
@ -0,0 +1,71 @@
|
||||
From 147a1201a526b3eac5ee6b0add543d5061db9943 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 22:25:33 -0400
|
||||
Subject: [PATCH] bash-completion: rework startable/restartable units once more
|
||||
|
||||
I tried to use 'systemctl --all list-units' to filter unit files, but
|
||||
this always filters out unit files which are not loaded. We want to complete
|
||||
systemctl start with those units too, so this approach is not going to work.
|
||||
|
||||
New version is rather slow, but hopefully correct.
|
||||
|
||||
(cherry picked from commit 9ff8af5460d57dfab78a1137ec743b539715e82a)
|
||||
---
|
||||
shell-completion/bash/systemctl.in | 27 ++++++++++++++-------------
|
||||
1 file changed, 14 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
|
||||
index 1c44a8df01..9e538a9a5b 100644
|
||||
--- a/shell-completion/bash/systemctl.in
|
||||
+++ b/shell-completion/bash/systemctl.in
|
||||
@@ -52,20 +52,23 @@ __filter_units_by_property () {
|
||||
}
|
||||
|
||||
__get_all_units () { { __systemctl $1 list-unit-files; __systemctl $1 list-units --all; } \
|
||||
- | { while read -r a b; do echo " $a"; done; }; }
|
||||
+ | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; }
|
||||
__get_template_names () { __systemctl $1 list-unit-files \
|
||||
| { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; }
|
||||
|
||||
__get_active_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b; do echo " $a"; done; }; }
|
||||
__get_startable_units () {
|
||||
- # find inactive or failed units, filter out masked and not-found
|
||||
- __systemctl $1 list-units --state inactive,failed -- $( __get_all_units ) | \
|
||||
- { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
|
||||
+ # find startable inactive units
|
||||
+ __filter_units_by_property $mode LoadState loaded $(
|
||||
+ __filter_units_by_property $mode ActiveState inactive $(
|
||||
+ __filter_units_by_property $mode CanStart yes $( __get_all_units )))
|
||||
+}
|
||||
__get_restartable_units () {
|
||||
- # find !masked, filter out masked and not-found
|
||||
- __systemctl $1 list-units --state active,inactive,failed -- $( __get_all_units ) | \
|
||||
- { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
|
||||
+ # filter out masked and not-found
|
||||
+ __filter_units_by_property $mode LoadState loaded $(
|
||||
+ __filter_units_by_property $mode CanStart yes $( __get_all_units ))
|
||||
+}
|
||||
__get_failed_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; }
|
||||
__get_enabled_units () { __systemctl $1 list-unit-files \
|
||||
@@ -186,15 +189,13 @@ _systemctl () {
|
||||
compopt -o filenames
|
||||
|
||||
elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
|
||||
- comps=$( __filter_units_by_property $mode CanStart yes \
|
||||
- $( __get_startable_units $mode);
|
||||
- __get_template_names $mode)
|
||||
+ comps=$( __get_startable_units $mode;
|
||||
+ __get_template_names $mode)
|
||||
compopt -o filenames
|
||||
|
||||
elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
|
||||
- comps=$( __filter_units_by_property $mode CanStart yes \
|
||||
- $( __get_restartable_units $mode); \
|
||||
- __get_template_names $mode)
|
||||
+ comps=$( __get_restartable_units $mode;
|
||||
+ __get_template_names $mode)
|
||||
compopt -o filenames
|
||||
|
||||
elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
|
98
0006-systemctl-let-list-units-unit-files-honour-type.patch
Normal file
98
0006-systemctl-let-list-units-unit-files-honour-type.patch
Normal file
@ -0,0 +1,98 @@
|
||||
From 6ce0f84be6b567660fc4ad4e766ef14217392c05 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 22:46:30 -0400
|
||||
Subject: [PATCH] systemctl: let list-{units,unit-files } honour --type
|
||||
|
||||
The docs don't clarify what is expected, but I don't see any reason
|
||||
why --type should be ignored.
|
||||
|
||||
Also restucture the compund conditions into separate clauses for
|
||||
easier reading.
|
||||
|
||||
(cherry picked from commit 6c71341aeecc3d092ed90f66e1b2c481b8e260ff)
|
||||
---
|
||||
src/systemctl/systemctl.c | 48 ++++++++++++++++++++++++++++++++++++-----------
|
||||
1 file changed, 37 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index 28eaa6a847..b71040be40 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -301,21 +301,37 @@ static int compare_unit_info(const void *a, const void *b) {
|
||||
}
|
||||
|
||||
static bool output_show_unit(const UnitInfo *u, char **patterns) {
|
||||
- const char *dot;
|
||||
-
|
||||
if (!strv_isempty(patterns)) {
|
||||
char **pattern;
|
||||
|
||||
STRV_FOREACH(pattern, patterns)
|
||||
if (fnmatch(*pattern, u->id, FNM_NOESCAPE) == 0)
|
||||
- return true;
|
||||
+ goto next;
|
||||
return false;
|
||||
}
|
||||
|
||||
- return (!arg_types || ((dot = strrchr(u->id, '.')) &&
|
||||
- strv_find(arg_types, dot+1))) &&
|
||||
- (arg_all || !(streq(u->active_state, "inactive")
|
||||
- || u->following[0]) || u->job_id > 0);
|
||||
+next:
|
||||
+ if (arg_types) {
|
||||
+ const char *dot;
|
||||
+
|
||||
+ dot = strrchr(u->id, '.');
|
||||
+ if (!dot)
|
||||
+ return false;
|
||||
+
|
||||
+ if (!strv_find(arg_types, dot+1))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ if (arg_all)
|
||||
+ return true;
|
||||
+
|
||||
+ if (u->job_id > 0)
|
||||
+ return true;
|
||||
+
|
||||
+ if (streq(u->active_state, "inactive") || u->following[0])
|
||||
+ return false;
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
|
||||
@@ -1231,18 +1247,28 @@ static int compare_unit_file_list(const void *a, const void *b) {
|
||||
}
|
||||
|
||||
static bool output_show_unit_file(const UnitFileList *u, char **patterns) {
|
||||
- const char *dot;
|
||||
-
|
||||
if (!strv_isempty(patterns)) {
|
||||
char **pattern;
|
||||
|
||||
STRV_FOREACH(pattern, patterns)
|
||||
if (fnmatch(*pattern, basename(u->path), FNM_NOESCAPE) == 0)
|
||||
- return true;
|
||||
+ goto next;
|
||||
return false;
|
||||
}
|
||||
|
||||
- return !arg_types || ((dot = strrchr(u->path, '.')) && strv_find(arg_types, dot+1));
|
||||
+next:
|
||||
+ if (!strv_isempty(arg_types)) {
|
||||
+ const char *dot;
|
||||
+
|
||||
+ dot = strrchr(u->path, '.');
|
||||
+ if (!dot)
|
||||
+ return false;
|
||||
+
|
||||
+ if (!strv_find(arg_types, dot+1))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
static void output_unit_file_list(const UnitFileList *units, unsigned c) {
|
26
0007-systemctl-obey-state-in-list-unit-files.patch
Normal file
26
0007-systemctl-obey-state-in-list-unit-files.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 963449549e8f4225c90c13fec9ac845d7f9aed43 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 22:51:00 -0400
|
||||
Subject: [PATCH] systemctl: obey --state in list-unit-files
|
||||
|
||||
(cherry picked from commit fec1530e6b5b8d6dc352c7338010357126e84621)
|
||||
---
|
||||
src/systemctl/systemctl.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index b71040be40..8481a9b20c 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -1268,6 +1268,11 @@ next:
|
||||
return false;
|
||||
}
|
||||
|
||||
+ if (!strv_isempty(arg_states)) {
|
||||
+ if (!strv_find(arg_states, unit_file_state_to_string(u->state)))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
From e44731b91ad77e04bf26de21d1605bbe342577c6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 23:06:58 -0400
|
||||
Subject: [PATCH] bash-completion: use improved filtering to make things faster
|
||||
|
||||
(cherry picked from commit 372b221166eb586c4f767969f442ed940e21f353)
|
||||
---
|
||||
shell-completion/bash/systemctl.in | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
|
||||
index 9e538a9a5b..9e98a1850e 100644
|
||||
--- a/shell-completion/bash/systemctl.in
|
||||
+++ b/shell-completion/bash/systemctl.in
|
||||
@@ -60,14 +60,20 @@ __get_active_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b; do echo " $a"; done; }; }
|
||||
__get_startable_units () {
|
||||
# find startable inactive units
|
||||
- __filter_units_by_property $mode LoadState loaded $(
|
||||
- __filter_units_by_property $mode ActiveState inactive $(
|
||||
- __filter_units_by_property $mode CanStart yes $( __get_all_units )))
|
||||
+ __filter_units_by_property $mode ActiveState inactive $(
|
||||
+ __filter_units_by_property $mode CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
|
||||
+ __systemctl $mode list-units --state inactive,failed | \
|
||||
+ { while read -r a b; do echo " $a"; done; } ))
|
||||
}
|
||||
__get_restartable_units () {
|
||||
# filter out masked and not-found
|
||||
- __filter_units_by_property $mode LoadState loaded $(
|
||||
- __filter_units_by_property $mode CanStart yes $( __get_all_units ))
|
||||
+ __filter_units_by_property $mode CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
|
||||
+ __systemctl $mode list-units | \
|
||||
+ { while read -r a b; do echo " $a"; done; } )
|
||||
}
|
||||
__get_failed_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; }
|
69
0009-zsh-completion-update-start-restart-completions.patch
Normal file
69
0009-zsh-completion-update-start-restart-completions.patch
Normal file
@ -0,0 +1,69 @@
|
||||
From b06eb4603e2cdd45a78a2b74e19fafc2d784e906 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 23:47:55 -0400
|
||||
Subject: [PATCH] zsh-completion: update start/restart completions
|
||||
|
||||
Now zsh should behave the same for those two subcommands as bash.
|
||||
|
||||
(cherry picked from commit 81333ecf9d5497f8aa95f7fec23c67b869d5abf9)
|
||||
---
|
||||
shell-completion/zsh/_systemctl.in | 28 +++++++++++++++++++++-------
|
||||
1 file changed, 21 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
|
||||
index 44981fe85d..7eefe53aec 100644
|
||||
--- a/shell-completion/zsh/_systemctl.in
|
||||
+++ b/shell-completion/zsh/_systemctl.in
|
||||
@@ -141,13 +141,29 @@ _filter_units_by_property() {
|
||||
done
|
||||
}
|
||||
|
||||
-_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do echo -E - " $a"; done; } }
|
||||
+_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; } }
|
||||
_systemctl_get_template_names() { __systemctl list-unit-files | { while read -r a b; do [[ $a =~ @\. ]] && echo -E - " ${a%%@.*}@"; done; } }
|
||||
|
||||
|
||||
_systemctl_active_units() {_sys_active_units=( $(__systemctl list-units | { while read -r a b; do echo -E - " $a"; done; }) )}
|
||||
-_systemctl_startable_units(){_sys_startable_units=($(__systemctl list-units --state inactive,failed -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
|
||||
-_systemctl_restartable_units(){_sys_restartable_units=($(__systemctl list-units --state inactive,failed,active -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
|
||||
+
|
||||
+_systemctl_startable_units(){
|
||||
+ _sys_startable_units=(_filter_units_by_property ActiveState inactive $(
|
||||
+ _filter_units_by_property CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; }
|
||||
+ __systemctl $mode list-units --state inactive,failed | \
|
||||
+ { while read -r a b; do echo -E - " $a"; done; } )))
|
||||
+}
|
||||
+
|
||||
+_systemctl_restartable_units(){
|
||||
+ _sys_restartable_units=(_filter_units_by_property CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; }
|
||||
+ __systemctl $mode list-units | \
|
||||
+ { while read -r a b; do echo -E - " $a"; done; } ))
|
||||
+}
|
||||
+
|
||||
_systemctl_failed_units() {_sys_failed_units=( $(__systemctl list-units --failed | { while read -r a b; do echo -E - " $a"; done; }) )}
|
||||
_systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files | { while read -r a b; do [[ $b == "enabled" ]] && echo -E - " $a"; done; }) )}
|
||||
_systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files | { while read -r a b; do [[ $b == "disabled" ]] && echo -E - " $a"; done; }) )}
|
||||
@@ -194,8 +210,7 @@ done
|
||||
(( $+functions[_systemctl_start] )) || _systemctl_start()
|
||||
{
|
||||
_systemctl_startable_units
|
||||
- compadd "$@" - $( _filter_units_by_property CanStart yes \
|
||||
- ${_sys_startable_units[*]} )
|
||||
+ compadd "$@" - ${_sys_startable_units[*]} $(_systemctl_get_template_names)
|
||||
}
|
||||
|
||||
# Completion functions for STOPPABLE_UNITS
|
||||
@@ -231,8 +246,7 @@ for fun in restart reload-or-restart ; do
|
||||
(( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
|
||||
{
|
||||
_systemctl_restartable_units
|
||||
- compadd "$@" - $( _filter_units_by_property CanStart yes \
|
||||
- ${_sys_restartable_units[*]} )
|
||||
+ compadd "$@" - ${_sys_restartable_units[*]} $(_systemctl_get_template_names)
|
||||
}
|
||||
done
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 71b0b96d1ced2ab5d0fe67963e112d50c15f38e7 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 30 Oct 2014 10:15:54 +0100
|
||||
Subject: [PATCH] keymap: Ignore brightness keys on Dell Inspiron 1520 to avoid
|
||||
double events
|
||||
|
||||
On the Dell Inspiron 1520 both the atkbd and acpi-video input devices report
|
||||
an event for pressing the brightness up / down key-combos, resulting in user
|
||||
space seeing double events and increasing / decreasing the brightness 2 steps
|
||||
for each keypress.
|
||||
|
||||
This hwdb snippet suppresses the atkbd events, making the Inspiron 1520 work
|
||||
like most modern laptops which emit brightness up / down events through
|
||||
acpi-video only.
|
||||
|
||||
Reported by Pavel Malyshev <p.malishev@gmail.com>
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1141525
|
||||
(cherry picked from commit aba248ee6b1eb10baf3d89eca2ad7569459af6ab)
|
||||
---
|
||||
hwdb/60-keyboard.hwdb | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
|
||||
index 06caba9791..d2ca965c90 100644
|
||||
--- a/hwdb/60-keyboard.hwdb
|
||||
+++ b/hwdb/60-keyboard.hwdb
|
||||
@@ -230,6 +230,11 @@ keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1110:pvr*
|
||||
keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1210:pvr*
|
||||
KEYBOARD_KEY_84=wlan
|
||||
|
||||
+# Dell Inspiron 1520
|
||||
+keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1520:pvr*
|
||||
+ KEYBOARD_KEY_85=unknown # Brightness Down, also emitted by acpi-video, ignore
|
||||
+ KEYBOARD_KEY_86=unknown # Brightness Up, also emitted by acpi-video, ignore
|
||||
+
|
||||
# Latitude XT2
|
||||
keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*XT2:pvr*
|
||||
KEYBOARD_KEY_9b=up # tablet rocker up
|
161
0011-sysusers-Preserve-ownership-and-mode-on-etc-passwd-a.patch
Normal file
161
0011-sysusers-Preserve-ownership-and-mode-on-etc-passwd-a.patch
Normal file
@ -0,0 +1,161 @@
|
||||
From 455c0ac1d254ceecb30625fa01e9fd3b47956693 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Guthrie <colin@mageia.org>
|
||||
Date: Wed, 29 Oct 2014 14:03:41 +0000
|
||||
Subject: [PATCH] sysusers: Preserve ownership and mode on /etc/passwd and
|
||||
friends
|
||||
|
||||
When running sysusers we would clobber file ownership and permissions
|
||||
on the files /etc/passwd, /etc/group and /etc/[g]shadow.
|
||||
|
||||
This simply preserves the ownership and mode if existing files are
|
||||
found.
|
||||
|
||||
(cherry picked from commit e3c72c21d62aadabf4df436c3e2c7219eeeccc1c)
|
||||
---
|
||||
src/sysusers/sysusers.c | 61 +++++++++++++++++++++++++++++++++----------------
|
||||
1 file changed, 41 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
|
||||
index 9b9be96a0a..c133dc5f10 100644
|
||||
--- a/src/sysusers/sysusers.c
|
||||
+++ b/src/sysusers/sysusers.c
|
||||
@@ -358,6 +358,7 @@ static int write_files(void) {
|
||||
_cleanup_fclose_ FILE *passwd = NULL, *group = NULL, *shadow = NULL, *gshadow = NULL;
|
||||
_cleanup_free_ char *passwd_tmp = NULL, *group_tmp = NULL, *shadow_tmp = NULL, *gshadow_tmp = NULL;
|
||||
const char *passwd_path = NULL, *group_path = NULL, *shadow_path = NULL, *gshadow_path = NULL;
|
||||
+ struct stat st;
|
||||
bool group_changed = false;
|
||||
Iterator iterator;
|
||||
Item *i;
|
||||
@@ -372,15 +373,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(group), 0644) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(group_path, "re");
|
||||
if (original) {
|
||||
struct group *gr;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(group), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(group), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((gr = fgetgrent(original))) {
|
||||
/* Safety checks against name and GID
|
||||
@@ -418,6 +421,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(group), 0644) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(i, todo_gids, iterator) {
|
||||
@@ -449,15 +455,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(gshadow), 0000) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(gshadow_path, "re");
|
||||
if (original) {
|
||||
struct sgrp *sg;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(gshadow), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(gshadow), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((sg = fgetsgent(original))) {
|
||||
|
||||
@@ -483,6 +491,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(gshadow), 0000) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(i, todo_gids, iterator) {
|
||||
@@ -513,15 +524,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(passwd), 0644) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(passwd_path, "re");
|
||||
if (original) {
|
||||
struct passwd *pw;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(passwd), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(passwd), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((pw = fgetpwent(original))) {
|
||||
|
||||
@@ -552,6 +565,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(passwd), 0644) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(i, todo_uids, iterator) {
|
||||
@@ -596,15 +612,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(shadow), 0000) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(shadow_path, "re");
|
||||
if (original) {
|
||||
struct spwd *sp;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(shadow), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(shadow), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((sp = fgetspent(original))) {
|
||||
|
||||
@@ -629,6 +647,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(shadow), 0000) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY);
|
23
0012-snapshot-return-error-when-snapshot-exists.patch
Normal file
23
0012-snapshot-return-error-when-snapshot-exists.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From bf69d42ba609389fb858c872b1523df06b382c1b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Tue, 28 Oct 2014 12:36:17 -0400
|
||||
Subject: [PATCH] snapshot: return error when snapshot exists
|
||||
|
||||
(cherry picked from commit 7cabba07745b388497e8c0fc19b61984167fd474)
|
||||
---
|
||||
src/core/snapshot.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/snapshot.c b/src/core/snapshot.c
|
||||
index 5eed615a15..c2678cbe6e 100644
|
||||
--- a/src/core/snapshot.c
|
||||
+++ b/src/core/snapshot.c
|
||||
@@ -208,7 +208,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e,
|
||||
return sd_bus_error_setf(e, SD_BUS_ERROR_INVALID_ARGS, "Unit name %s lacks snapshot suffix.", name);
|
||||
|
||||
if (manager_get_unit(m, name))
|
||||
- sd_bus_error_setf(e, BUS_ERROR_UNIT_EXISTS, "Snapshot %s exists already.", name);
|
||||
+ return sd_bus_error_setf(e, BUS_ERROR_UNIT_EXISTS, "Snapshot %s exists already.", name);
|
||||
|
||||
} else {
|
||||
|
@ -0,0 +1,30 @@
|
||||
From 25c530dfadb25190da84efa435102a0b525b8487 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.
|
||||
|
||||
(cherry picked from commit affaa94fc38a980a70534f70f6a6c58a4129b062)
|
||||
---
|
||||
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 0eba4c379d..1f7f238ca0 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))
|
54
0014-remove-references-of-readahead.patch
Normal file
54
0014-remove-references-of-readahead.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From cac66621b23029e0dbab0cbcf8720e602e92eafd Mon Sep 17 00:00:00 2001
|
||||
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||
Date: Thu, 25 Sep 2014 22:46:37 +0200
|
||||
Subject: [PATCH] remove references of readahead
|
||||
|
||||
(cherry picked from commit cb607ecb84b3cb7299438ca6f7fab705b0a6de45)
|
||||
---
|
||||
.gitignore | 1 -
|
||||
README | 1 -
|
||||
TODO | 7 -------
|
||||
3 files changed, 9 deletions(-)
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 0b71f0973b..14f169135d 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -101,7 +101,6 @@
|
||||
/systemd-quotacheck
|
||||
/systemd-random-seed
|
||||
/systemd-rc-local-generator
|
||||
-/systemd-readahead
|
||||
/systemd-remount-api-vfs
|
||||
/systemd-remount-fs
|
||||
/systemd-reply-password
|
||||
diff --git a/README b/README
|
||||
index 99b66a8396..144036717c 100644
|
||||
--- a/README
|
||||
+++ b/README
|
||||
@@ -30,7 +30,6 @@ AUTHOR:
|
||||
|
||||
LICENSE:
|
||||
LGPLv2.1+ for all code
|
||||
- - except sd-readahead.[ch] which is MIT
|
||||
- except src/shared/MurmurHash2.c which is Public Domain
|
||||
- except src/shared/siphash24.c which is CC0 Public Domain
|
||||
- except src/journal/lookup3.c which is Public Domain
|
||||
diff --git a/TODO b/TODO
|
||||
index b07d664715..abe89b78a0 100644
|
||||
--- a/TODO
|
||||
+++ b/TODO
|
||||
@@ -646,13 +646,6 @@ Features:
|
||||
|
||||
* and a dbus call to generate target from current state
|
||||
|
||||
-* readahead:
|
||||
- - drop /.readahead on bigger upgrades with yum
|
||||
- - move readahead files into /var (look for them with .path units?)
|
||||
- - readahead: use BTRFS_IOC_DEFRAG_RANGE instead of BTRFS_IOC_DEFRAG ioctl, with START_IO
|
||||
- - readahead: when bumping /sys readahead variable save mtime and compare later to detect changes
|
||||
- - readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/
|
||||
-
|
||||
* GC unreferenced jobs (such as .device jobs)
|
||||
|
||||
* write blog stories about:
|
40
0015-shared-add-missing-includes.patch
Normal file
40
0015-shared-add-missing-includes.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From cda53bb5a56c508e7ad4e8cc1cbb1f4be1fbb2bf Mon Sep 17 00:00:00 2001
|
||||
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||
Date: Sun, 12 Oct 2014 17:59:03 +0200
|
||||
Subject: [PATCH] shared: add missing includes
|
||||
|
||||
(cherry picked from commit 81a12ba6ec2f8514b7d35f0c39a96cc74bb14019)
|
||||
---
|
||||
src/shared/copy.h | 3 +++
|
||||
src/shared/locale-util.h | 4 ++++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/shared/copy.h b/src/shared/copy.h
|
||||
index 0bf2598f60..6b93107fab 100644
|
||||
--- a/src/shared/copy.h
|
||||
+++ b/src/shared/copy.h
|
||||
@@ -21,6 +21,9 @@
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
+#include <stdbool.h>
|
||||
+#include <sys/types.h>
|
||||
+
|
||||
int copy_file(const char *from, const char *to, int flags, mode_t mode);
|
||||
int copy_tree(const char *from, const char *to, bool merge);
|
||||
int copy_bytes(int fdf, int fdt, off_t max_bytes);
|
||||
diff --git a/src/shared/locale-util.h b/src/shared/locale-util.h
|
||||
index d7a3e4fae6..e48aa3d9af 100644
|
||||
--- a/src/shared/locale-util.h
|
||||
+++ b/src/shared/locale-util.h
|
||||
@@ -21,6 +21,10 @@
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
+#include <stdbool.h>
|
||||
+
|
||||
+#include "macro.h"
|
||||
+
|
||||
typedef enum LocaleVariable {
|
||||
/* We don't list LC_ALL here on purpose. People should be
|
||||
* using LANG instead. */
|
32
0016-shared-fix-typo.patch
Normal file
32
0016-shared-fix-typo.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 0e0f3ce5c1c3d4d112e2a4534fc895aca463e460 Mon Sep 17 00:00:00 2001
|
||||
From: Ronny Chevalier <chevalier.ronny@gmail.com>
|
||||
Date: Thu, 16 Oct 2014 23:22:06 +0200
|
||||
Subject: [PATCH] shared: fix typo
|
||||
|
||||
(cherry picked from commit d3774a1b15ea86f6156269e7ed813830f0c4abb8)
|
||||
---
|
||||
src/shared/capability.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/shared/capability.c b/src/shared/capability.c
|
||||
index d2b901337f..0226542c6c 100644
|
||||
--- a/src/shared/capability.c
|
||||
+++ b/src/shared/capability.c
|
||||
@@ -228,7 +228,7 @@ int drop_privileges(uid_t uid, gid_t gid, uint64_t keep_capabilities) {
|
||||
* which we want to avoid. */
|
||||
|
||||
if (setresgid(gid, gid, gid) < 0) {
|
||||
- log_error("Failed change group ID: %m");
|
||||
+ log_error("Failed to change group ID: %m");
|
||||
return -errno;
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ int drop_privileges(uid_t uid, gid_t gid, uint64_t keep_capabilities) {
|
||||
|
||||
r = setresuid(uid, uid, uid);
|
||||
if (r < 0) {
|
||||
- log_error("Failed change user ID: %m");
|
||||
+ log_error("Failed to change user ID: %m");
|
||||
return -errno;
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 471a21a8647c54a0a9c7334a7dde4e6dd1712248 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
|
||||
(cherry picked from commit 0ffce503cd6e5a5ff5ba5cd1cc23684cfb8bb9e3)
|
||||
---
|
||||
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 035b44cc52..cab93e8dc6 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;
|
75
0018-nspawn-don-t-make-up-1-as-error-code.patch
Normal file
75
0018-nspawn-don-t-make-up-1-as-error-code.patch
Normal file
@ -0,0 +1,75 @@
|
||||
From 9706b7533be86dad6303cf91a886a8491d2995f7 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 30 Oct 2014 20:53:23 +0100
|
||||
Subject: [PATCH] nspawn: don't make up -1 as error code
|
||||
|
||||
(cherry picked from commit fddbb89c46ea5d39e52e361b390ea34a06cbb67c)
|
||||
---
|
||||
src/nspawn/nspawn.c | 27 +++++++++++----------------
|
||||
1 file changed, 11 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||
index d88987a580..7e96efd425 100644
|
||||
--- a/src/nspawn/nspawn.c
|
||||
+++ b/src/nspawn/nspawn.c
|
||||
@@ -2931,33 +2931,30 @@ static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
}
|
||||
|
||||
switch (status.si_code) {
|
||||
+
|
||||
case CLD_EXITED:
|
||||
r = status.si_status;
|
||||
if (r == 0) {
|
||||
if (!arg_quiet)
|
||||
- log_debug("Container %s exited successfully.",
|
||||
- arg_machine);
|
||||
+ log_debug("Container %s exited successfully.", arg_machine);
|
||||
|
||||
*container = CONTAINER_TERMINATED;
|
||||
- } else {
|
||||
- log_error("Container %s failed with error code %i.",
|
||||
- arg_machine, status.si_status);
|
||||
- }
|
||||
+ } else
|
||||
+ log_error("Container %s failed with error code %i.", arg_machine, status.si_status);
|
||||
+
|
||||
break;
|
||||
|
||||
case CLD_KILLED:
|
||||
if (status.si_status == SIGINT) {
|
||||
if (!arg_quiet)
|
||||
- log_info("Container %s has been shut down.",
|
||||
- arg_machine);
|
||||
+ log_info("Container %s has been shut down.", arg_machine);
|
||||
|
||||
*container = CONTAINER_TERMINATED;
|
||||
r = 0;
|
||||
break;
|
||||
} else if (status.si_status == SIGHUP) {
|
||||
if (!arg_quiet)
|
||||
- log_info("Container %s is being rebooted.",
|
||||
- arg_machine);
|
||||
+ log_info("Container %s is being rebooted.", arg_machine);
|
||||
|
||||
*container = CONTAINER_REBOOTED;
|
||||
r = 0;
|
||||
@@ -2966,15 +2963,13 @@ static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
/* CLD_KILLED fallthrough */
|
||||
|
||||
case CLD_DUMPED:
|
||||
- log_error("Container %s terminated by signal %s.",
|
||||
- arg_machine, signal_to_string(status.si_status));
|
||||
- r = -1;
|
||||
+ log_error("Container %s terminated by signal %s.", arg_machine, signal_to_string(status.si_status));
|
||||
+ r = -EIO;
|
||||
break;
|
||||
|
||||
default:
|
||||
- log_error("Container %s failed due to unknown reason.",
|
||||
- arg_machine);
|
||||
- r = -1;
|
||||
+ log_error("Container %s failed due to unknown reason.", arg_machine);
|
||||
+ r = -EIO;
|
||||
break;
|
||||
}
|
||||
|
114
0019-units-don-t-order-journal-flushing-afte-remote-fs.ta.patch
Normal file
114
0019-units-don-t-order-journal-flushing-afte-remote-fs.ta.patch
Normal file
@ -0,0 +1,114 @@
|
||||
From cae7f26accc90031b04c6cedae10b54a6c854c87 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.
|
||||
|
||||
(cherry picked from commit 919699ec301ea507edce4a619141ed22e789ac0d)
|
||||
---
|
||||
src/nspawn/nspawn.c | 38 ++++++++++++++--------------------
|
||||
units/systemd-journal-flush.service.in | 3 ++-
|
||||
2 files changed, 18 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||
index 7e96efd425..f332ade03e 100644
|
||||
--- a/src/nspawn/nspawn.c
|
||||
+++ b/src/nspawn/nspawn.c
|
||||
@@ -2911,8 +2911,8 @@ static int change_uid_gid(char **_home) {
|
||||
* container argument.
|
||||
* > 0 : The program executed in the container terminated with an
|
||||
* error. The exit code of the program executed in the
|
||||
- * container is returned. No change is made to the container
|
||||
- * argument.
|
||||
+ * container is returned. The container argument has been set
|
||||
+ * to CONTAINER_TERMINATED.
|
||||
* 0 : The container is being rebooted, has been shut down or exited
|
||||
* successfully. The container argument has been set to either
|
||||
* CONTAINER_TERMINATED or CONTAINER_REBOOTED.
|
||||
@@ -2921,8 +2921,8 @@ static int change_uid_gid(char **_home) {
|
||||
* error is indicated by a non-zero value.
|
||||
*/
|
||||
static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
- int r;
|
||||
siginfo_t status;
|
||||
+ int r;
|
||||
|
||||
r = wait_for_terminate(pid, &status);
|
||||
if (r < 0) {
|
||||
@@ -2933,44 +2933,38 @@ static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
switch (status.si_code) {
|
||||
|
||||
case CLD_EXITED:
|
||||
- r = status.si_status;
|
||||
- if (r == 0) {
|
||||
- if (!arg_quiet)
|
||||
- log_debug("Container %s exited successfully.", arg_machine);
|
||||
+ if (status.si_status == 0) {
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s exited successfully.", arg_machine);
|
||||
|
||||
- *container = CONTAINER_TERMINATED;
|
||||
} else
|
||||
- log_error("Container %s failed with error code %i.", arg_machine, status.si_status);
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s failed with error code %i.", arg_machine, status.si_status);
|
||||
|
||||
- break;
|
||||
+ *container = CONTAINER_TERMINATED;
|
||||
+ return status.si_status;
|
||||
|
||||
case CLD_KILLED:
|
||||
if (status.si_status == SIGINT) {
|
||||
- if (!arg_quiet)
|
||||
- log_info("Container %s has been shut down.", arg_machine);
|
||||
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s has been shut down.", arg_machine);
|
||||
*container = CONTAINER_TERMINATED;
|
||||
- r = 0;
|
||||
- break;
|
||||
+ return 0;
|
||||
+
|
||||
} else if (status.si_status == SIGHUP) {
|
||||
- if (!arg_quiet)
|
||||
- log_info("Container %s is being rebooted.", arg_machine);
|
||||
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s is being rebooted.", arg_machine);
|
||||
*container = CONTAINER_REBOOTED;
|
||||
- r = 0;
|
||||
- break;
|
||||
+ return 0;
|
||||
}
|
||||
+
|
||||
/* CLD_KILLED fallthrough */
|
||||
|
||||
case CLD_DUMPED:
|
||||
log_error("Container %s terminated by signal %s.", arg_machine, signal_to_string(status.si_status));
|
||||
- r = -EIO;
|
||||
- break;
|
||||
+ return -EIO;
|
||||
|
||||
default:
|
||||
log_error("Container %s failed due to unknown reason.", arg_machine);
|
||||
- r = -EIO;
|
||||
- break;
|
||||
+ return -EIO;
|
||||
}
|
||||
|
||||
return r;
|
||||
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
|
||||
index 699670bb4e..2612220e2e 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
|
@ -0,0 +1,75 @@
|
||||
From bc1912751bdb942cb36ccbadc823c0ba1377ec46 Mon Sep 17 00:00:00 2001
|
||||
From: Marcel Holtmann <marcel@holtmann.org>
|
||||
Date: Fri, 31 Oct 2014 20:37:59 +0100
|
||||
Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
|
||||
|
||||
(cherry picked from commit 5d20fde4a5c4dff4d7c737b545fbd13582d544c1)
|
||||
---
|
||||
hwdb/20-bluetooth-vendor-product.hwdb | 57 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 57 insertions(+)
|
||||
|
||||
diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
|
||||
index ee2efdff2e..58ca87d69d 100644
|
||||
--- a/hwdb/20-bluetooth-vendor-product.hwdb
|
||||
+++ b/hwdb/20-bluetooth-vendor-product.hwdb
|
||||
@@ -1166,3 +1166,60 @@ bluetooth:v0181*
|
||||
|
||||
bluetooth:v0182*
|
||||
ID_VENDOR_FROM_DATABASE=HOP Ubiquitous
|
||||
+
|
||||
+bluetooth:v0183*
|
||||
+ ID_VENDOR_FROM_DATABASE=To Be Assigned
|
||||
+
|
||||
+bluetooth:v0184*
|
||||
+ ID_VENDOR_FROM_DATABASE=Nectar
|
||||
+
|
||||
+bluetooth:v0185*
|
||||
+ ID_VENDOR_FROM_DATABASE=bel'apps LLC
|
||||
+
|
||||
+bluetooth:v0186*
|
||||
+ ID_VENDOR_FROM_DATABASE=CORE Lighting Ltd
|
||||
+
|
||||
+bluetooth:v0187*
|
||||
+ ID_VENDOR_FROM_DATABASE=Seraphim Sense Ltd
|
||||
+
|
||||
+bluetooth:v0188*
|
||||
+ ID_VENDOR_FROM_DATABASE=Unico RBC
|
||||
+
|
||||
+bluetooth:v0189*
|
||||
+ ID_VENDOR_FROM_DATABASE=Physical Enterprises Inc.
|
||||
+
|
||||
+bluetooth:v018A*
|
||||
+ ID_VENDOR_FROM_DATABASE=Able Trend Technology Limited
|
||||
+
|
||||
+bluetooth:v018B*
|
||||
+ ID_VENDOR_FROM_DATABASE=Konica Minolta, Inc.
|
||||
+
|
||||
+bluetooth:v018C*
|
||||
+ ID_VENDOR_FROM_DATABASE=Wilo SE
|
||||
+
|
||||
+bluetooth:v018D*
|
||||
+ ID_VENDOR_FROM_DATABASE=Extron Design Services
|
||||
+
|
||||
+bluetooth:v018E*
|
||||
+ ID_VENDOR_FROM_DATABASE=Fitbit, Inc.
|
||||
+
|
||||
+bluetooth:v018F*
|
||||
+ ID_VENDOR_FROM_DATABASE=Fireflies Systems
|
||||
+
|
||||
+bluetooth:v0190*
|
||||
+ ID_VENDOR_FROM_DATABASE=Intelletto Technologies Inc.
|
||||
+
|
||||
+bluetooth:v0191*
|
||||
+ ID_VENDOR_FROM_DATABASE=FDK CORPORATION
|
||||
+
|
||||
+bluetooth:v0192*
|
||||
+ ID_VENDOR_FROM_DATABASE=Cloudleaf, Inc
|
||||
+
|
||||
+bluetooth:v0193*
|
||||
+ ID_VENDOR_FROM_DATABASE=Maveric Automation LLC
|
||||
+
|
||||
+bluetooth:v0194*
|
||||
+ ID_VENDOR_FROM_DATABASE=Acoustic Stream Corporation
|
||||
+
|
||||
+bluetooth:v0195*
|
||||
+ ID_VENDOR_FROM_DATABASE=Zuli
|
60
0021-libudev-modernization.patch
Normal file
60
0021-libudev-modernization.patch
Normal file
@ -0,0 +1,60 @@
|
||||
From 84ba1738e89859f02e6d333337afb3b80cb44cdb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 11:32:44 -0400
|
||||
Subject: [PATCH] libudev: modernization
|
||||
|
||||
This brings udev logging style a bit closer to normal systemd convention.
|
||||
|
||||
(cherry picked from commit fe756ed9ec2c0fa33c30b1d9a33d745dc1593aed)
|
||||
---
|
||||
src/libudev/libudev.c | 9 ++++-----
|
||||
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
||||
index e2ab960d55..7803863b2e 100644
|
||||
--- a/src/libudev/libudev.c
|
||||
+++ b/src/libudev/libudev.c
|
||||
@@ -119,7 +119,7 @@ _public_ struct udev *udev_new(void)
|
||||
{
|
||||
struct udev *udev;
|
||||
const char *env;
|
||||
- FILE *f;
|
||||
+ _cleanup_free_ FILE *f = NULL;
|
||||
|
||||
udev = new0(struct udev, 1);
|
||||
if (udev == NULL)
|
||||
@@ -132,7 +132,7 @@ _public_ struct udev *udev_new(void)
|
||||
f = fopen("/etc/udev/udev.conf", "re");
|
||||
if (f != NULL) {
|
||||
char line[UTIL_LINE_SIZE];
|
||||
- int line_nr = 0;
|
||||
+ unsigned line_nr = 0;
|
||||
|
||||
while (fgets(line, sizeof(line), f)) {
|
||||
size_t len;
|
||||
@@ -153,7 +153,7 @@ _public_ struct udev *udev_new(void)
|
||||
/* split key/value */
|
||||
val = strchr(key, '=');
|
||||
if (val == NULL) {
|
||||
- udev_err(udev, "missing <key>=<value> in /etc/udev/udev.conf[%i]; skip line\n", line_nr);
|
||||
+ udev_err(udev, "/etc/udev/udev.conf:%u: missing assignment, skipping line.\n", line_nr);
|
||||
continue;
|
||||
}
|
||||
val[0] = '\0';
|
||||
@@ -185,7 +185,7 @@ _public_ struct udev *udev_new(void)
|
||||
/* unquote */
|
||||
if (val[0] == '"' || val[0] == '\'') {
|
||||
if (val[len-1] != val[0]) {
|
||||
- udev_err(udev, "inconsistent quoting in /etc/udev/udev.conf[%i]; skip line\n", line_nr);
|
||||
+ udev_err(udev, "/etc/udev/udev.conf:%u: inconsistent quoting, skipping line.\n", line_nr);
|
||||
continue;
|
||||
}
|
||||
val[len-1] = '\0';
|
||||
@@ -197,7 +197,6 @@ _public_ struct udev *udev_new(void)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
- fclose(f);
|
||||
}
|
||||
|
||||
/* environment overrides config */
|
72
0022-libudev-do-not-accept-invalid-log-levels.patch
Normal file
72
0022-libudev-do-not-accept-invalid-log-levels.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From bedfb81393f6718d07dc7857bd94ddf0c9e17d67 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 12:06:41 -0400
|
||||
Subject: [PATCH] libudev: do not accept invalid log levels
|
||||
|
||||
Invalid log levels lead to a assert failure later on.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=85657
|
||||
(cherry picked from commit ee7122c0ec6aa11f02e9e8d94254b353f12d2c14)
|
||||
---
|
||||
src/libudev/libudev-util.c | 10 +++++++---
|
||||
src/libudev/libudev.c | 19 ++++++++++++++++---
|
||||
2 files changed, 23 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c
|
||||
index f3fdf3b5aa..0bc10f3470 100644
|
||||
--- a/src/libudev/libudev-util.c
|
||||
+++ b/src/libudev/libudev-util.c
|
||||
@@ -159,9 +159,13 @@ int util_log_priority(const char *priority)
|
||||
char *endptr;
|
||||
int prio;
|
||||
|
||||
- prio = strtol(priority, &endptr, 10);
|
||||
- if (endptr[0] == '\0' || isspace(endptr[0]))
|
||||
- return prio;
|
||||
+ prio = strtoul(priority, &endptr, 10);
|
||||
+ if (endptr[0] == '\0' || isspace(endptr[0])) {
|
||||
+ if (prio >= 0 && prio <= 7)
|
||||
+ return prio;
|
||||
+ else
|
||||
+ return -ERANGE;
|
||||
+ }
|
||||
|
||||
return log_level_from_string(priority);
|
||||
}
|
||||
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
||||
index 7803863b2e..8464427651 100644
|
||||
--- a/src/libudev/libudev.c
|
||||
+++ b/src/libudev/libudev.c
|
||||
@@ -193,7 +193,13 @@ _public_ struct udev *udev_new(void)
|
||||
}
|
||||
|
||||
if (streq(key, "udev_log")) {
|
||||
- udev_set_log_priority(udev, util_log_priority(val));
|
||||
+ int prio;
|
||||
+
|
||||
+ prio = util_log_priority(val);
|
||||
+ if (prio < 0)
|
||||
+ udev_err(udev, "/etc/udev/udev.conf:%u: invalid logging level '%s', ignoring.\n", line_nr, val);
|
||||
+ else
|
||||
+ udev_set_log_priority(udev, prio);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -201,8 +207,15 @@ _public_ struct udev *udev_new(void)
|
||||
|
||||
/* environment overrides config */
|
||||
env = secure_getenv("UDEV_LOG");
|
||||
- if (env != NULL)
|
||||
- udev_set_log_priority(udev, util_log_priority(env));
|
||||
+ if (env != NULL) {
|
||||
+ int prio;
|
||||
+
|
||||
+ prio = util_log_priority(env);
|
||||
+ if (prio < 0)
|
||||
+ udev_err(udev, "$UDEV_LOG specifies invalid logging level '%s', ignoring.\n", env);
|
||||
+ else
|
||||
+ udev_set_log_priority(udev, prio);
|
||||
+ }
|
||||
|
||||
return udev;
|
||||
}
|
33
0023-man-describe-all-log-levels-in-udevadm-8.patch
Normal file
33
0023-man-describe-all-log-levels-in-udevadm-8.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From c2c2394e0c29458ce9ed3c990c8978fafdc1a97b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 14:36:29 -0400
|
||||
Subject: [PATCH] man: describe all log levels in udevadm(8)
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=85657
|
||||
(cherry picked from commit e03234a16047dc635d13f7118fc9fcf243744b51)
|
||||
---
|
||||
man/udevadm.xml | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/man/udevadm.xml b/man/udevadm.xml
|
||||
index b85d9a9249..fd17f40be3 100644
|
||||
--- a/man/udevadm.xml
|
||||
+++ b/man/udevadm.xml
|
||||
@@ -368,9 +368,14 @@
|
||||
<term><option>-l</option></term>
|
||||
<term><option>--log-priority=<replaceable>value</replaceable></option></term>
|
||||
<listitem>
|
||||
- <para>Set the internal log level of systemd-udevd. Valid values are the numerical
|
||||
- syslog priorities or their textual representations: <option>err</option>,
|
||||
- <option>info</option> and <option>debug</option>.</para>
|
||||
+ <para>Set the internal log level of
|
||||
+ <filename>systemd-udevd</filename>. Valid values are the
|
||||
+ numerical syslog priorities or their textual
|
||||
+ representations: <option>emerg</option>,
|
||||
+ <option>alert</option>, <option>crit</option>,
|
||||
+ <option>err</option>, <option>warning</option>,
|
||||
+ <option>notice</option>, <option>info</option>, and
|
||||
+ <option>debug</option>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
@ -0,0 +1,50 @@
|
||||
From 87c237865b445906e3df7873b0fcd0a9f8483f13 Mon Sep 17 00:00:00 2001
|
||||
From: Dan Williams <dcbw@redhat.com>
|
||||
Date: Fri, 31 Oct 2014 12:20:21 -0500
|
||||
Subject: [PATCH] sd-dhcp6-client: fix off-by-two error in DUID length
|
||||
|
||||
The duid data passed by the caller does not include the DUID type,
|
||||
but sd_dhcp6_client_set_duid() was treating it like it did.
|
||||
|
||||
(cherry picked from commit 393b6f28ecec537f05567c4ec8af8c499d0ea226)
|
||||
---
|
||||
src/libsystemd-network/sd-dhcp6-client.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
|
||||
index fa4f9b5dc2..dbec1a2a8b 100644
|
||||
--- a/src/libsystemd-network/sd-dhcp6-client.c
|
||||
+++ b/src/libsystemd-network/sd-dhcp6-client.c
|
||||
@@ -200,19 +200,19 @@ int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, uint16_t type, uint8_t *du
|
||||
|
||||
switch (type) {
|
||||
case DHCP6_DUID_LLT:
|
||||
- if (duid_len <= sizeof(client->duid.llt))
|
||||
+ if (duid_len <= sizeof(client->duid.llt) - 2)
|
||||
return -EINVAL;
|
||||
break;
|
||||
case DHCP6_DUID_EN:
|
||||
- if (duid_len != sizeof(client->duid.en))
|
||||
+ if (duid_len != sizeof(client->duid.en) - 2)
|
||||
return -EINVAL;
|
||||
break;
|
||||
case DHCP6_DUID_LL:
|
||||
- if (duid_len <= sizeof(client->duid.ll))
|
||||
+ if (duid_len <= sizeof(client->duid.ll) - 2)
|
||||
return -EINVAL;
|
||||
break;
|
||||
case DHCP6_DUID_UUID:
|
||||
- if (duid_len != sizeof(client->duid.uuid))
|
||||
+ if (duid_len != sizeof(client->duid.uuid) - 2)
|
||||
return -EINVAL;
|
||||
break;
|
||||
default:
|
||||
@@ -222,7 +222,7 @@ int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, uint16_t type, uint8_t *du
|
||||
|
||||
client->duid.raw.type = htobe16(type);
|
||||
memcpy(&client->duid.raw.data, duid, duid_len);
|
||||
- client->duid_len = duid_len;
|
||||
+ client->duid_len = duid_len + 2; /* +2 for sizeof(type) */
|
||||
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
From 7400d7681c4cb18c2d7f993165f60558e509275a Mon Sep 17 00:00:00 2001
|
||||
From: Jan Synacek <jsynacek@redhat.com>
|
||||
Date: Fri, 31 Oct 2014 10:16:45 +0100
|
||||
Subject: [PATCH] core: improve error message when machine id is missing
|
||||
|
||||
(cherry picked from commit 86fb9ca7ae49790880d4b3ce523988b01b13d9ae)
|
||||
---
|
||||
src/core/machine-id-setup.c | 17 ++++++++++++-----
|
||||
1 file changed, 12 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
|
||||
index efb074fcbd..ce6d8e02d0 100644
|
||||
--- a/src/core/machine-id-setup.c
|
||||
+++ b/src/core/machine-id-setup.c
|
||||
@@ -162,7 +162,7 @@ static int generate(char id[34], const char *root) {
|
||||
int machine_id_setup(const char *root) {
|
||||
const char *etc_machine_id, *run_machine_id;
|
||||
_cleanup_close_ int fd = -1;
|
||||
- bool writable = false;
|
||||
+ bool writable = true;
|
||||
struct stat st;
|
||||
char id[34]; /* 32 + \n + \0 */
|
||||
int r;
|
||||
@@ -186,12 +186,19 @@ int machine_id_setup(const char *root) {
|
||||
|
||||
mkdir_parents(etc_machine_id, 0755);
|
||||
fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444);
|
||||
- if (fd >= 0)
|
||||
- writable = true;
|
||||
- else {
|
||||
+ if (fd < 0) {
|
||||
+ int old_errno = errno;
|
||||
+
|
||||
fd = open(etc_machine_id, O_RDONLY|O_CLOEXEC|O_NOCTTY);
|
||||
if (fd < 0) {
|
||||
- log_error("Cannot open %s: %m", etc_machine_id);
|
||||
+ if (old_errno == EROFS && errno == ENOENT)
|
||||
+ log_error("System cannot boot: Missing /etc/machine-id and /etc is mounted read-only.\n"
|
||||
+ "Booting up is supported only when:\n"
|
||||
+ "1) /etc/machine-id exists and is populated.\n"
|
||||
+ "2) /etc/machine-id exists and is empty.\n"
|
||||
+ "3) /etc/machine-id is missing and /etc is writable.\n");
|
||||
+ else
|
||||
+ log_error("Cannot open %s: %m", etc_machine_id);
|
||||
return -errno;
|
||||
}
|
||||
|
42
0026-man-explain-journalctl-flush-correctly.patch
Normal file
42
0026-man-explain-journalctl-flush-correctly.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From 0ad235ddb0640251e6be5a7250ee2b9236571521 Mon Sep 17 00:00:00 2001
|
||||
From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
|
||||
Date: Wed, 29 Oct 2014 11:20:02 +0100
|
||||
Subject: [PATCH] man: explain journalctl --flush correctly
|
||||
|
||||
(cherry picked from commit 2a97b03b3b087e724867e7501ae0c1535ee35031)
|
||||
---
|
||||
NEWS | 4 ++++
|
||||
man/journalctl.xml | 4 ++--
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 82a1948a38..d8770a0fcf 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -7,6 +7,10 @@ CHANGES WITH 217:
|
||||
show log timestamps in the UTC timezone. journalctl now also
|
||||
accepts -n/--lines=all to disable line capping in a pager.
|
||||
|
||||
+ * journalctl gained a new switch, --flush, that flushes
|
||||
+ logs from /run/log/journal to /var/log/journal if
|
||||
+ persistent storage is enabled.
|
||||
+
|
||||
* Services can notify the manager before they start a reload
|
||||
(by sending RELOADING=1) or shutdown (by sending
|
||||
STOPPING=1). This allows the manager to track and show the
|
||||
diff --git a/man/journalctl.xml b/man/journalctl.xml
|
||||
index db2a1e142b..0ed3ca3bc8 100644
|
||||
--- a/man/journalctl.xml
|
||||
+++ b/man/journalctl.xml
|
||||
@@ -883,9 +883,9 @@
|
||||
|
||||
<listitem><para>Asks the Journal
|
||||
daemon to flush any log data stored in
|
||||
- <filename>/run/systemd/log</filename>
|
||||
+ <filename>/run/log/journal</filename>
|
||||
into
|
||||
- <filename>/var/systemd/log</filename>,
|
||||
+ <filename>/var/log/journal</filename>,
|
||||
if persistent storage is enabled. This
|
||||
call does not return until the
|
||||
operation is
|
@ -0,0 +1,45 @@
|
||||
From 48a8d6bbdb6132ee4086e380437fac74457738d7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 13:52:14 -0400
|
||||
Subject: [PATCH] systemd-journal-flush.service: remove "trigger" from
|
||||
description
|
||||
|
||||
This service is now synchronous, so "trigger" is misleading.
|
||||
|
||||
(cherry picked from commit a65b82457735df2ef58736a55846f400124a8dc0)
|
||||
---
|
||||
NEWS | 7 ++++---
|
||||
units/systemd-journal-flush.service.in | 2 +-
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index d8770a0fcf..0ed03daa21 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -7,9 +7,10 @@ CHANGES WITH 217:
|
||||
show log timestamps in the UTC timezone. journalctl now also
|
||||
accepts -n/--lines=all to disable line capping in a pager.
|
||||
|
||||
- * journalctl gained a new switch, --flush, that flushes
|
||||
- logs from /run/log/journal to /var/log/journal if
|
||||
- persistent storage is enabled.
|
||||
+ * journalctl gained a new switch, --flush, that synchronously
|
||||
+ flushes logs from /run/log/journal to /var/log/journal if
|
||||
+ persistent storage is enabled. systemd-journal-flush.service
|
||||
+ now waits until the operation is complete.
|
||||
|
||||
* Services can notify the manager before they start a reload
|
||||
(by sending RELOADING=1) or shutdown (by sending
|
||||
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
|
||||
index 2612220e2e..fa290897d6 100644
|
||||
--- a/units/systemd-journal-flush.service.in
|
||||
+++ b/units/systemd-journal-flush.service.in
|
||||
@@ -6,7 +6,7 @@
|
||||
# (at your option) any later version.
|
||||
|
||||
[Unit]
|
||||
-Description=Trigger Flushing of Journal to Persistent Storage
|
||||
+Description=Flush Journal to Persistent Storage
|
||||
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
|
||||
DefaultDependencies=no
|
||||
Requires=systemd-journald.service
|
@ -0,0 +1,38 @@
|
||||
From c21b1d4f483825ccfae22f5ea384bb14eb86be49 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chapman <mike@very.puzzling.org>
|
||||
Date: Wed, 29 Oct 2014 11:54:07 +1100
|
||||
Subject: [PATCH] kernel-install/90-loaderentry.install: fix cmdline parsing
|
||||
|
||||
A recent commit (2f3a215) changed the parsing of /proc/cmdline to use a
|
||||
shell array. Unfortunately, this introduced a bug: "read -ar line"
|
||||
populates the shell variable $r, not $line. This breaks installation of
|
||||
new loader entries:
|
||||
|
||||
# kernel-install add 3.17.1-304.fc21.x86_64 \
|
||||
/boot/vmlinuz-3.17.1-304.fc21.x86_64
|
||||
Could not determine the kernel command line parameters.
|
||||
Please specify the kernel command line in /etc/kernel/cmdline!
|
||||
|
||||
This commit alters the read command to correctly populate the $line
|
||||
array instead.
|
||||
|
||||
(cherry picked from commit c008f6ee8df9aa36782378d1a3767543b3635a54)
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1158035
|
||||
---
|
||||
src/kernel-install/90-loaderentry.install | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
|
||||
index 6f032b5a4b..d433e00a5c 100644
|
||||
--- a/src/kernel-install/90-loaderentry.install
|
||||
+++ b/src/kernel-install/90-loaderentry.install
|
||||
@@ -47,7 +47,7 @@ if [[ -f /etc/kernel/cmdline ]]; then
|
||||
fi
|
||||
|
||||
if ! [[ ${BOOT_OPTIONS[*]} ]]; then
|
||||
- read -ar line < /proc/cmdline
|
||||
+ read -a line -r < /proc/cmdline
|
||||
for i in "${line[@]}"; do
|
||||
[[ "${i#initrd=*}" != "$i" ]] && continue
|
||||
BOOT_OPTIONS[${#BOOT_OPTIONS[@]}]="$i"
|
27
0029-scsi_id-fix-usage-spelling.patch
Normal file
27
0029-scsi_id-fix-usage-spelling.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From 98ec0eb525d2091a88f5226ec96c23a7407d276e Mon Sep 17 00:00:00 2001
|
||||
From: Joe Lawrence <joe.lawrence@stratus.com>
|
||||
Date: Sat, 1 Nov 2014 12:18:08 -0400
|
||||
Subject: [PATCH] scsi_id: fix usage spelling
|
||||
|
||||
s/threat/treat/g
|
||||
|
||||
(cherry picked from commit 85f13fce322e6303e7e4e55cb43104f81827f36b)
|
||||
---
|
||||
src/udev/scsi_id/scsi_id.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c
|
||||
index 4d9378a5c0..48c6cf7dba 100644
|
||||
--- a/src/udev/scsi_id/scsi_id.c
|
||||
+++ b/src/udev/scsi_id/scsi_id.c
|
||||
@@ -317,8 +317,8 @@ static void help(void) {
|
||||
" -f,--config= location of config file\n"
|
||||
" -p,--page=0x80|0x83|pre-spc3-83 SCSI page (0x80, 0x83, pre-spc3-83)\n"
|
||||
" -s,--sg-version=3|4 use SGv3 or SGv4\n"
|
||||
- " -b,--blacklisted threat device as blacklisted\n"
|
||||
- " -g,--whitelisted threat device as whitelisted\n"
|
||||
+ " -b,--blacklisted treat device as blacklisted\n"
|
||||
+ " -g,--whitelisted treat device as whitelisted\n"
|
||||
" -u,--replace-whitespace replace all whitespace by underscores\n"
|
||||
" -v,--verbose verbose logging\n"
|
||||
" --version print version\n"
|
28
0030-libudev-Use-correct-free-function.patch
Normal file
28
0030-libudev-Use-correct-free-function.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 7410911917e8b2ffef4ee0c9644632c382bd1aef Mon Sep 17 00:00:00 2001
|
||||
From: Colin Walters <walters@verbum.org>
|
||||
Date: Sat, 1 Nov 2014 15:49:53 -0400
|
||||
Subject: [PATCH] libudev: Use correct free function
|
||||
|
||||
FILE * wants cleanup_fclose().
|
||||
|
||||
Spotted by udev hwdb segfaulting in gnome-continuous' buildroot
|
||||
construction.
|
||||
|
||||
(cherry picked from commit ea55caa60c6860e33fa4f1a216c003ff666e9c68)
|
||||
---
|
||||
src/libudev/libudev.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
||||
index 8464427651..05f3b479fa 100644
|
||||
--- a/src/libudev/libudev.c
|
||||
+++ b/src/libudev/libudev.c
|
||||
@@ -119,7 +119,7 @@ _public_ struct udev *udev_new(void)
|
||||
{
|
||||
struct udev *udev;
|
||||
const char *env;
|
||||
- _cleanup_free_ FILE *f = NULL;
|
||||
+ _cleanup_fclose_ FILE *f = NULL;
|
||||
|
||||
udev = new0(struct udev, 1);
|
||||
if (udev == NULL)
|
40
0031-Raise-level-of-Found-dependency.-lines.patch
Normal file
40
0031-Raise-level-of-Found-dependency.-lines.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From bf50845d2c7ebba254ae91b280086701503cf7b9 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 12:10:42 -0500
|
||||
Subject: [PATCH] Raise level of 'Found dependency...' lines
|
||||
|
||||
This way they always show up together with 'Found ordering cycle...'.
|
||||
Ordering cycles are a serious error and a major pain to debug. If
|
||||
quiet is enabled, only the first and the last line of output are
|
||||
shown:
|
||||
|
||||
systemd[1]: Found ordering cycle on basic.target/start
|
||||
systemd[1]: Breaking ordering cycle by deleting job timers.target/start
|
||||
systemd[1]: Job timers.target/start deleted to break ordering cycle starting with basic.target/start
|
||||
|
||||
which isn't particularly enlightening. So just show the whole message
|
||||
at the same level.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1158206
|
||||
(cherry picked from commit 14fe721b5f6d8457cc8737fa75f2ed79e7fa534b)
|
||||
---
|
||||
src/core/transaction.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
||||
index dbb4133fe3..91f5ee18df 100644
|
||||
--- a/src/core/transaction.c
|
||||
+++ b/src/core/transaction.c
|
||||
@@ -377,9 +377,9 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
for (k = from; k; k = ((k->generation == generation && k->marker != k) ? k->marker : NULL)) {
|
||||
|
||||
/* logging for j not k here here to provide consistent narrative */
|
||||
- log_info_unit(j->unit->id,
|
||||
- "Found dependency on %s/%s",
|
||||
- k->unit->id, job_type_to_string(k->type));
|
||||
+ log_warning_unit(j->unit->id,
|
||||
+ "Found dependency on %s/%s",
|
||||
+ k->unit->id, job_type_to_string(k->type));
|
||||
|
||||
if (!delete && hashmap_get(tr->jobs, k->unit) &&
|
||||
!unit_matters_to_anchor(k->unit, k)) {
|
124
0032-manager-do-not-print-timing-when-running-in-test-mod.patch
Normal file
124
0032-manager-do-not-print-timing-when-running-in-test-mod.patch
Normal file
@ -0,0 +1,124 @@
|
||||
From 1034fff7872e864bc6a7e091724b85a44f34474f 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 12:19:38 -0500
|
||||
Subject: [PATCH] manager: do not print timing when running in test mode
|
||||
|
||||
(cherry picked from commit 56dacdbc1ca95cef8bf8c97c0d7af761a71eaab3)
|
||||
---
|
||||
src/core/manager.c | 84 ++++++++++++++++++++++++++++++------------------------
|
||||
1 file changed, 46 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/src/core/manager.c b/src/core/manager.c
|
||||
index d427d88d4e..ff29ae1d9d 100644
|
||||
--- a/src/core/manager.c
|
||||
+++ b/src/core/manager.c
|
||||
@@ -2584,45 +2584,13 @@ bool manager_unit_inactive_or_pending(Manager *m, const char *name) {
|
||||
return unit_inactive_or_pending(u);
|
||||
}
|
||||
|
||||
-void manager_check_finished(Manager *m) {
|
||||
+static void manager_notify_finished(Manager *m) {
|
||||
char userspace[FORMAT_TIMESPAN_MAX], initrd[FORMAT_TIMESPAN_MAX], kernel[FORMAT_TIMESPAN_MAX], sum[FORMAT_TIMESPAN_MAX];
|
||||
usec_t firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec;
|
||||
- Unit *u = NULL;
|
||||
- Iterator i;
|
||||
|
||||
- assert(m);
|
||||
-
|
||||
- if (m->n_running_jobs == 0)
|
||||
- m->jobs_in_progress_event_source = sd_event_source_unref(m->jobs_in_progress_event_source);
|
||||
-
|
||||
- if (hashmap_size(m->jobs) > 0) {
|
||||
-
|
||||
- if (m->jobs_in_progress_event_source)
|
||||
- sd_event_source_set_time(m->jobs_in_progress_event_source, now(CLOCK_MONOTONIC) + JOBS_IN_PROGRESS_WAIT_USEC);
|
||||
-
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- manager_flip_auto_status(m, false);
|
||||
-
|
||||
- /* Notify Type=idle units that we are done now */
|
||||
- m->idle_pipe_event_source = sd_event_source_unref(m->idle_pipe_event_source);
|
||||
- manager_close_idle_pipe(m);
|
||||
-
|
||||
- /* Turn off confirm spawn now */
|
||||
- m->confirm_spawn = false;
|
||||
-
|
||||
- /* No need to update ask password status when we're going non-interactive */
|
||||
- manager_close_ask_password(m);
|
||||
-
|
||||
- /* This is no longer the first boot */
|
||||
- manager_set_first_boot(m, false);
|
||||
-
|
||||
- if (dual_timestamp_is_set(&m->finish_timestamp))
|
||||
+ if (m->test_run)
|
||||
return;
|
||||
|
||||
- dual_timestamp_get(&m->finish_timestamp);
|
||||
-
|
||||
if (m->running_as == SYSTEMD_SYSTEM && detect_container(NULL) <= 0) {
|
||||
|
||||
/* Note that m->kernel_usec.monotonic is always at 0,
|
||||
@@ -2677,10 +2645,6 @@ void manager_check_finished(Manager *m) {
|
||||
NULL);
|
||||
}
|
||||
|
||||
- SET_FOREACH(u, m->startup_units, i)
|
||||
- if (u->cgroup_path)
|
||||
- cgroup_context_apply(unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path, manager_state(m));
|
||||
-
|
||||
bus_manager_send_finished(m, firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec);
|
||||
|
||||
sd_notifyf(false,
|
||||
@@ -2689,6 +2653,50 @@ void manager_check_finished(Manager *m) {
|
||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC));
|
||||
}
|
||||
|
||||
+void manager_check_finished(Manager *m) {
|
||||
+ Unit *u = NULL;
|
||||
+ Iterator i;
|
||||
+
|
||||
+ assert(m);
|
||||
+
|
||||
+ if (m->n_running_jobs == 0)
|
||||
+ m->jobs_in_progress_event_source = sd_event_source_unref(m->jobs_in_progress_event_source);
|
||||
+
|
||||
+ if (hashmap_size(m->jobs) > 0) {
|
||||
+
|
||||
+ if (m->jobs_in_progress_event_source)
|
||||
+ sd_event_source_set_time(m->jobs_in_progress_event_source, now(CLOCK_MONOTONIC) + JOBS_IN_PROGRESS_WAIT_USEC);
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ manager_flip_auto_status(m, false);
|
||||
+
|
||||
+ /* Notify Type=idle units that we are done now */
|
||||
+ m->idle_pipe_event_source = sd_event_source_unref(m->idle_pipe_event_source);
|
||||
+ manager_close_idle_pipe(m);
|
||||
+
|
||||
+ /* Turn off confirm spawn now */
|
||||
+ m->confirm_spawn = false;
|
||||
+
|
||||
+ /* No need to update ask password status when we're going non-interactive */
|
||||
+ manager_close_ask_password(m);
|
||||
+
|
||||
+ /* This is no longer the first boot */
|
||||
+ manager_set_first_boot(m, false);
|
||||
+
|
||||
+ if (dual_timestamp_is_set(&m->finish_timestamp))
|
||||
+ return;
|
||||
+
|
||||
+ dual_timestamp_get(&m->finish_timestamp);
|
||||
+
|
||||
+ manager_notify_finished(m);
|
||||
+
|
||||
+ SET_FOREACH(u, m->startup_units, i)
|
||||
+ if (u->cgroup_path)
|
||||
+ cgroup_context_apply(unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path, manager_state(m));
|
||||
+}
|
||||
+
|
||||
static int create_generator_dir(Manager *m, char **generator, const char *name) {
|
||||
char *p;
|
||||
int r;
|
@ -0,0 +1,58 @@
|
||||
From 0b0aec3a3418f2562805416f1f8ced5cd245c894 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 11:39:17 -0500
|
||||
Subject: [PATCH] unit: do not order timers.target before basic.target
|
||||
|
||||
Since commit 19f8d037833f2 'timer: order OnCalendar units after
|
||||
timer-sync.target if DefaultDependencies=no' timers might get a
|
||||
dependency on time-sync.target, which does not really belong in early
|
||||
boot. If ntp is enabled, time-sync.target might be delayed until a
|
||||
network connection is established.
|
||||
|
||||
It turns out that majority of timer units found in the wild do not
|
||||
need to be started in early boot. Out of the timer units available in
|
||||
Fedora 21, only systemd-readahead-done.timer and mdadm-last-resort@.timer
|
||||
should be started early, but they both have DefaultDependencies=no,
|
||||
so are not part of timers.target anyway. All the rest look like they
|
||||
will be fine with being started a bit later (and the majority even
|
||||
much later, since they run daily or weekly).
|
||||
|
||||
Let timers.target be pulled in by basic.target, but without the
|
||||
temporal dependency. This means timer units are started on a "best
|
||||
effort" schedule.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1158206
|
||||
(cherry picked from commit 3b0217036040a6013faeab4eb9da7469e3bbcfb3)
|
||||
---
|
||||
units/basic.target | 5 ++++-
|
||||
units/timers.target | 3 +++
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/units/basic.target b/units/basic.target
|
||||
index 228f62c4b1..eee3e6b774 100644
|
||||
--- a/units/basic.target
|
||||
+++ b/units/basic.target
|
||||
@@ -8,8 +8,11 @@
|
||||
[Unit]
|
||||
Description=Basic System
|
||||
Documentation=man:systemd.special(7)
|
||||
+
|
||||
Requires=sysinit.target
|
||||
+After=sysinit.target
|
||||
Wants=sockets.target timers.target paths.target slices.target
|
||||
-After=sysinit.target sockets.target timers.target paths.target slices.target
|
||||
+After=sockets.target paths.target slices.target
|
||||
+
|
||||
JobTimeoutSec=15min
|
||||
JobTimeoutAction=poweroff-force
|
||||
diff --git a/units/timers.target b/units/timers.target
|
||||
index 07fda3d9d0..251fa68065 100644
|
||||
--- a/units/timers.target
|
||||
+++ b/units/timers.target
|
||||
@@ -8,3 +8,6 @@
|
||||
[Unit]
|
||||
Description=Timers
|
||||
Documentation=man:systemd.special(7)
|
||||
+
|
||||
+DefaultDependencies=no
|
||||
+Conflicts=shutdown.target
|
28
0034-units-order-sd-journal-flush-after-sd-remount-fs.patch
Normal file
28
0034-units-order-sd-journal-flush-after-sd-remount-fs.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From ce5c8ab64093246bd0cdd2037789e947d80551ca 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.
|
||||
|
||||
(cherry picked from commit 1f1926aa5e836caa3bd6df43704aecd606135103)
|
||||
---
|
||||
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 fa290897d6..98c91b4bc5 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
|
||||
|
23
0035-man-sd_event_add_post-fix-typo.patch
Normal file
23
0035-man-sd_event_add_post-fix-typo.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From be463cec86a08f14b565f5c7324fc5b8696a0161 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Gundersen <teg@jklm.no>
|
||||
Date: Mon, 3 Nov 2014 15:58:30 +0100
|
||||
Subject: [PATCH] man: sd_event_add_post - fix typo
|
||||
|
||||
(cherry picked from commit f49481d0ca170ea567b46fde6c1c089b1dbb49cb)
|
||||
---
|
||||
man/sd_event_add_defer.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/man/sd_event_add_defer.xml b/man/sd_event_add_defer.xml
|
||||
index 442600a93e..dcc76cd48f 100644
|
||||
--- a/man/sd_event_add_defer.xml
|
||||
+++ b/man/sd_event_add_defer.xml
|
||||
@@ -104,7 +104,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
default, the handler will be called once
|
||||
(<constant>SD_EVENT_ONESHOT</constant>).</para>
|
||||
|
||||
- <para><function>sd_event_add_defer()</function> adds a new event
|
||||
+ <para><function>sd_event_add_post()</function> adds a new event
|
||||
source that will "fire" if any event handlers are invoked whenever
|
||||
the event loop is run. By default, the source is enabled
|
||||
permanently (<constant>SD_EVENT_ON</constant>).</para>
|
22
0036-journald-fix-minor-memory-leak.patch
Normal file
22
0036-journald-fix-minor-memory-leak.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From db1bd7139d53e7417ce1ed992c08ba52b83dfb0a Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Mon, 3 Nov 2014 21:11:16 +0100
|
||||
Subject: [PATCH] journald: fix minor memory leak
|
||||
|
||||
(cherry picked from commit 99d0966e75a984bed4f117c888ecc93e16e7b7b6)
|
||||
---
|
||||
src/journal/journald-server.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
|
||||
index 12735c4b81..08b143b630 100644
|
||||
--- a/src/journal/journald-server.c
|
||||
+++ b/src/journal/journald-server.c
|
||||
@@ -1655,6 +1655,7 @@ void server_done(Server *s) {
|
||||
free(s->buffer);
|
||||
free(s->tty_path);
|
||||
free(s->cgroup_root);
|
||||
+ free(s->hostname_field);
|
||||
|
||||
if (s->mmap)
|
||||
mmap_cache_unref(s->mmap);
|
27
0037-journald-fix-memory-leak-on-error-path.patch
Normal file
27
0037-journald-fix-memory-leak-on-error-path.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From a2e4c94df3d38cd2af73546ffd2623d9d1b20baa Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Mon, 3 Nov 2014 23:10:34 +0100
|
||||
Subject: [PATCH] journald: fix memory leak on error path
|
||||
|
||||
(cherry picked from commit 26d8ff04914a5208d029e899682cd314b7714bf0)
|
||||
---
|
||||
src/journal/journal-vacuum.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
|
||||
index 7699482a77..226af82da7 100644
|
||||
--- a/src/journal/journal-vacuum.c
|
||||
+++ b/src/journal/journal-vacuum.c
|
||||
@@ -275,7 +275,11 @@ int journal_directory_vacuum(
|
||||
|
||||
patch_realtime(directory, p, &st, &realtime);
|
||||
|
||||
- GREEDY_REALLOC(list, n_allocated, n_list + 1);
|
||||
+ if (!GREEDY_REALLOC(list, n_allocated, n_list + 1)) {
|
||||
+ free(p);
|
||||
+ r = -ENOMEM;
|
||||
+ goto finish;
|
||||
+ }
|
||||
|
||||
list[n_list].filename = p;
|
||||
list[n_list].usage = 512UL * (uint64_t) st.st_blocks;
|
@ -0,0 +1,26 @@
|
||||
From f4dab44d63124d6753a9c168442f70ab6a745e2c Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Tue, 4 Nov 2014 00:28:33 +0100
|
||||
Subject: [PATCH] journal: when dumping log data with missing COMM fields, show
|
||||
"unknown" instead
|
||||
|
||||
A small readability improvement...
|
||||
|
||||
(cherry picked from commit 1248e84008028ae54326c565fcc65dcbce3556ad)
|
||||
---
|
||||
src/shared/logs-show.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
|
||||
index 04e1165191..e33824be4a 100644
|
||||
--- a/src/shared/logs-show.c
|
||||
+++ b/src/shared/logs-show.c
|
||||
@@ -365,7 +365,7 @@ static int output_short(
|
||||
fprintf(f, " %.*s", (int) comm_len, comm);
|
||||
n += comm_len + 1;
|
||||
} else
|
||||
- fputc(' ', f);
|
||||
+ fputs(" unknown", f);
|
||||
|
||||
if (pid && shall_print(pid, pid_len, flags)) {
|
||||
fprintf(f, "[%.*s]", (int) pid_len, pid);
|
@ -0,0 +1,31 @@
|
||||
From 34f01b8f564d8b0b15bfaa50f4c89ac8cebcf291 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Synacek <jsynacek@redhat.com>
|
||||
Date: Mon, 3 Nov 2014 14:01:04 +0100
|
||||
Subject: [PATCH] localectl: fix localectl set-x11-keymap syntax description
|
||||
|
||||
This complements the fix in:
|
||||
|
||||
commit cd4c6fb12598435fe24431f1dd616f9582f0e3bd
|
||||
Author: Jan Synacek <jsynacek@redhat.com>
|
||||
Date: Mon Oct 20 12:43:39 2014 +0200
|
||||
|
||||
man: fix localectl set-x11-keymap syntax description
|
||||
|
||||
(cherry picked from commit 31cf921abbeafc9dae2d5c777f3e2285e6f4c19d)
|
||||
---
|
||||
src/locale/localectl.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/locale/localectl.c b/src/locale/localectl.c
|
||||
index 3690f9fc89..d4a2d29aea 100644
|
||||
--- a/src/locale/localectl.c
|
||||
+++ b/src/locale/localectl.c
|
||||
@@ -505,7 +505,7 @@ static void help(void) {
|
||||
" list-locales Show known locales\n"
|
||||
" set-keymap MAP [MAP] Set virtual console keyboard mapping\n"
|
||||
" list-keymaps Show known virtual console keyboard mappings\n"
|
||||
- " set-x11-keymap LAYOUT [MODEL] [VARIANT] [OPTIONS]\n"
|
||||
+ " set-x11-keymap LAYOUT [MODEL [VARIANT [OPTIONS]]]\n"
|
||||
" Set X11 keyboard mapping\n"
|
||||
" list-x11-keymap-models Show known X11 keyboard mapping models\n"
|
||||
" list-x11-keymap-layouts Show known X11 keyboard mapping layouts\n"
|
25
0040-man-tmpfiles.d-fix-typo.patch
Normal file
25
0040-man-tmpfiles.d-fix-typo.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 328d74f857bcba139289654a88e66693cc24013f Mon Sep 17 00:00:00 2001
|
||||
From: Jan Synacek <jsynacek@redhat.com>
|
||||
Date: Tue, 4 Nov 2014 13:38:59 +0100
|
||||
Subject: [PATCH] man/tmpfiles.d: fix typo
|
||||
|
||||
(cherry picked from commit ff8d1aba5378949c352147cf348aaeafd7221716)
|
||||
---
|
||||
man/tmpfiles.d.xml | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
|
||||
index f2360ba9a4..1b14d69a91 100644
|
||||
--- a/man/tmpfiles.d.xml
|
||||
+++ b/man/tmpfiles.d.xml
|
||||
@@ -108,8 +108,8 @@
|
||||
filename in lexicographic order, regardless of which
|
||||
of the directories they reside in. If multiple files
|
||||
specify the same path, the entry in the file with the
|
||||
- lexicographically earliest name will be applied, all
|
||||
- all other conflicting entries will be logged as
|
||||
+ lexicographically earliest name will be applied.
|
||||
+ All other conflicting entries will be logged as
|
||||
errors. When two lines are prefix and suffix of each
|
||||
other, then the prefix is always processed first, the
|
||||
suffix later. Otherwise, the files/directories are
|
@ -1,4 +1,4 @@
|
||||
From ec2b7ebedde908aed11e6504b58a7712d052344b Mon Sep 17 00:00:00 2001
|
||||
From 5793666dcea38a768af843c6dcd60029a8c43026 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
|
||||
@ -11,14 +11,16 @@ 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
|
||||
(cherry picked from commit a87a38c20196a4aeb56b6ba71d688eefd0b21c30)
|
||||
|
||||
(from upstream commit 87a38c20196a4aeb56b6ba71d688eefd0b21c30)
|
||||
Conflicts:
|
||||
units/systemd-journald.service.in
|
||||
---
|
||||
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 4de38fa..441d5b1 100644
|
||||
index 4de38fad59..441d5b1f96 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 syslog.socket
|
||||
@ -29,6 +31,3 @@ index 4de38fa..441d5b1 100644
|
||||
Sockets=systemd-journald.socket systemd-journald-dev-log.socket
|
||||
ExecStart=@rootlibexecdir@/systemd-journald
|
||||
Restart=always
|
||||
--
|
||||
2.1.0
|
||||
|
22
0042-buildsys-test-util-needs-lm-for-fabs.patch
Normal file
22
0042-buildsys-test-util-needs-lm-for-fabs.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 28ad915f797e29462533011ec886640db58884c8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
|
||||
Date: Tue, 4 Nov 2014 20:48:08 -0300
|
||||
Subject: [PATCH] buildsys: test-util needs -lm for fabs()
|
||||
|
||||
(cherry picked from commit 01acf6c3b7390e8c47b7a5cd7cae4bcbd2846634)
|
||||
---
|
||||
Makefile.am | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index c80d25df29..a94578a9a7 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -1527,6 +1527,7 @@ test_util_SOURCES = \
|
||||
src/test/test-util.c
|
||||
|
||||
test_util_LDADD = \
|
||||
+ -lm \
|
||||
libsystemd-core.la
|
||||
|
||||
test_uid_range_SOURCES = \
|
@ -0,0 +1,26 @@
|
||||
From 86e00bfef3a221d032d2dfdf4592cea152548b16 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 4 Nov 2014 23:45:15 +0000
|
||||
Subject: [PATCH] udev: Fix parsing of udev.event-timeout kernel parameter.
|
||||
|
||||
(cherry picked from commit f671774f52838d35d78e62ddcb781b5b65b3373f)
|
||||
---
|
||||
src/udev/udevd.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||
index 2e6c71352f..193702cd28 100644
|
||||
--- a/src/udev/udevd.c
|
||||
+++ b/src/udev/udevd.c
|
||||
@@ -994,9 +994,9 @@ static void kernel_cmdline_options(struct udev *udev) {
|
||||
if (r < 0)
|
||||
log_warning("Invalid udev.exec-delay ignored: %s", opt + 16);
|
||||
} else if (startswith(opt, "udev.event-timeout=")) {
|
||||
- r = safe_atou64(opt + 16, &arg_event_timeout_usec);
|
||||
+ r = safe_atou64(opt + 19, &arg_event_timeout_usec);
|
||||
if (r < 0) {
|
||||
- log_warning("Invalid udev.event-timeout ignored: %s", opt + 16);
|
||||
+ log_warning("Invalid udev.event-timeout ignored: %s", opt + 19);
|
||||
break;
|
||||
}
|
||||
arg_event_timeout_usec *= USEC_PER_SEC;
|
@ -0,0 +1,62 @@
|
||||
From d135b3c6e1bcded6080f83d787254eb0ece25027 Mon Sep 17 00:00:00 2001
|
||||
From: David Herrmann <dh.herrmann@gmail.com>
|
||||
Date: Wed, 5 Nov 2014 12:56:49 +0100
|
||||
Subject: [PATCH] udev: avoid magic constants in kernel-cmdline parsers
|
||||
|
||||
Lets recognize the fact that startswith() returns a pointer to the tail on
|
||||
success. Use it instead of hard-coding string-lengths as magic constants.
|
||||
|
||||
(cherry picked from commit cfe2061add5479710f6597899d632e64c54e62ef)
|
||||
---
|
||||
src/udev/udevd.c | 24 ++++++++++++------------
|
||||
1 file changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||
index 193702cd28..65d086e9ee 100644
|
||||
--- a/src/udev/udevd.c
|
||||
+++ b/src/udev/udevd.c
|
||||
@@ -967,7 +967,7 @@ static void kernel_cmdline_options(struct udev *udev) {
|
||||
return;
|
||||
|
||||
FOREACH_WORD_QUOTED(word, l, line, state) {
|
||||
- char *s, *opt;
|
||||
+ char *s, *opt, *value;
|
||||
|
||||
s = strndup(word, l);
|
||||
if (!s)
|
||||
@@ -979,24 +979,24 @@ static void kernel_cmdline_options(struct udev *udev) {
|
||||
else
|
||||
opt = s;
|
||||
|
||||
- if (startswith(opt, "udev.log-priority=")) {
|
||||
+ if ((value = startswith(opt, "udev.log-priority="))) {
|
||||
int prio;
|
||||
|
||||
- prio = util_log_priority(opt + 18);
|
||||
+ prio = util_log_priority(value);
|
||||
log_set_max_level(prio);
|
||||
udev_set_log_priority(udev, prio);
|
||||
- } else if (startswith(opt, "udev.children-max=")) {
|
||||
- r = safe_atoi(opt + 18, &arg_children_max);
|
||||
+ } else if ((value = startswith(opt, "udev.children-max="))) {
|
||||
+ r = safe_atoi(value, &arg_children_max);
|
||||
if (r < 0)
|
||||
- log_warning("Invalid udev.children-max ignored: %s", opt + 18);
|
||||
- } else if (startswith(opt, "udev.exec-delay=")) {
|
||||
- r = safe_atoi(opt + 16, &arg_exec_delay);
|
||||
+ log_warning("Invalid udev.children-max ignored: %s", value);
|
||||
+ } else if ((value = startswith(opt, "udev.exec-delay="))) {
|
||||
+ r = safe_atoi(value, &arg_exec_delay);
|
||||
if (r < 0)
|
||||
- log_warning("Invalid udev.exec-delay ignored: %s", opt + 16);
|
||||
- } else if (startswith(opt, "udev.event-timeout=")) {
|
||||
- r = safe_atou64(opt + 19, &arg_event_timeout_usec);
|
||||
+ log_warning("Invalid udev.exec-delay ignored: %s", value);
|
||||
+ } else if ((value = startswith(opt, "udev.event-timeout="))) {
|
||||
+ r = safe_atou64(value, &arg_event_timeout_usec);
|
||||
if (r < 0) {
|
||||
- log_warning("Invalid udev.event-timeout ignored: %s", opt + 19);
|
||||
+ log_warning("Invalid udev.event-timeout ignored: %s", value);
|
||||
break;
|
||||
}
|
||||
arg_event_timeout_usec *= USEC_PER_SEC;
|
@ -0,0 +1,48 @@
|
||||
From de1a1440dd81857ae679672ae1d757bfbdd2e112 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Guthrie <colin@mageia.org>
|
||||
Date: Sun, 2 Nov 2014 13:33:16 +0000
|
||||
Subject: [PATCH] manager: Ensure user's systemd runtime directory exists.
|
||||
|
||||
This mirrors code in dbus.c when creating the private socket and
|
||||
avoids error messages like:
|
||||
|
||||
systemd[1353]: bind(/run/user/603/systemd/notify) failed: No such file or directory
|
||||
systemd[1353]: Failed to fully start up daemon: No such file or directory
|
||||
|
||||
(cherry picked from commit 0c3f25e0c1f028d4da9cc5253abf0322230e6835)
|
||||
---
|
||||
src/core/manager.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/core/manager.c b/src/core/manager.c
|
||||
index ff29ae1d9d..47e23ba80e 100644
|
||||
--- a/src/core/manager.c
|
||||
+++ b/src/core/manager.c
|
||||
@@ -662,9 +662,11 @@ static int manager_setup_notify(Manager *m) {
|
||||
return -errno;
|
||||
}
|
||||
|
||||
- if (m->running_as == SYSTEMD_SYSTEM)
|
||||
+ if (m->running_as == SYSTEMD_SYSTEM) {
|
||||
m->notify_socket = strdup("/run/systemd/notify");
|
||||
- else {
|
||||
+ if (!m->notify_socket)
|
||||
+ return log_oom();
|
||||
+ } else {
|
||||
const char *e;
|
||||
|
||||
e = getenv("XDG_RUNTIME_DIR");
|
||||
@@ -674,9 +676,11 @@ static int manager_setup_notify(Manager *m) {
|
||||
}
|
||||
|
||||
m->notify_socket = strappend(e, "/systemd/notify");
|
||||
+ if (!m->notify_socket)
|
||||
+ return log_oom();
|
||||
+
|
||||
+ mkdir_parents_label(m->notify_socket, 0755);
|
||||
}
|
||||
- if (!m->notify_socket)
|
||||
- return log_oom();
|
||||
|
||||
strncpy(sa.un.sun_path, m->notify_socket, sizeof(sa.un.sun_path)-1);
|
||||
r = bind(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path));
|
62
0046-units-disable-job-timeouts.patch
Normal file
62
0046-units-disable-job-timeouts.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From af49e1e5c7ff8e30035c1880ee42225f2d15bfd9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 5 Nov 2014 09:16:58 -0500
|
||||
Subject: [PATCH] units: disable job timeouts
|
||||
|
||||
For boot, we might kill fsck in the middle, with likely catastrophic
|
||||
consequences.
|
||||
|
||||
On shutdown there might be other jobs, like downloading of updates for
|
||||
installation, and other custom jobs. It seems better to schedule an
|
||||
individual timeout on each one separately, when it is known what
|
||||
timeout is useful.
|
||||
|
||||
Disable the timeouts for now, until we have a clearer picture of how
|
||||
we can deal with long-running jobs.
|
||||
|
||||
(cherry picked from commit 038193efa6c00e852110f17383ef2786136f4f81)
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1152220
|
||||
---
|
||||
units/basic.target | 3 ---
|
||||
units/poweroff.target | 2 --
|
||||
units/reboot.target | 2 --
|
||||
3 files changed, 7 deletions(-)
|
||||
|
||||
diff --git a/units/basic.target b/units/basic.target
|
||||
index eee3e6b774..abb63ec560 100644
|
||||
--- a/units/basic.target
|
||||
+++ b/units/basic.target
|
||||
@@ -13,6 +13,3 @@ Requires=sysinit.target
|
||||
After=sysinit.target
|
||||
Wants=sockets.target timers.target paths.target slices.target
|
||||
After=sockets.target paths.target slices.target
|
||||
-
|
||||
-JobTimeoutSec=15min
|
||||
-JobTimeoutAction=poweroff-force
|
||||
diff --git a/units/poweroff.target b/units/poweroff.target
|
||||
index dd92d816ca..71871033a5 100644
|
||||
--- a/units/poweroff.target
|
||||
+++ b/units/poweroff.target
|
||||
@@ -12,8 +12,6 @@ DefaultDependencies=no
|
||||
Requires=systemd-poweroff.service
|
||||
After=systemd-poweroff.service
|
||||
AllowIsolate=yes
|
||||
-JobTimeoutSec=30min
|
||||
-JobTimeoutAction=poweroff-force
|
||||
|
||||
[Install]
|
||||
Alias=ctrl-alt-del.target
|
||||
diff --git a/units/reboot.target b/units/reboot.target
|
||||
index 668b98d9e4..dec8f56796 100644
|
||||
--- a/units/reboot.target
|
||||
+++ b/units/reboot.target
|
||||
@@ -12,8 +12,6 @@ DefaultDependencies=no
|
||||
Requires=systemd-reboot.service
|
||||
After=systemd-reboot.service
|
||||
AllowIsolate=yes
|
||||
-JobTimeoutSec=30min
|
||||
-JobTimeoutAction=reboot-force
|
||||
|
||||
[Install]
|
||||
Alias=ctrl-alt-del.target
|
@ -0,0 +1,59 @@
|
||||
From 4d4eff2436b63f19811fa39ef26fa1e2ca31a54a Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@redhat.com>
|
||||
Date: Wed, 5 Nov 2014 08:30:52 -0500
|
||||
Subject: [PATCH] login: rerun vconsole-setup when switching from vgacon to
|
||||
fbcon
|
||||
|
||||
The initialization performed by systemd-vconsole-setup is reset
|
||||
when changing console drivers (say from vgacon to fbcon), so we
|
||||
need to run it in that case.
|
||||
|
||||
See
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-October/023919.html
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-October/024423.html
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-November/024881.html
|
||||
|
||||
This commit adds a udev rule to make systemd-vconsole-setup get run when
|
||||
the fbcon device becomes available.
|
||||
|
||||
(david: moved into new file 90-vconsole.rules instead of 71-seats.rules;
|
||||
build-failures are on me, not on Ray)
|
||||
|
||||
(cherry picked from commit f6ba8671d83f9fce9a00045d8fa399a1c07ba7fc)
|
||||
---
|
||||
Makefile.am | 3 +++
|
||||
src/vconsole/90-vconsole.rules | 11 +++++++++++
|
||||
2 files changed, 14 insertions(+)
|
||||
create mode 100644 src/vconsole/90-vconsole.rules
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index a94578a9a7..22fd306c81 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -4403,6 +4403,9 @@ rootlibexec_PROGRAMS += \
|
||||
nodist_systemunit_DATA += \
|
||||
units/systemd-vconsole-setup.service
|
||||
|
||||
+dist_udevrules_DATA += \
|
||||
+ src/vconsole/90-vconsole.rules
|
||||
+
|
||||
SYSINIT_TARGET_WANTS += \
|
||||
systemd-vconsole-setup.service
|
||||
endif
|
||||
diff --git a/src/vconsole/90-vconsole.rules b/src/vconsole/90-vconsole.rules
|
||||
new file mode 100644
|
||||
index 0000000000..bf6a9efaa5
|
||||
--- /dev/null
|
||||
+++ b/src/vconsole/90-vconsole.rules
|
||||
@@ -0,0 +1,11 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
+# systemd is free software; you can redistribute it and/or modify it
|
||||
+# under the terms of the GNU Lesser General Public License as published by
|
||||
+# the Free Software Foundation; either version 2.1 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+# Kernel resets vconsole state when changing console drivers so run
|
||||
+# systemd-vconsole-setup when fbcon loads
|
||||
+
|
||||
+ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fbcon", RUN+="/usr/lib/systemd/systemd-vconsole-setup"
|
72
0048-hostnamed-introduce-new-embedded-chassis-type.patch
Normal file
72
0048-hostnamed-introduce-new-embedded-chassis-type.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From 2203c07490c8b64286cf2d04dbb110f4173912a1 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 6 Nov 2014 14:37:12 +0100
|
||||
Subject: [PATCH] hostnamed: introduce new "embedded" chassis type
|
||||
|
||||
We really don't want to get lost in adding fridge, car, plane, drone, or
|
||||
whatever else, hence add a generic term "embedded" cover all the cases
|
||||
where the computer is just part of something bigger, and not at the
|
||||
focus of things.
|
||||
|
||||
(cherry picked from commit 25fa306ed58b0b7fe30ca9be37c66a7b3b2de70e)
|
||||
---
|
||||
man/hostnamectl.xml | 3 ++-
|
||||
shell-completion/bash/hostnamectl | 2 +-
|
||||
shell-completion/zsh/_hostnamectl | 2 +-
|
||||
src/hostname/hostnamed.c | 3 ++-
|
||||
4 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml
|
||||
index 128d92f576..ffae5e6b06 100644
|
||||
--- a/man/hostnamectl.xml
|
||||
+++ b/man/hostnamectl.xml
|
||||
@@ -217,7 +217,8 @@
|
||||
<literal>server</literal>,
|
||||
<literal>tablet</literal>,
|
||||
<literal>handset</literal>,
|
||||
- <literal>watch</literal>, as well as
|
||||
+ <literal>watch</literal>,
|
||||
+ <literal>embedded</literal> as well as
|
||||
the special chassis types
|
||||
<literal>vm</literal> and
|
||||
<literal>container</literal> for
|
||||
diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl
|
||||
index a5e34600c8..7a0850dbe4 100644
|
||||
--- a/shell-completion/bash/hostnamectl
|
||||
+++ b/shell-completion/bash/hostnamectl
|
||||
@@ -52,7 +52,7 @@ _hostnamectl() {
|
||||
if [[ -z $verb ]]; then
|
||||
comps=${VERBS[*]}
|
||||
elif __contains_word "$verb" ${VERBS[CHASSIS]}; then
|
||||
- comps='desktop laptop server tablet handset watch vm container'
|
||||
+ comps='desktop laptop server tablet handset watch embedded vm container'
|
||||
elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then
|
||||
comps=''
|
||||
fi
|
||||
diff --git a/shell-completion/zsh/_hostnamectl b/shell-completion/zsh/_hostnamectl
|
||||
index e02f6de30e..a7217a1999 100644
|
||||
--- a/shell-completion/zsh/_hostnamectl
|
||||
+++ b/shell-completion/zsh/_hostnamectl
|
||||
@@ -18,7 +18,7 @@ _hostnamectl_set-icon-name() {
|
||||
|
||||
_hostnamectl_set-chassis() {
|
||||
if (( CURRENT <= 3 )); then
|
||||
- _chassis=( desktop laptop server tablet handset watch vm container )
|
||||
+ _chassis=( desktop laptop server tablet handset watch embedded vm container )
|
||||
_describe chassis _chassis
|
||||
else
|
||||
_message "no more options"
|
||||
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
|
||||
index a449610bb8..0123922c4a 100644
|
||||
--- a/src/hostname/hostnamed.c
|
||||
+++ b/src/hostname/hostnamed.c
|
||||
@@ -138,7 +138,8 @@ static bool valid_chassis(const char *chassis) {
|
||||
"server\0"
|
||||
"tablet\0"
|
||||
"handset\0"
|
||||
- "watch\0",
|
||||
+ "watch\0"
|
||||
+ "embedded\0",
|
||||
chassis);
|
||||
}
|
||||
|
33
0049-systemctl-when-invokes-as-reboot-f-sync.patch
Normal file
33
0049-systemctl-when-invokes-as-reboot-f-sync.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From fe357da5e638f97081099a28b477d59cc6991189 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 6 Nov 2014 15:20:29 +0100
|
||||
Subject: [PATCH] systemctl: when invokes as "reboot -f", sync()
|
||||
|
||||
We do this in the clean shutdown path in shutdown.c, hence we should do
|
||||
is for "reboot -f", too.
|
||||
|
||||
(cherry picked from commit 4a3ad39957399c4a30fc472a804e72907ecaa4f9)
|
||||
---
|
||||
src/systemctl/systemctl.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index 8481a9b20c..207a5e78dc 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -6948,8 +6948,13 @@ done:
|
||||
|
||||
static int halt_now(enum action a) {
|
||||
|
||||
-/* Make sure C-A-D is handled by the kernel from this
|
||||
- * point on... */
|
||||
+ /* The kernel will automaticall flush ATA disks and suchlike
|
||||
+ * on reboot(), but the file systems need to be synce'd
|
||||
+ * explicitly in advance. */
|
||||
+ sync();
|
||||
+
|
||||
+ /* Make sure C-A-D is handled by the kernel from this point
|
||||
+ * on... */
|
||||
reboot(RB_ENABLE_CAD);
|
||||
|
||||
switch (a) {
|
@ -0,0 +1,41 @@
|
||||
From 70a3ef63810ef3c7970871c1b1e1e060110ecfa6 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 3 Sep 2014 13:31:25 +0200
|
||||
Subject: [PATCH] switch_root: do not fail, if base_filesystem_create() failed
|
||||
|
||||
Not all switch roots are like base_filesystem_create() wants them
|
||||
to look like. They might even boot, if they are RO and don't have the FS
|
||||
layout. Just ignore the error and switch_root nevertheless.
|
||||
|
||||
base_filesystem_create() should have logged, what went wrong.
|
||||
|
||||
(cherry picked from commit 6d0f91bf551464c57bc12f99deccd515fb3f628d)
|
||||
---
|
||||
src/shared/switch-root.c | 7 +------
|
||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
|
||||
index bac0e5c349..1a558b897b 100644
|
||||
--- a/src/shared/switch-root.c
|
||||
+++ b/src/shared/switch-root.c
|
||||
@@ -47,7 +47,6 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
|
||||
struct stat new_root_stat;
|
||||
bool old_root_remove;
|
||||
const char *i, *temporary_old_root;
|
||||
- int r;
|
||||
|
||||
if (path_equal(new_root, "/"))
|
||||
return 0;
|
||||
@@ -103,11 +102,7 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
|
||||
}
|
||||
}
|
||||
|
||||
- r = base_filesystem_create(new_root);
|
||||
- if (r < 0) {
|
||||
- log_error("Failed to create the base filesystem: %s", strerror(-r));
|
||||
- return r;
|
||||
- }
|
||||
+ (void) base_filesystem_create(new_root);
|
||||
|
||||
if (chdir(new_root) < 0) {
|
||||
log_error("Failed to change directory to %s: %m", new_root);
|
@ -0,0 +1,42 @@
|
||||
From f37f36832bafdb4c8566298c554e335f55d23152 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Schmidt <mschmidt@redhat.com>
|
||||
Date: Thu, 6 Nov 2014 16:48:11 +0100
|
||||
Subject: [PATCH] shared: create files even if the SELinux policy has no
|
||||
context for them
|
||||
|
||||
The SELinux policy defines no context for some files. E.g.:
|
||||
$ matchpathcon /run/lock/subsys /dev/mqueue
|
||||
/run/lock/subsys <<none>>
|
||||
/dev/mqueue <<none>>
|
||||
|
||||
We still need to be able to create them.
|
||||
In this case selabel_lookup_raw() returns ENOENT. We should then skip
|
||||
setfscreatecon(), but still return success.
|
||||
It was broken since c34255bdb2 ("label: unify code to make directories,
|
||||
symlinks").
|
||||
|
||||
(cherry picked from commit 2d58aa4692e9fc47911bff5d064ba3e328c35369)
|
||||
---
|
||||
src/shared/selinux-util.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/shared/selinux-util.c b/src/shared/selinux-util.c
|
||||
index 1eddd17d27..6bd3bf1c80 100644
|
||||
--- a/src/shared/selinux-util.c
|
||||
+++ b/src/shared/selinux-util.c
|
||||
@@ -332,9 +332,13 @@ int mac_selinux_create_file_prepare(const char *path, mode_t mode) {
|
||||
r = selabel_lookup_raw(label_hnd, &filecon, newpath, mode);
|
||||
}
|
||||
|
||||
- if (r < 0 && errno != ENOENT)
|
||||
+ /* No context specified by the policy? Proceed without setting it. */
|
||||
+ if (r < 0 && errno == ENOENT)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (r < 0)
|
||||
r = -errno;
|
||||
- else if (r == 0) {
|
||||
+ else {
|
||||
r = setfscreatecon(filecon);
|
||||
if (r < 0) {
|
||||
log_enforcing("Failed to set SELinux security context %s for %s: %m", filecon, path);
|
@ -0,0 +1,27 @@
|
||||
From 8051be0e4a82590a76e2d76662a57ca624ddc89c Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 6 Nov 2014 20:00:01 +0100
|
||||
Subject: [PATCH] switch-root: explain why we don't care about
|
||||
base_filesystem_create() failing
|
||||
|
||||
(cherry picked from commit 64e18fd626838c3500e28b4dbf86ed62206fff47)
|
||||
---
|
||||
src/shared/switch-root.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
|
||||
index 1a558b897b..3adb8463c5 100644
|
||||
--- a/src/shared/switch-root.c
|
||||
+++ b/src/shared/switch-root.c
|
||||
@@ -102,6 +102,11 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Do not fail, if base_filesystem_create() fails. Not all
|
||||
+ * switch roots are like base_filesystem_create() wants them
|
||||
+ * to look like. They might even boot, if they are RO and
|
||||
+ * don't have the FS layout. Just ignore the error and
|
||||
+ * switch_root() nevertheless. */
|
||||
(void) base_filesystem_create(new_root);
|
||||
|
||||
if (chdir(new_root) < 0) {
|
67
0053-shutdown-fix-arguments-to-run-initramfs-shutdown.patch
Normal file
67
0053-shutdown-fix-arguments-to-run-initramfs-shutdown.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From e47a9f972749544d28cffede77de13e9d8af4d2b 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.
|
||||
|
||||
(cherry picked from commit 4b5d8d0f22ae61ceb45a25391354ba53b43ee992)
|
||||
---
|
||||
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 20cf526ba2..03cfddc543 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;
|
||||
}
|
||||
|
41
0054-timer-reenable-TIMER_ACTIVE-timers-when-restarted.patch
Normal file
41
0054-timer-reenable-TIMER_ACTIVE-timers-when-restarted.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From bfb4c47dddd3c7aeaa07eb733bb50b62eff2e082 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chapman <mike@very.puzzling.org>
|
||||
Date: Thu, 6 Nov 2014 19:47:02 +1100
|
||||
Subject: [PATCH] timer: reenable TIMER_ACTIVE timers when restarted
|
||||
|
||||
A timer configured with OnActiveSec will start its associated unit again
|
||||
if the timer is stopped, then started. However, if the timer unit is
|
||||
restarted -- with "systemctl restart", say -- this does not occur.
|
||||
|
||||
This commit ensures that TIMER_ACTIVE timers are re-enabled whenever the
|
||||
timer is started, even if that's within a restart job.
|
||||
|
||||
(cherry picked from commit 779042e772d2459f7649b34a164902dc456f1bab)
|
||||
---
|
||||
src/core/timer.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/core/timer.c b/src/core/timer.c
|
||||
index a3713e2140..5c4e9f995a 100644
|
||||
--- a/src/core/timer.c
|
||||
+++ b/src/core/timer.c
|
||||
@@ -521,6 +521,7 @@ fail:
|
||||
|
||||
static int timer_start(Unit *u) {
|
||||
Timer *t = TIMER(u);
|
||||
+ TimerValue *v;
|
||||
|
||||
assert(t);
|
||||
assert(t->state == TIMER_DEAD || t->state == TIMER_FAILED);
|
||||
@@ -530,6 +531,11 @@ static int timer_start(Unit *u) {
|
||||
|
||||
t->last_trigger = DUAL_TIMESTAMP_NULL;
|
||||
|
||||
+ /* Reenable all timers that depend on unit activation time */
|
||||
+ LIST_FOREACH(value, v, t->values)
|
||||
+ if (v->base == TIMER_ACTIVE)
|
||||
+ v->disabled = false;
|
||||
+
|
||||
if (t->stamp_path) {
|
||||
struct stat st;
|
||||
|
76
systemd.spec
76
systemd.spec
@ -16,7 +16,7 @@
|
||||
Name: systemd
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 217
|
||||
Release: 3%{?gitcommit:.git%{gitcommit}}%{?dist}
|
||||
Release: 4%{?gitcommit:.git%{gitcommit}}%{?dist}
|
||||
# For a breakdown of the licensing, see README
|
||||
License: LGPLv2+ and MIT and GPLv2+
|
||||
Summary: A System and Service Manager
|
||||
@ -36,12 +36,63 @@ Source4: yum-protect-systemd.conf
|
||||
Source5: inittab
|
||||
Source6: sysctl.conf.README
|
||||
|
||||
# Patch series is available from http://cgit.freedesktop.org/systemd/systemd-stable/log/?h=v215-stable
|
||||
# GIT_DIR=~/src/systemd/.git git format-patch-ab -M -N --no-signature v216..master
|
||||
# Patch series is available from http://cgit.freedesktop.org/systemd/systemd-stable/log/?h=v217-stable
|
||||
# GIT_DIR=~/src/systemd/.git git format-patch-ab -M -N --no-signature v217..v217-stable
|
||||
# i=1; for p in 0*patch;do printf "Patch%04d: %s\n" $i $p; ((i++));done
|
||||
|
||||
Patch0001: 0001-units-don-t-order-journal-flushing-afte-remote-fs.ta.patch
|
||||
Patch0002: 0002-units-make-systemd-journald.service-Type-notify.patch
|
||||
Patch0001: 0001-NEWS-well-it-s-Options-now-not-Discard.patch
|
||||
Patch0002: 0002-sd-bus-properly-handle-removals-of-non-existing-matc.patch
|
||||
Patch0003: 0003-nspawn-ignore-EEXIST-when-creating-mount-point.patch
|
||||
Patch0004: 0004-udev-path_id-update-comments.patch
|
||||
Patch0005: 0005-bash-completion-rework-startable-restartable-units-o.patch
|
||||
Patch0006: 0006-systemctl-let-list-units-unit-files-honour-type.patch
|
||||
Patch0007: 0007-systemctl-obey-state-in-list-unit-files.patch
|
||||
Patch0008: 0008-bash-completion-use-improved-filtering-to-make-thing.patch
|
||||
Patch0009: 0009-zsh-completion-update-start-restart-completions.patch
|
||||
Patch0010: 0010-keymap-Ignore-brightness-keys-on-Dell-Inspiron-1520-.patch
|
||||
Patch0011: 0011-sysusers-Preserve-ownership-and-mode-on-etc-passwd-a.patch
|
||||
Patch0012: 0012-snapshot-return-error-when-snapshot-exists.patch
|
||||
Patch0013: 0013-sd-dhcp-client-clean-up-raw-socket-sd_event_source-w.patch
|
||||
Patch0014: 0014-remove-references-of-readahead.patch
|
||||
Patch0015: 0015-shared-add-missing-includes.patch
|
||||
Patch0016: 0016-shared-fix-typo.patch
|
||||
Patch0017: 0017-shared-install-avoid-prematurely-rejecting-missing-u.patch
|
||||
Patch0018: 0018-nspawn-don-t-make-up-1-as-error-code.patch
|
||||
Patch0019: 0019-units-don-t-order-journal-flushing-afte-remote-fs.ta.patch
|
||||
Patch0020: 0020-hwdb-Update-database-of-Bluetooth-company-identifier.patch
|
||||
Patch0021: 0021-libudev-modernization.patch
|
||||
Patch0022: 0022-libudev-do-not-accept-invalid-log-levels.patch
|
||||
Patch0023: 0023-man-describe-all-log-levels-in-udevadm-8.patch
|
||||
Patch0024: 0024-sd-dhcp6-client-fix-off-by-two-error-in-DUID-length.patch
|
||||
Patch0025: 0025-core-improve-error-message-when-machine-id-is-missin.patch
|
||||
Patch0026: 0026-man-explain-journalctl-flush-correctly.patch
|
||||
Patch0027: 0027-systemd-journal-flush.service-remove-trigger-from-de.patch
|
||||
Patch0028: 0028-kernel-install-90-loaderentry.install-fix-cmdline-pa.patch
|
||||
Patch0029: 0029-scsi_id-fix-usage-spelling.patch
|
||||
Patch0030: 0030-libudev-Use-correct-free-function.patch
|
||||
Patch0031: 0031-Raise-level-of-Found-dependency.-lines.patch
|
||||
Patch0032: 0032-manager-do-not-print-timing-when-running-in-test-mod.patch
|
||||
Patch0033: 0033-unit-do-not-order-timers.target-before-basic.target.patch
|
||||
Patch0034: 0034-units-order-sd-journal-flush-after-sd-remount-fs.patch
|
||||
Patch0035: 0035-man-sd_event_add_post-fix-typo.patch
|
||||
Patch0036: 0036-journald-fix-minor-memory-leak.patch
|
||||
Patch0037: 0037-journald-fix-memory-leak-on-error-path.patch
|
||||
Patch0038: 0038-journal-when-dumping-log-data-with-missing-COMM-fiel.patch
|
||||
Patch0039: 0039-localectl-fix-localectl-set-x11-keymap-syntax-descri.patch
|
||||
Patch0040: 0040-man-tmpfiles.d-fix-typo.patch
|
||||
Patch0041: 0041-units-make-systemd-journald.service-Type-notify.patch
|
||||
Patch0042: 0042-buildsys-test-util-needs-lm-for-fabs.patch
|
||||
Patch0043: 0043-udev-Fix-parsing-of-udev.event-timeout-kernel-parame.patch
|
||||
Patch0044: 0044-udev-avoid-magic-constants-in-kernel-cmdline-parsers.patch
|
||||
Patch0045: 0045-manager-Ensure-user-s-systemd-runtime-directory-exis.patch
|
||||
Patch0046: 0046-units-disable-job-timeouts.patch
|
||||
Patch0047: 0047-login-rerun-vconsole-setup-when-switching-from-vgaco.patch
|
||||
Patch0048: 0048-hostnamed-introduce-new-embedded-chassis-type.patch
|
||||
Patch0049: 0049-systemctl-when-invokes-as-reboot-f-sync.patch
|
||||
Patch0050: 0050-switch_root-do-not-fail-if-base_filesystem_create-fa.patch
|
||||
Patch0051: 0051-shared-create-files-even-if-the-SELinux-policy-has-n.patch
|
||||
Patch0052: 0052-switch-root-explain-why-we-don-t-care-about-base_fil.patch
|
||||
Patch0053: 0053-shutdown-fix-arguments-to-run-initramfs-shutdown.patch
|
||||
Patch0054: 0054-timer-reenable-TIMER_ACTIVE-timers-when-restarted.patch
|
||||
|
||||
Patch0998: fedora-disable-resolv.conf-symlink.patch
|
||||
Patch0999: fedora-add-bridge-sysctl-configuration.patch
|
||||
@ -825,6 +876,19 @@ getent passwd systemd-journal-upload >/dev/null 2>&1 || useradd -r -l -g systemd
|
||||
%{_datadir}/systemd/gatewayd
|
||||
|
||||
%changelog
|
||||
* Thu Nov 06 2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 217-4
|
||||
- Change libgudev1 to only require systemd-libs (#727499), there's
|
||||
no need to require full systemd stack.
|
||||
- Fixes for bugs #1159448, #1152220, #1158035.
|
||||
- Bash completions updates to allow propose more units for start/restart,
|
||||
and completions for set-default,get-default.
|
||||
- Again allow systemctl enable of instances.
|
||||
- Hardware database update and fixes.
|
||||
- Udev crash on invalid options and kernel commandline timeout parsing are fixed.
|
||||
- Add "embedded" chassis type.
|
||||
- Sync before 'reboot -f'.
|
||||
- Fix restarting of timer units.
|
||||
|
||||
* Wed Nov 05 2014 Michal Schmidt <mschmidt@redhat.com> - 217-3
|
||||
- Fix hanging journal flush (#1159641)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user