.
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=517
This commit is contained in:
parent
48aa24fa1c
commit
f62ee18fc0
25
0001-Don-t-snprintf-a-potentially-NULL-pointer.patch
Normal file
25
0001-Don-t-snprintf-a-potentially-NULL-pointer.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 5effdfa831d75306fc0ff9b47d39997e4ae87f16 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Meeks <michael.meeks@collabora.com>
|
||||||
|
Date: Tue, 11 Feb 2014 14:42:26 +0000
|
||||||
|
Subject: [PATCH] Don't snprintf a potentially NULL pointer.
|
||||||
|
|
||||||
|
---
|
||||||
|
src/shared/log.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/shared/log.c b/src/shared/log.c
|
||||||
|
index 2a075ff..d6b138f 100644
|
||||||
|
--- a/src/shared/log.c
|
||||||
|
+++ b/src/shared/log.c
|
||||||
|
@@ -479,7 +479,7 @@ static int log_do_header(char *header, size_t size,
|
||||||
|
func ? "CODE_FUNCTION=" : "",
|
||||||
|
func ? LINE_MAX : 0, func,
|
||||||
|
func ? "\n" : "",
|
||||||
|
- object ? object_name : "",
|
||||||
|
+ object_name ? object_name : "",
|
||||||
|
object ? LINE_MAX : 0, object, /* %.0s means no output */
|
||||||
|
object ? "\n" : "",
|
||||||
|
program_invocation_short_name);
|
||||||
|
--
|
||||||
|
1.8.4.5
|
||||||
|
|
181
0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
Normal file
181
0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
From fc676b00a7545743429e0c9b12a0f0707b1059aa Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 5 Oct 2013 13:09:43 -0400
|
||||||
|
Subject: [PATCH] core: do not add "what" to RequiresMountsFor for network
|
||||||
|
mounts
|
||||||
|
|
||||||
|
For cifs mount like //server/share, we would get
|
||||||
|
RequiresMountsFor=/server/share, which probably isn't
|
||||||
|
harmful, but quite confusing.
|
||||||
|
|
||||||
|
Unfortunately a bunch of static functions had to be moved
|
||||||
|
up, but patch is really one line.
|
||||||
|
---
|
||||||
|
src/core/mount.c | 137 ++++++++++++++++++++++++++++--------------------------
|
||||||
|
1 file changed, 70 insertions(+), 67 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/core/mount.c src/core/mount.c
|
||||||
|
index db055f0..70cd372 100644
|
||||||
|
--- src/core/mount.c
|
||||||
|
+++ src/core/mount.c
|
||||||
|
@@ -59,6 +59,72 @@ static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
|
||||||
|
[MOUNT_FAILED] = UNIT_FAILED
|
||||||
|
};
|
||||||
|
|
||||||
|
+static char* mount_test_option(const char *haystack, const char *needle) {
|
||||||
|
+ struct mntent me = { .mnt_opts = (char*) haystack };
|
||||||
|
+
|
||||||
|
+ assert(needle);
|
||||||
|
+
|
||||||
|
+ /* Like glibc's hasmntopt(), but works on a string, not a
|
||||||
|
+ * struct mntent */
|
||||||
|
+
|
||||||
|
+ if (!haystack)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ return hasmntopt(&me, needle);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool mount_is_network(MountParameters *p) {
|
||||||
|
+ assert(p);
|
||||||
|
+
|
||||||
|
+ if (mount_test_option(p->options, "_netdev"))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ if (p->fstype && fstype_is_network(p->fstype))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool mount_is_bind(MountParameters *p) {
|
||||||
|
+ assert(p);
|
||||||
|
+
|
||||||
|
+ if (mount_test_option(p->options, "bind"))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ if (p->fstype && streq(p->fstype, "bind"))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ if (mount_test_option(p->options, "rbind"))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ if (p->fstype && streq(p->fstype, "rbind"))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool mount_is_auto(MountParameters *p) {
|
||||||
|
+ assert(p);
|
||||||
|
+
|
||||||
|
+ return !mount_test_option(p->options, "noauto");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool needs_quota(MountParameters *p) {
|
||||||
|
+ assert(p);
|
||||||
|
+
|
||||||
|
+ if (mount_is_network(p))
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ if (mount_is_bind(p))
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ return mount_test_option(p->options, "usrquota") ||
|
||||||
|
+ mount_test_option(p->options, "grpquota") ||
|
||||||
|
+ mount_test_option(p->options, "quota") ||
|
||||||
|
+ mount_test_option(p->options, "usrjquota") ||
|
||||||
|
+ mount_test_option(p->options, "grpjquota");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void mount_init(Unit *u) {
|
||||||
|
Mount *m = MOUNT(u);
|
||||||
|
|
||||||
|
@@ -182,7 +248,10 @@ static int mount_add_mount_links(Mount *m) {
|
||||||
|
* for the source path (if this is a bind mount) to be
|
||||||
|
* available. */
|
||||||
|
pm = get_mount_parameters_fragment(m);
|
||||||
|
- if (pm && pm->what && path_is_absolute(pm->what)) {
|
||||||
|
+ if (pm && pm->what &&
|
||||||
|
+ path_is_absolute(pm->what) &&
|
||||||
|
+ !mount_is_network(pm)) {
|
||||||
|
+
|
||||||
|
r = unit_require_mounts_for(UNIT(m), pm->what);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
@@ -214,72 +283,6 @@ static int mount_add_mount_links(Mount *m) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static char* mount_test_option(const char *haystack, const char *needle) {
|
||||||
|
- struct mntent me = { .mnt_opts = (char*) haystack };
|
||||||
|
-
|
||||||
|
- assert(needle);
|
||||||
|
-
|
||||||
|
- /* Like glibc's hasmntopt(), but works on a string, not a
|
||||||
|
- * struct mntent */
|
||||||
|
-
|
||||||
|
- if (!haystack)
|
||||||
|
- return NULL;
|
||||||
|
-
|
||||||
|
- return hasmntopt(&me, needle);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static bool mount_is_network(MountParameters *p) {
|
||||||
|
- assert(p);
|
||||||
|
-
|
||||||
|
- if (mount_test_option(p->options, "_netdev"))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- if (p->fstype && fstype_is_network(p->fstype))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- return false;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static bool mount_is_bind(MountParameters *p) {
|
||||||
|
- assert(p);
|
||||||
|
-
|
||||||
|
- if (mount_test_option(p->options, "bind"))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- if (p->fstype && streq(p->fstype, "bind"))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- if (mount_test_option(p->options, "rbind"))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- if (p->fstype && streq(p->fstype, "rbind"))
|
||||||
|
- return true;
|
||||||
|
-
|
||||||
|
- return false;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static bool mount_is_auto(MountParameters *p) {
|
||||||
|
- assert(p);
|
||||||
|
-
|
||||||
|
- return !mount_test_option(p->options, "noauto");
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static bool needs_quota(MountParameters *p) {
|
||||||
|
- assert(p);
|
||||||
|
-
|
||||||
|
- if (mount_is_network(p))
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- if (mount_is_bind(p))
|
||||||
|
- return false;
|
||||||
|
-
|
||||||
|
- return mount_test_option(p->options, "usrquota") ||
|
||||||
|
- mount_test_option(p->options, "grpquota") ||
|
||||||
|
- mount_test_option(p->options, "quota") ||
|
||||||
|
- mount_test_option(p->options, "usrjquota") ||
|
||||||
|
- mount_test_option(p->options, "grpjquota");
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static int mount_add_device_links(Mount *m) {
|
||||||
|
MountParameters *p;
|
||||||
|
bool device_wants_mount = false;
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 14a9283eb38a93ec384c322ccbe06352c86a25f8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Reisner <dreisner@archlinux.org>
|
||||||
|
Date: Sun, 13 Oct 2013 17:42:51 -0400
|
||||||
|
Subject: [PATCH] udevadm.xml: document --resolve-names option for test
|
||||||
|
|
||||||
|
And remove documentation of the --subsystem flag which doesn't actually
|
||||||
|
exist.
|
||||||
|
---
|
||||||
|
man/udevadm.xml | 8 ++++++--
|
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git man/udevadm.xml man/udevadm.xml
|
||||||
|
index d0b257d..b959216 100644
|
||||||
|
--- man/udevadm.xml
|
||||||
|
+++ man/udevadm.xml
|
||||||
|
@@ -462,9 +462,13 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
- <term><option>--subsystem=<replaceable>string</replaceable></option></term>
|
||||||
|
+ <term><option>--resolve-names=<replaceable>early|late|never</replaceable></option></term>
|
||||||
|
<listitem>
|
||||||
|
- <para>The subsystem string.</para>
|
||||||
|
+ <para>Specify when udevadm should resolve names of users and groups.
|
||||||
|
+ When set to early (the default) names will be resolved when the
|
||||||
|
+ rules are parsed. When set to late names will be resolved for
|
||||||
|
+ every event. When set to never names will never be resolved and
|
||||||
|
+ all devices will be owned by root.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 306e6650221d88b29831bcdcef94447afb65df5c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Igor Zhbanov <i.zhbanov@samsung.com>
|
||||||
|
Date: Tue, 15 Oct 2013 14:35:13 +0400
|
||||||
|
Subject: [PATCH] Fix for SIGSEGV in systemd-bootchart on short-living
|
||||||
|
processes
|
||||||
|
|
||||||
|
The function svg_ps_bars() dereferencess NULL pointer in the line
|
||||||
|
endtime = ps->last->sampledata->sampletime;
|
||||||
|
because of partially initialized ps_struct (ps->last == NULL).
|
||||||
|
|
||||||
|
If some process terminates between scaning /proc directory in the log_sample()
|
||||||
|
function and reading additional information from /proc/PID/... files,
|
||||||
|
the files couldn't be read, the loop will be continued and partially
|
||||||
|
initialized structure returned.
|
||||||
|
---
|
||||||
|
src/bootchart/store.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/bootchart/store.c src/bootchart/store.c
|
||||||
|
index f8c97c2..7f86cfe 100644
|
||||||
|
--- src/bootchart/store.c
|
||||||
|
+++ src/bootchart/store.c
|
||||||
|
@@ -275,7 +275,7 @@ schedstat_next:
|
||||||
|
pscount++;
|
||||||
|
|
||||||
|
/* mark our first sample */
|
||||||
|
- ps->first = ps->sample;
|
||||||
|
+ ps->first = ps->last = ps->sample;
|
||||||
|
ps->sample->runtime = atoll(rt);
|
||||||
|
ps->sample->waittime = atoll(wt);
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
37
0031-man-document-the-b-special-boot-option.patch
Normal file
37
0031-man-document-the-b-special-boot-option.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From 775657712d0f6d14b70a0fe947a95a9ecc212440 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Engelhardt <jengelh@inai.de>
|
||||||
|
Date: Tue, 15 Oct 2013 08:58:50 +0200
|
||||||
|
Subject: [PATCH] man: document the -b special boot option
|
||||||
|
|
||||||
|
---
|
||||||
|
man/kernel-command-line.xml | 1 +
|
||||||
|
man/systemd.xml | 1 +
|
||||||
|
2 files changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git man/kernel-command-line.xml man/kernel-command-line.xml
|
||||||
|
index cc267a3..abe68e5 100644
|
||||||
|
--- man/kernel-command-line.xml
|
||||||
|
+++ man/kernel-command-line.xml
|
||||||
|
@@ -123,6 +123,7 @@
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
+ <term><varname>-b</varname></term>
|
||||||
|
<term><varname>emergency</varname></term>
|
||||||
|
<term><varname>single</varname></term>
|
||||||
|
<term><varname>s</varname></term>
|
||||||
|
diff --git man/systemd.xml man/systemd.xml
|
||||||
|
index fe6e331..85c06d3 100644
|
||||||
|
--- man/systemd.xml
|
||||||
|
+++ man/systemd.xml
|
||||||
|
@@ -1149,6 +1149,7 @@
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
+ <term><varname>-b</varname></term>
|
||||||
|
<term><varname>emergency</varname></term>
|
||||||
|
|
||||||
|
<listitem><para>Boot into emergency
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,81 @@
|
|||||||
|
Patch based on
|
||||||
|
|
||||||
|
From e0d856dd48d640f3d95efe7b769edec02373cc74 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 16 Oct 2013 02:51:24 +0200
|
||||||
|
Subject: [PATCH] rules: don't limit some of the rules to the "add" action
|
||||||
|
|
||||||
|
Devices should show up in systemd regardless whether the user invoked
|
||||||
|
"udevadm trigger" or not. Before this change some devices might have
|
||||||
|
suddenly disappeared due issuing that command.
|
||||||
|
|
||||||
|
and also on
|
||||||
|
|
||||||
|
From 1a0464230c08506c3fd715ff7cc56660df3a85ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bastien Nocera <hadess@hadess.net>
|
||||||
|
Date: Fri, 11 Oct 2013 07:45:32 +0000
|
||||||
|
Subject: Add support for saving/restoring keyboard backlights
|
||||||
|
|
||||||
|
Piggy-backing on the display backlight code, this saves and restores
|
||||||
|
keyboard backlights on supported devices.
|
||||||
|
|
||||||
|
The detection code matches that of UPower:
|
||||||
|
http://cgit.freedesktop.org/upower/tree/src/up-kbd-backlight.c#n173
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=70367
|
||||||
|
|
||||||
|
[tomegun: also work for devices named "{smc,samsung,asus}::kbd_backlight"]
|
||||||
|
|
||||||
|
---
|
||||||
|
rules/99-systemd.rules.in | 10 ++++++----
|
||||||
|
src/backlight/backlight.c | 7 +++++--
|
||||||
|
2 files changed, 11 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
--- rules/99-systemd.rules.in
|
||||||
|
+++ rules/99-systemd.rules.in 2014-02-14 14:46:48.358235397 +0000
|
||||||
|
@@ -51,14 +51,16 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_dev
|
||||||
|
|
||||||
|
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name"
|
||||||
|
|
||||||
|
-# Pull in backlight save/restore for all firmware backlight devices
|
||||||
|
+# Pull in backlight save/restore for all backlight devices and
|
||||||
|
+# keyboard backlights
|
||||||
|
|
||||||
|
-ACTION=="add", SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
||||||
|
+SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service"
|
||||||
|
+SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service"
|
||||||
|
|
||||||
|
# Asynchronously mount file systems implemented by these modules as
|
||||||
|
# soon as they are loaded.
|
||||||
|
|
||||||
|
-SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
|
||||||
|
-SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"
|
||||||
|
+SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
|
||||||
|
+SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"
|
||||||
|
|
||||||
|
LABEL="systemd_end"
|
||||||
|
--- src/backlight/backlight.c
|
||||||
|
+++ src/backlight/backlight.c 2014-02-14 15:20:47.534298128 +0000
|
||||||
|
@@ -56,9 +56,11 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
|
device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]);
|
||||||
|
+ if (!device)
|
||||||
|
+ device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]);
|
||||||
|
if (!device) {
|
||||||
|
if (errno != 0) {
|
||||||
|
- log_error("Failed to get backlight device: %m");
|
||||||
|
+ log_error("Failed to get backlight device '%s': %m", argv[2]);
|
||||||
|
r = -errno;
|
||||||
|
} else
|
||||||
|
r = log_oom();
|
||||||
|
@@ -66,7 +68,8 @@ int main(int argc, char *argv[]) {
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) {
|
||||||
|
+ if (!streq_ptr(udev_device_get_subsystem(device), "backlight") &&
|
||||||
|
+ !streq_ptr(udev_device_get_subsystem(device), "leds")) {
|
||||||
|
log_error("Not a backlight device: %s", argv[2]);
|
||||||
|
r = -ENODEV;
|
||||||
|
goto finish;
|
@ -0,0 +1,37 @@
|
|||||||
|
From ca2f4176fee7dd5f5664429988e7059163fddb2d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kay Sievers <kay@vrfy.org>
|
||||||
|
Date: Thu, 17 Oct 2013 03:20:46 +0200
|
||||||
|
Subject: [PATCH] tmpfiles: log unaccessible FUSE mount points only as debug
|
||||||
|
message
|
||||||
|
|
||||||
|
---
|
||||||
|
src/tmpfiles/tmpfiles.c | 11 +++++++----
|
||||||
|
1 file changed, 7 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/tmpfiles/tmpfiles.c src/tmpfiles/tmpfiles.c
|
||||||
|
index 3cc831a..e23847b 100644
|
||||||
|
--- src/tmpfiles/tmpfiles.c
|
||||||
|
+++ src/tmpfiles/tmpfiles.c
|
||||||
|
@@ -275,12 +275,15 @@ static int dir_cleanup(
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (fstatat(dirfd(d), dent->d_name, &s, AT_SYMLINK_NOFOLLOW) < 0) {
|
||||||
|
+ if (errno == ENOENT)
|
||||||
|
+ continue;
|
||||||
|
|
||||||
|
- if (errno != ENOENT) {
|
||||||
|
+ /* FUSE, NFS mounts, SELinux might return EACCES */
|
||||||
|
+ if (errno == EACCES)
|
||||||
|
+ log_debug("stat(%s/%s) failed: %m", p, dent->d_name);
|
||||||
|
+ else
|
||||||
|
log_error("stat(%s/%s) failed: %m", p, dent->d_name);
|
||||||
|
- r = -errno;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
+ r = -errno;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From a23873387a6e722b711092c89a08ab3f3d19361c Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Mon, 11 Nov 2013 19:53:59 -0500
|
||||||
|
Subject: [PATCH] systemd-python: fix booted() and add two functions to docs
|
||||||
|
|
||||||
|
For some reason sphinx doesn't want to show inherited C functions.
|
||||||
|
---
|
||||||
|
src/python-systemd/_daemon.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/python-systemd/_daemon.c src/python-systemd/_daemon.c
|
||||||
|
index 6b84fb8..f0ab16f 100644
|
||||||
|
--- src/python-systemd/_daemon.c
|
||||||
|
+++ src/python-systemd/_daemon.c
|
||||||
|
@@ -51,7 +51,7 @@ static PyObject* booted(PyObject *self, PyObject *args) {
|
||||||
|
assert(args == NULL);
|
||||||
|
|
||||||
|
r = sd_booted();
|
||||||
|
- if (set_error(r, NULL, NULL))
|
||||||
|
+ if (set_error(r, NULL, NULL) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return PyBool_FromLong(r);
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
25
0035-activate-mention-E-in-the-help-text.patch
Normal file
25
0035-activate-mention-E-in-the-help-text.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From df49ccafc0d57c731a3da3014ad55d5bb9ed3e1b Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <grawity@gmail.com>
|
||||||
|
Date: Wed, 13 Nov 2013 13:36:17 +0200
|
||||||
|
Subject: [PATCH] activate: mention -E in the help text
|
||||||
|
|
||||||
|
---
|
||||||
|
src/activate/activate.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git src/activate/activate.c src/activate/activate.c
|
||||||
|
index 07e46b9..537626d 100644
|
||||||
|
--- src/activate/activate.c
|
||||||
|
+++ src/activate/activate.c
|
||||||
|
@@ -289,6 +289,8 @@ static int help(void) {
|
||||||
|
" -l --listen=ADDR Listen for raw connections at ADDR\n"
|
||||||
|
" -a --accept Spawn separate child for each connection\n"
|
||||||
|
" -h --help Show this help and exit\n"
|
||||||
|
+ " -E --environment=NAME[=VALUE]\n"
|
||||||
|
+ " Pass an environment variable to children\n"
|
||||||
|
" --version Print version string and exit\n"
|
||||||
|
"\n"
|
||||||
|
"Note: file descriptors from sd_listen_fds() will be passed through.\n"
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
26
0036-activate-fix-crash-when-s-is-passed.patch
Normal file
26
0036-activate-fix-crash-when-s-is-passed.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From ed6556920c1a6cdfe0bb04e806bc1f54ea191545 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <grawity@gmail.com>
|
||||||
|
Date: Wed, 13 Nov 2013 13:36:16 +0200
|
||||||
|
Subject: [PATCH] activate: fix crash when -s is passed
|
||||||
|
|
||||||
|
getopt_long() was told to accept -s which was never implemented.
|
||||||
|
---
|
||||||
|
src/activate/activate.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/activate/activate.c src/activate/activate.c
|
||||||
|
index 537626d..2639d1c 100644
|
||||||
|
--- src/activate/activate.c
|
||||||
|
+++ src/activate/activate.c
|
||||||
|
@@ -344,7 +344,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||||
|
assert(argc >= 0);
|
||||||
|
assert(argv);
|
||||||
|
|
||||||
|
- while ((c = getopt_long(argc, argv, "+hl:saE:", options, NULL)) >= 0)
|
||||||
|
+ while ((c = getopt_long(argc, argv, "+hl:aE:", options, NULL)) >= 0)
|
||||||
|
switch(c) {
|
||||||
|
case 'h':
|
||||||
|
help();
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 87267de89ddce9b1b812b720e1fc9a6cb554236e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 16 Nov 2013 17:29:28 -0500
|
||||||
|
Subject: [PATCH] tmpfiles: adjust excludes for the new per-service private
|
||||||
|
dirs
|
||||||
|
|
||||||
|
In d8c9d3a (systemd: use unit name in PrivateTmp directories)
|
||||||
|
I forgot to update the tmpfiles config.
|
||||||
|
---
|
||||||
|
tmpfiles.d/tmp.conf | 17 +++++++++++++++++
|
||||||
|
1 file changed, 17 insertions(+)
|
||||||
|
|
||||||
|
diff --git tmpfiles.d/tmp.conf tmpfiles.d/tmp.conf
|
||||||
|
index 3b534a1..f0312ef 100644
|
||||||
|
--- tmpfiles.d/tmp.conf
|
||||||
|
+++ tmpfiles.d/tmp.conf
|
||||||
|
@@ -12,6 +12,23 @@ d /tmp 1777 root root 10d
|
||||||
|
d /var/tmp 1777 root root -
|
||||||
|
|
||||||
|
# Exclude namespace mountpoints created with PrivateTmp=yes
|
||||||
|
+x /tmp/systemd-*.service-*
|
||||||
|
+x /var/tmp/systemd-*.service-*
|
||||||
|
+X /tmp/systemd-*.service-*/tmp
|
||||||
|
+X /var/tmp/systemd-*.service-*/tmp
|
||||||
|
+x /tmp/systemd-*.socket-*
|
||||||
|
+x /var/tmp/systemd-*.socket-*
|
||||||
|
+X /tmp/systemd-*.socket-*/tmp
|
||||||
|
+X /var/tmp/systemd-*.socket-*/tmp
|
||||||
|
+x /tmp/systemd-*.mount-*
|
||||||
|
+x /var/tmp/systemd-*.mount-*
|
||||||
|
+X /tmp/systemd-*.mount-*/tmp
|
||||||
|
+X /var/tmp/systemd-*.mount-*/tmp
|
||||||
|
+x /tmp/systemd-*.swap-*
|
||||||
|
+x /var/tmp/systemd-*.swap-*
|
||||||
|
+X /tmp/systemd-*.swap-*/tmp
|
||||||
|
+X /var/tmp/systemd-*.swap-*/tmp
|
||||||
|
+# keep those for compatibility during upgrades
|
||||||
|
x /tmp/systemd-private-*
|
||||||
|
x /var/tmp/systemd-private-*
|
||||||
|
X /tmp/systemd-private-*/tmp
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
38
0038-core-socket-fix-SO_REUSEPORT.patch
Normal file
38
0038-core-socket-fix-SO_REUSEPORT.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From f0511bd7e3d591383485a36ddcb764abe74b1939 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Shawn Landden <shawn@churchofgit.com>
|
||||||
|
Date: Sat, 16 Nov 2013 13:18:13 -0800
|
||||||
|
Subject: [PATCH] core/socket: fix SO_REUSEPORT
|
||||||
|
|
||||||
|
---
|
||||||
|
src/core/load-fragment-gperf.gperf.m4 | 1 +
|
||||||
|
src/core/socket.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/core/load-fragment-gperf.gperf.m4 src/core/load-fragment-gperf.gperf.m4
|
||||||
|
index e3025d2..b64fdc9 100644
|
||||||
|
--- src/core/load-fragment-gperf.gperf.m4
|
||||||
|
+++ src/core/load-fragment-gperf.gperf.m4
|
||||||
|
@@ -210,6 +210,7 @@ Socket.Broadcast, config_parse_bool, 0,
|
||||||
|
Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred)
|
||||||
|
Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec)
|
||||||
|
Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion)
|
||||||
|
+Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuseport)
|
||||||
|
Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg)
|
||||||
|
Socket.MessageQueueMessageSize, config_parse_long, 0, offsetof(Socket, mq_msgsize)
|
||||||
|
Socket.Service, config_parse_socket_service, 0, 0
|
||||||
|
diff --git src/core/socket.c src/core/socket.c
|
||||||
|
index f505e4f..751f20b 100644
|
||||||
|
--- src/core/socket.c
|
||||||
|
+++ src/core/socket.c
|
||||||
|
@@ -771,7 +771,7 @@ static void socket_apply_socket_options(Socket *s, int fd) {
|
||||||
|
|
||||||
|
if (s->reuseport) {
|
||||||
|
int b = s->reuseport;
|
||||||
|
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)))
|
||||||
|
+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)) < 0)
|
||||||
|
log_warning_unit(UNIT(s)->id, "SO_REUSEPORT failed: %m");
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,80 @@
|
|||||||
|
From a676e66535e12458ea6d366a653f8dd60f982504 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Tue, 26 Nov 2013 18:39:42 +0100
|
||||||
|
Subject: [PATCH] journal: when appending to journal file, allocate larger
|
||||||
|
blocks at once
|
||||||
|
|
||||||
|
---
|
||||||
|
src/journal/journal-file.c | 26 +++++++++++++++++---------
|
||||||
|
1 file changed, 17 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/journal/journal-file.c src/journal/journal-file.c
|
||||||
|
index bc72fca..d606ada 100644
|
||||||
|
--- src/journal/journal-file.c
|
||||||
|
+++ src/journal/journal-file.c
|
||||||
|
@@ -68,6 +68,9 @@
|
||||||
|
/* How many entries to keep in the entry array chain cache at max */
|
||||||
|
#define CHAIN_CACHE_MAX 20
|
||||||
|
|
||||||
|
+/* How much to increase the journal file size at once each time we allocate something new. */
|
||||||
|
+#define FILE_SIZE_INCREASE (8ULL*1024ULL*1024ULL) /* 8MB */
|
||||||
|
+
|
||||||
|
int journal_file_set_online(JournalFile *f) {
|
||||||
|
assert(f);
|
||||||
|
|
||||||
|
@@ -218,8 +221,7 @@ static int journal_file_refresh_header(JournalFile *f) {
|
||||||
|
journal_file_set_online(f);
|
||||||
|
|
||||||
|
/* Sync the online state to disk */
|
||||||
|
- msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC);
|
||||||
|
- fdatasync(f->fd);
|
||||||
|
+ fsync(f->fd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -313,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
|
||||||
|
- uint64_t old_size, new_size;
|
||||||
|
+ uint64_t old_size, new_size, file_size;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(f);
|
||||||
|
@@ -333,12 +335,10 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
|
||||||
|
if (new_size <= old_size)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- if (f->metrics.max_size > 0 &&
|
||||||
|
- new_size > f->metrics.max_size)
|
||||||
|
+ if (f->metrics.max_size > 0 && new_size > f->metrics.max_size)
|
||||||
|
return -E2BIG;
|
||||||
|
|
||||||
|
- if (new_size > f->metrics.min_size &&
|
||||||
|
- f->metrics.keep_free > 0) {
|
||||||
|
+ if (new_size > f->metrics.min_size && f->metrics.keep_free > 0) {
|
||||||
|
struct statvfs svfs;
|
||||||
|
|
||||||
|
if (fstatvfs(f->fd, &svfs) >= 0) {
|
||||||
|
@@ -363,8 +363,16 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
|
||||||
|
if (r != 0)
|
||||||
|
return -r;
|
||||||
|
|
||||||
|
- if (fstat(f->fd, &f->last_stat) < 0)
|
||||||
|
- return -errno;
|
||||||
|
+ /* Increase the file size a bit further than this, so that we
|
||||||
|
+ * we can create larger memory maps to cache */
|
||||||
|
+ file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
|
||||||
|
+ if (file_size > (uint64_t) f->last_stat.st_size) {
|
||||||
|
+ if (file_size > new_size)
|
||||||
|
+ ftruncate(f->fd, file_size);
|
||||||
|
+
|
||||||
|
+ if (fstat(f->fd, &f->last_stat) < 0)
|
||||||
|
+ return -errno;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
f->header->arena_size = htole64(new_size - le64toh(f->header->header_size));
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
247
0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
Normal file
247
0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
From f268980d2cee694fa4118a71402a47c316af0425 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Tue, 26 Nov 2013 20:37:53 +0100
|
||||||
|
Subject: [PATCH] journal: optimize bisection logic a bit by caching the last
|
||||||
|
position
|
||||||
|
|
||||||
|
This way we can do a quick restart limiting a bit how wildly we need to
|
||||||
|
jump around during the bisection process.
|
||||||
|
---
|
||||||
|
src/journal/journal-file.c | 134 ++++++++++++++++++++++++++++++++------------
|
||||||
|
1 file changed, 99 insertions(+), 35 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/journal/journal-file.c src/journal/journal-file.c
|
||||||
|
index 481c242..27cd16f 100644
|
||||||
|
--- src/journal/journal-file.c
|
||||||
|
+++ src/journal/journal-file.c
|
||||||
|
@@ -1366,6 +1366,7 @@ typedef struct ChainCacheItem {
|
||||||
|
uint64_t array; /* the cached array */
|
||||||
|
uint64_t begin; /* the first item in the cached array */
|
||||||
|
uint64_t total; /* the total number of items in all arrays before this one in the chain */
|
||||||
|
+ uint64_t last_index; /* the last index we looked at, to optimize locality when bisecting */
|
||||||
|
} ChainCacheItem;
|
||||||
|
|
||||||
|
static void chain_cache_put(
|
||||||
|
@@ -1374,7 +1375,8 @@ static void chain_cache_put(
|
||||||
|
uint64_t first,
|
||||||
|
uint64_t array,
|
||||||
|
uint64_t begin,
|
||||||
|
- uint64_t total) {
|
||||||
|
+ uint64_t total,
|
||||||
|
+ uint64_t last_index) {
|
||||||
|
|
||||||
|
if (!ci) {
|
||||||
|
/* If the chain item to cache for this chain is the
|
||||||
|
@@ -1402,12 +1404,14 @@ static void chain_cache_put(
|
||||||
|
ci->array = array;
|
||||||
|
ci->begin = begin;
|
||||||
|
ci->total = total;
|
||||||
|
+ ci->last_index = last_index;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int generic_array_get(JournalFile *f,
|
||||||
|
- uint64_t first,
|
||||||
|
- uint64_t i,
|
||||||
|
- Object **ret, uint64_t *offset) {
|
||||||
|
+static int generic_array_get(
|
||||||
|
+ JournalFile *f,
|
||||||
|
+ uint64_t first,
|
||||||
|
+ uint64_t i,
|
||||||
|
+ Object **ret, uint64_t *offset) {
|
||||||
|
|
||||||
|
Object *o;
|
||||||
|
uint64_t p = 0, a, t = 0;
|
||||||
|
@@ -1448,7 +1452,7 @@ static int generic_array_get(JournalFile *f,
|
||||||
|
|
||||||
|
found:
|
||||||
|
/* Let's cache this item for the next invocation */
|
||||||
|
- chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t);
|
||||||
|
+ chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i);
|
||||||
|
|
||||||
|
r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o);
|
||||||
|
if (r < 0)
|
||||||
|
@@ -1463,11 +1467,12 @@ found:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int generic_array_get_plus_one(JournalFile *f,
|
||||||
|
- uint64_t extra,
|
||||||
|
- uint64_t first,
|
||||||
|
- uint64_t i,
|
||||||
|
- Object **ret, uint64_t *offset) {
|
||||||
|
+static int generic_array_get_plus_one(
|
||||||
|
+ JournalFile *f,
|
||||||
|
+ uint64_t extra,
|
||||||
|
+ uint64_t first,
|
||||||
|
+ uint64_t i,
|
||||||
|
+ Object **ret, uint64_t *offset) {
|
||||||
|
|
||||||
|
Object *o;
|
||||||
|
|
||||||
|
@@ -1498,17 +1503,18 @@ enum {
|
||||||
|
TEST_RIGHT
|
||||||
|
};
|
||||||
|
|
||||||
|
-static int generic_array_bisect(JournalFile *f,
|
||||||
|
- uint64_t first,
|
||||||
|
- uint64_t n,
|
||||||
|
- uint64_t needle,
|
||||||
|
- int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
|
||||||
|
- direction_t direction,
|
||||||
|
- Object **ret,
|
||||||
|
- uint64_t *offset,
|
||||||
|
- uint64_t *idx) {
|
||||||
|
-
|
||||||
|
- uint64_t a, p, t = 0, i = 0, last_p = 0;
|
||||||
|
+static int generic_array_bisect(
|
||||||
|
+ JournalFile *f,
|
||||||
|
+ uint64_t first,
|
||||||
|
+ uint64_t n,
|
||||||
|
+ uint64_t needle,
|
||||||
|
+ int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
|
||||||
|
+ direction_t direction,
|
||||||
|
+ Object **ret,
|
||||||
|
+ uint64_t *offset,
|
||||||
|
+ uint64_t *idx) {
|
||||||
|
+
|
||||||
|
+ uint64_t a, p, t = 0, i = 0, last_p = 0, last_index = (uint64_t) -1;
|
||||||
|
bool subtract_one = false;
|
||||||
|
Object *o, *array = NULL;
|
||||||
|
int r;
|
||||||
|
@@ -1533,7 +1539,7 @@ static int generic_array_bisect(JournalFile *f,
|
||||||
|
return r;
|
||||||
|
|
||||||
|
if (r == TEST_LEFT) {
|
||||||
|
- /* OK, what we are looking for is right of th
|
||||||
|
+ /* OK, what we are looking for is right of the
|
||||||
|
* begin of this EntryArray, so let's jump
|
||||||
|
* straight to previously cached array in the
|
||||||
|
* chain */
|
||||||
|
@@ -1541,6 +1547,7 @@ static int generic_array_bisect(JournalFile *f,
|
||||||
|
a = ci->array;
|
||||||
|
n -= ci->total;
|
||||||
|
t = ci->total;
|
||||||
|
+ last_index = ci->last_index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1571,6 +1578,60 @@ static int generic_array_bisect(JournalFile *f,
|
||||||
|
if (r == TEST_RIGHT) {
|
||||||
|
left = 0;
|
||||||
|
right -= 1;
|
||||||
|
+
|
||||||
|
+ if (last_index != (uint64_t) -1) {
|
||||||
|
+ assert(last_index <= right);
|
||||||
|
+
|
||||||
|
+ /* If we cached the last index we
|
||||||
|
+ * looked at, let's try to not to jump
|
||||||
|
+ * too wildly around and see if we can
|
||||||
|
+ * limit the range to look at early to
|
||||||
|
+ * the immediate neighbors of the last
|
||||||
|
+ * index we looked at. */
|
||||||
|
+
|
||||||
|
+ if (last_index > 0) {
|
||||||
|
+ uint64_t x = last_index - 1;
|
||||||
|
+
|
||||||
|
+ p = le64toh(array->entry_array.items[x]);
|
||||||
|
+ if (p <= 0)
|
||||||
|
+ return -EBADMSG;
|
||||||
|
+
|
||||||
|
+ r = test_object(f, p, needle);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ return r;
|
||||||
|
+
|
||||||
|
+ if (r == TEST_FOUND)
|
||||||
|
+ r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT;
|
||||||
|
+
|
||||||
|
+ if (r == TEST_RIGHT)
|
||||||
|
+ right = x;
|
||||||
|
+ else
|
||||||
|
+ left = x + 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (last_index < right) {
|
||||||
|
+ uint64_t y = last_index + 1;
|
||||||
|
+
|
||||||
|
+ p = le64toh(array->entry_array.items[y]);
|
||||||
|
+ if (p <= 0)
|
||||||
|
+ return -EBADMSG;
|
||||||
|
+
|
||||||
|
+ r = test_object(f, p, needle);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ return r;
|
||||||
|
+
|
||||||
|
+ if (r == TEST_FOUND)
|
||||||
|
+ r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT;
|
||||||
|
+
|
||||||
|
+ if (r == TEST_RIGHT)
|
||||||
|
+ right = y;
|
||||||
|
+ else
|
||||||
|
+ left = y + 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ last_index = (uint64_t) -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
for (;;) {
|
||||||
|
if (left == right) {
|
||||||
|
if (direction == DIRECTION_UP)
|
||||||
|
@@ -1581,8 +1642,8 @@ static int generic_array_bisect(JournalFile *f,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(left < right);
|
||||||
|
-
|
||||||
|
i = (left + right) / 2;
|
||||||
|
+
|
||||||
|
p = le64toh(array->entry_array.items[i]);
|
||||||
|
if (p <= 0)
|
||||||
|
return -EBADMSG;
|
||||||
|
@@ -1615,6 +1676,7 @@ static int generic_array_bisect(JournalFile *f,
|
||||||
|
|
||||||
|
n -= k;
|
||||||
|
t += k;
|
||||||
|
+ last_index = (uint64_t) -1;
|
||||||
|
a = le64toh(array->entry_array.next_entry_array_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1625,7 +1687,7 @@ found:
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Let's cache this item for the next invocation */
|
||||||
|
- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t);
|
||||||
|
+ chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0));
|
||||||
|
|
||||||
|
if (subtract_one && i == 0)
|
||||||
|
p = last_p;
|
||||||
|
@@ -1650,16 +1712,18 @@ found:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int generic_array_bisect_plus_one(JournalFile *f,
|
||||||
|
- uint64_t extra,
|
||||||
|
- uint64_t first,
|
||||||
|
- uint64_t n,
|
||||||
|
- uint64_t needle,
|
||||||
|
- int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
|
||||||
|
- direction_t direction,
|
||||||
|
- Object **ret,
|
||||||
|
- uint64_t *offset,
|
||||||
|
- uint64_t *idx) {
|
||||||
|
+
|
||||||
|
+static int generic_array_bisect_plus_one(
|
||||||
|
+ JournalFile *f,
|
||||||
|
+ uint64_t extra,
|
||||||
|
+ uint64_t first,
|
||||||
|
+ uint64_t n,
|
||||||
|
+ uint64_t needle,
|
||||||
|
+ int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
|
||||||
|
+ direction_t direction,
|
||||||
|
+ Object **ret,
|
||||||
|
+ uint64_t *offset,
|
||||||
|
+ uint64_t *idx) {
|
||||||
|
|
||||||
|
int r;
|
||||||
|
bool step_back = false;
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From e5462cd80e5328a769137c261c93931ea0c27bab Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 27 Nov 2013 00:58:39 +0100
|
||||||
|
Subject: [PATCH] journal: fix iteration when we go backwards from the
|
||||||
|
beginning of an array chain element
|
||||||
|
|
||||||
|
---
|
||||||
|
src/journal/journal-file.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/journal/journal-file.c src/journal/journal-file.c
|
||||||
|
index 27cd16f..409be76 100644
|
||||||
|
--- src/journal/journal-file.c
|
||||||
|
+++ src/journal/journal-file.c
|
||||||
|
@@ -1687,7 +1687,7 @@ found:
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Let's cache this item for the next invocation */
|
||||||
|
- chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0));
|
||||||
|
+ chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
|
||||||
|
|
||||||
|
if (subtract_one && i == 0)
|
||||||
|
p = last_p;
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 248c78c79c5cca9b981800d816a77591e504066a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 27 Nov 2013 00:59:07 +0100
|
||||||
|
Subject: [PATCH] journal: allow journal_file_copy_entry() to work on
|
||||||
|
non-local files
|
||||||
|
|
||||||
|
---
|
||||||
|
src/journal/journal-file.c | 4 ----
|
||||||
|
1 file changed, 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/journal/journal-file.c src/journal/journal-file.c
|
||||||
|
index 409be76..14eae8f 100644
|
||||||
|
--- src/journal/journal-file.c
|
||||||
|
+++ src/journal/journal-file.c
|
||||||
|
@@ -2732,10 +2732,6 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6
|
||||||
|
ts.monotonic = le64toh(o->entry.monotonic);
|
||||||
|
ts.realtime = le64toh(o->entry.realtime);
|
||||||
|
|
||||||
|
- if (to->tail_entry_monotonic_valid &&
|
||||||
|
- ts.monotonic < le64toh(to->header->tail_entry_monotonic))
|
||||||
|
- return -EINVAL;
|
||||||
|
-
|
||||||
|
n = journal_file_entry_n_items(o);
|
||||||
|
items = alloca(sizeof(EntryItem) * n);
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
61
0043-journal-simplify-pre-allocation-logic.patch
Normal file
61
0043-journal-simplify-pre-allocation-logic.patch
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
From eda4b58b50509dc8ad0428a46e20f6c5cf516d58 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 27 Nov 2013 01:44:52 +0100
|
||||||
|
Subject: [PATCH] journal: simplify pre-allocation logic
|
||||||
|
|
||||||
|
let's just do a single fallocate() as far as possible, and don't
|
||||||
|
distuingish between allocated space and file size.
|
||||||
|
|
||||||
|
This way we can save a syscall for each append, which makes quite some
|
||||||
|
benefits.
|
||||||
|
---
|
||||||
|
src/journal/journal-file.c | 19 ++++++++-----------
|
||||||
|
1 file changed, 8 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/journal/journal-file.c src/journal/journal-file.c
|
||||||
|
index 14eae8f..4009b29 100644
|
||||||
|
--- src/journal/journal-file.c
|
||||||
|
+++ src/journal/journal-file.c
|
||||||
|
@@ -315,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
|
||||||
|
- uint64_t old_size, new_size, file_size;
|
||||||
|
+ uint64_t old_size, new_size;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(f);
|
||||||
|
@@ -356,6 +356,11 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Increase by larger blocks at once */
|
||||||
|
+ new_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
|
||||||
|
+ if (f->metrics.max_size > 0 && new_size > f->metrics.max_size)
|
||||||
|
+ new_size = f->metrics.max_size;
|
||||||
|
+
|
||||||
|
/* Note that the glibc fallocate() fallback is very
|
||||||
|
inefficient, hence we try to minimize the allocation area
|
||||||
|
as we can. */
|
||||||
|
@@ -363,16 +368,8 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
|
||||||
|
if (r != 0)
|
||||||
|
return -r;
|
||||||
|
|
||||||
|
- /* Increase the file size a bit further than this, so that we
|
||||||
|
- * we can create larger memory maps to cache */
|
||||||
|
- file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
|
||||||
|
- if (file_size > (uint64_t) f->last_stat.st_size) {
|
||||||
|
- if (file_size > new_size)
|
||||||
|
- ftruncate(f->fd, file_size);
|
||||||
|
-
|
||||||
|
- if (fstat(f->fd, &f->last_stat) < 0)
|
||||||
|
- return -errno;
|
||||||
|
- }
|
||||||
|
+ if (fstat(f->fd, &f->last_stat) < 0)
|
||||||
|
+ return -errno;
|
||||||
|
|
||||||
|
f->header->arena_size = htole64(new_size - le64toh(f->header->header_size));
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
From fbb634117d0b0ebd5b105e65b141e75ae9af7f8f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Wed, 27 Nov 2013 01:54:25 +0100
|
||||||
|
Subject: [PATCH] journald: mention how long we needed to flush to /var in the
|
||||||
|
logs
|
||||||
|
|
||||||
|
---
|
||||||
|
src/journal/journald-server.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/journal/journald-server.c src/journal/journald-server.c
|
||||||
|
index ce419d4..01e75b6 100644
|
||||||
|
--- src/journal/journald-server.c
|
||||||
|
+++ src/journal/journald-server.c
|
||||||
|
@@ -970,9 +970,12 @@ static int system_journal_open(Server *s) {
|
||||||
|
}
|
||||||
|
|
||||||
|
int server_flush_to_var(Server *s) {
|
||||||
|
- int r;
|
||||||
|
sd_id128_t machine;
|
||||||
|
sd_journal *j = NULL;
|
||||||
|
+ char ts[FORMAT_TIMESPAN_MAX];
|
||||||
|
+ usec_t start;
|
||||||
|
+ unsigned n = 0;
|
||||||
|
+ int r;
|
||||||
|
|
||||||
|
assert(s);
|
||||||
|
|
||||||
|
@@ -990,6 +993,8 @@ int server_flush_to_var(Server *s) {
|
||||||
|
|
||||||
|
log_debug("Flushing to /var...");
|
||||||
|
|
||||||
|
+ start = now(CLOCK_MONOTONIC);
|
||||||
|
+
|
||||||
|
r = sd_id128_get_machine(&machine);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
@@ -1009,6 +1014,8 @@ int server_flush_to_var(Server *s) {
|
||||||
|
f = j->current_file;
|
||||||
|
assert(f && f->current_offset > 0);
|
||||||
|
|
||||||
|
+ n++;
|
||||||
|
+
|
||||||
|
r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
|
||||||
|
if (r < 0) {
|
||||||
|
log_error("Can't read entry: %s", strerror(-r));
|
||||||
|
@@ -1052,6 +1059,8 @@ finish:
|
||||||
|
|
||||||
|
sd_journal_close(j);
|
||||||
|
|
||||||
|
+ server_driver_message(s, SD_ID128_NULL, "Time spent on flushing to /var is %s for %u entries.", format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0), n);
|
||||||
|
+
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From 27373e442747010dfc195296c0705f67e905a611 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
|
||||||
|
Date: Sat, 30 Nov 2013 23:45:31 +0100
|
||||||
|
Subject: [PATCH] util.c: check if return value from ttyname_r is > 0 instead
|
||||||
|
of != 0
|
||||||
|
|
||||||
|
We must return a negative error code from getttyname_malloc but
|
||||||
|
that would not be the case if ttyname_r returned a negative value.
|
||||||
|
|
||||||
|
ttyname_r should only return EBADF, ENOTTY, or ERANGE so it should
|
||||||
|
be safe to change.
|
||||||
|
---
|
||||||
|
src/shared/util.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git src/shared/util.c src/shared/util.c
|
||||||
|
index 38134ae..206fc80 100644
|
||||||
|
--- src/shared/util.c
|
||||||
|
+++ src/shared/util.c
|
||||||
|
@@ -2501,7 +2501,7 @@ int getttyname_malloc(int fd, char **r) {
|
||||||
|
assert(r);
|
||||||
|
|
||||||
|
k = ttyname_r(fd, path, sizeof(path));
|
||||||
|
- if (k != 0)
|
||||||
|
+ if (k > 0)
|
||||||
|
return -k;
|
||||||
|
|
||||||
|
char_array_0(path);
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
41
0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
Normal file
41
0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From 572ce4f7832ffa7a91a582c4098f18cec5662666 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 30 Nov 2013 20:27:54 -0500
|
||||||
|
Subject: [PATCH] docs: remove unneeded the's in gudev docs
|
||||||
|
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=72164
|
||||||
|
---
|
||||||
|
src/libudev/libudev-device.c | 10 ++++------
|
||||||
|
1 file changed, 4 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/libudev/libudev-device.c src/libudev/libudev-device.c
|
||||||
|
index 059a590..9558ac3 100644
|
||||||
|
--- src/libudev/libudev-device.c
|
||||||
|
+++ src/libudev/libudev-device.c
|
||||||
|
@@ -982,9 +982,8 @@ static struct udev_device *device_new_from_parent(struct udev_device *udev_devic
|
||||||
|
* Find the next parent device, and fill in information from the sys
|
||||||
|
* device and the udev database entry.
|
||||||
|
*
|
||||||
|
- * The returned the device is not referenced. It is attached to the
|
||||||
|
- * child device, and will be cleaned up when the child device
|
||||||
|
- * is cleaned up.
|
||||||
|
+ * Returned device is not referenced. It is attached to the child
|
||||||
|
+ * device, and will be cleaned up when the child device is cleaned up.
|
||||||
|
*
|
||||||
|
* It is not necessarily just the upper level directory, empty or not
|
||||||
|
* recognized sys directories are ignored.
|
||||||
|
@@ -1018,9 +1017,8 @@ _public_ struct udev_device *udev_device_get_parent(struct udev_device *udev_dev
|
||||||
|
* If devtype is #NULL, only subsystem is checked, and any devtype will
|
||||||
|
* match.
|
||||||
|
*
|
||||||
|
- * The returned the device is not referenced. It is attached to the
|
||||||
|
- * child device, and will be cleaned up when the child device
|
||||||
|
- * is cleaned up.
|
||||||
|
+ * Returned device is not referenced. It is attached to the child
|
||||||
|
+ * device, and will be cleaned up when the child device is cleaned up.
|
||||||
|
*
|
||||||
|
* It can be called as many times as needed, without caring about
|
||||||
|
* references.
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
238
0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
Normal file
238
0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
From 6a44e50f4c0938b0ba355fff21add6c067cd9837 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Sat, 30 Nov 2013 21:23:01 -0500
|
||||||
|
Subject: [PATCH] man: explicitly say when multiple units can be specified
|
||||||
|
|
||||||
|
itistoday> how do you specify multiple dependencies in a unit file? i've been
|
||||||
|
googling and can't find this basic thing :-\
|
||||||
|
itistoday> do you use a comma, or use multiple After= statements?
|
||||||
|
---
|
||||||
|
man/systemd.unit.xml | 128 +++++++++++++++++++++++++++-----------------------
|
||||||
|
1 file changed, 70 insertions(+), 58 deletions(-)
|
||||||
|
|
||||||
|
diff --git man/systemd.unit.xml man/systemd.unit.xml
|
||||||
|
index 4dc427c..35dd4c7 100644
|
||||||
|
--- man/systemd.unit.xml
|
||||||
|
+++ man/systemd.unit.xml
|
||||||
|
@@ -410,10 +410,12 @@
|
||||||
|
of the other units gets deactivated or
|
||||||
|
its activation fails, this unit will
|
||||||
|
be deactivated. This option may be
|
||||||
|
- specified more than once, in which
|
||||||
|
- case requirement dependencies for all
|
||||||
|
- listed names are created. Note that
|
||||||
|
- requirement dependencies do not
|
||||||
|
+ specified more than once or multiple
|
||||||
|
+ space-separated units may be specified
|
||||||
|
+ in one option in which case
|
||||||
|
+ requirement dependencies for all
|
||||||
|
+ listed names will be created. Note
|
||||||
|
+ that requirement dependencies do not
|
||||||
|
influence the order in which services
|
||||||
|
are started or stopped. This has to be
|
||||||
|
configured independently with the
|
||||||
|
@@ -476,22 +478,23 @@
|
||||||
|
<term><varname>RequisiteOverridable=</varname></term>
|
||||||
|
|
||||||
|
<listitem><para>Similar to
|
||||||
|
- <varname>Requires=</varname>
|
||||||
|
- and <varname>RequiresOverridable=</varname>, respectively. However,
|
||||||
|
- if a unit listed here is not started
|
||||||
|
- already it will not be started and the
|
||||||
|
- transaction fails
|
||||||
|
- immediately.</para></listitem>
|
||||||
|
+ <varname>Requires=</varname> and
|
||||||
|
+ <varname>RequiresOverridable=</varname>,
|
||||||
|
+ respectively. However, if the units
|
||||||
|
+ listed here are not started already
|
||||||
|
+ they will not be started and the
|
||||||
|
+ transaction will fail immediately.
|
||||||
|
+ </para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>Wants=</varname></term>
|
||||||
|
|
||||||
|
<listitem><para>A weaker version of
|
||||||
|
- <varname>Requires=</varname>. A unit
|
||||||
|
+ <varname>Requires=</varname>. Units
|
||||||
|
listed in this option will be started
|
||||||
|
if the configuring unit is. However,
|
||||||
|
- if the listed unit fails to start up
|
||||||
|
+ if the listed units fail to start
|
||||||
|
or cannot be added to the transaction
|
||||||
|
this has no impact on the validity of
|
||||||
|
the transaction as a whole. This is
|
||||||
|
@@ -501,8 +504,8 @@
|
||||||
|
|
||||||
|
<para>Note that dependencies of this
|
||||||
|
type may also be configured outside of
|
||||||
|
- the unit configuration file by
|
||||||
|
- adding a symlink to a
|
||||||
|
+ the unit configuration file by adding
|
||||||
|
+ symlinks to a
|
||||||
|
<filename>.wants/</filename> directory
|
||||||
|
accompanying the unit file. For
|
||||||
|
details see above.</para></listitem>
|
||||||
|
@@ -534,7 +537,7 @@
|
||||||
|
of units. When systemd stops or restarts
|
||||||
|
the units listed here, the action is
|
||||||
|
propagated to this unit.
|
||||||
|
- Note that this is a one way dependency -
|
||||||
|
+ Note that this is a one way dependency —
|
||||||
|
changes to this unit do not affect the
|
||||||
|
listed units.
|
||||||
|
</para></listitem>
|
||||||
|
@@ -543,12 +546,12 @@
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>Conflicts=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>Configures negative
|
||||||
|
+ <listitem><para>A space-separated list
|
||||||
|
+ of unit names. Configures negative
|
||||||
|
requirement dependencies. If a unit
|
||||||
|
- has a
|
||||||
|
- <varname>Conflicts=</varname> setting
|
||||||
|
- on another unit, starting the former
|
||||||
|
- will stop the latter and vice
|
||||||
|
+ has a <varname>Conflicts=</varname>
|
||||||
|
+ setting on another unit, starting the
|
||||||
|
+ former will stop the latter and vice
|
||||||
|
versa. Note that this setting is
|
||||||
|
independent of and orthogonal to the
|
||||||
|
<varname>After=</varname> and
|
||||||
|
@@ -575,7 +578,8 @@
|
||||||
|
<term><varname>Before=</varname></term>
|
||||||
|
<term><varname>After=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>Configures ordering
|
||||||
|
+ <listitem><para>A space-separated list
|
||||||
|
+ of unit names. Configures ordering
|
||||||
|
dependencies between units. If a unit
|
||||||
|
<filename>foo.service</filename>
|
||||||
|
contains a setting
|
||||||
|
@@ -624,18 +628,18 @@
|
||||||
|
type <varname>After=</varname> or
|
||||||
|
<varname>Before=</varname>. If two
|
||||||
|
units have no ordering dependencies
|
||||||
|
- between them, they are shut down
|
||||||
|
- or started up simultaneously, and
|
||||||
|
- no ordering takes
|
||||||
|
+ between them, they are shut down or
|
||||||
|
+ started up simultaneously, and no
|
||||||
|
+ ordering takes
|
||||||
|
place. </para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>OnFailure=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>Lists one or more
|
||||||
|
- units that are activated when this
|
||||||
|
- unit enters the
|
||||||
|
+ <listitem><para>A space-separated list
|
||||||
|
+ of one or more units that are
|
||||||
|
+ activated when this unit enters the
|
||||||
|
<literal>failed</literal>
|
||||||
|
state.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
@@ -644,16 +648,17 @@
|
||||||
|
<term><varname>PropagatesReloadTo=</varname></term>
|
||||||
|
<term><varname>ReloadPropagatedFrom=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>Lists one or more
|
||||||
|
- units where reload requests on the
|
||||||
|
- unit will be propagated to/on the
|
||||||
|
- other unit will be propagated
|
||||||
|
- from. Issuing a reload request on a
|
||||||
|
- unit will automatically also enqueue a
|
||||||
|
- reload request on all units that the
|
||||||
|
- reload request shall be propagated to
|
||||||
|
- via these two
|
||||||
|
- settings.</para></listitem>
|
||||||
|
+ <listitem><para>A space-separated list
|
||||||
|
+ of one or more units where reload
|
||||||
|
+ requests on this unit will be
|
||||||
|
+ propagated to, or reload requests on
|
||||||
|
+ the other unit will be propagated to
|
||||||
|
+ this unit, respectively. Issuing a
|
||||||
|
+ reload request on a unit will
|
||||||
|
+ automatically also enqueue a reload
|
||||||
|
+ request on all units that the reload
|
||||||
|
+ request shall be propagated to via
|
||||||
|
+ these two settings.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
@@ -1130,32 +1135,34 @@
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>Alias=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>Additional names this
|
||||||
|
- unit shall be installed under. The
|
||||||
|
- names listed here must have the same
|
||||||
|
- suffix (i.e. type) as the unit file
|
||||||
|
- name. This option may be specified
|
||||||
|
- more than once, in which case all
|
||||||
|
- listed names are used. At installation
|
||||||
|
- time,
|
||||||
|
- <command>systemctl enable</command>
|
||||||
|
- will create symlinks from these names
|
||||||
|
- to the unit filename.</para></listitem>
|
||||||
|
+ <listitem><para>A space-seperated list
|
||||||
|
+ of additional names this unit shall be
|
||||||
|
+ installed under. The names listed here
|
||||||
|
+ must have the same suffix (i.e. type)
|
||||||
|
+ as the unit file name. This option may
|
||||||
|
+ be specified more than once, in which
|
||||||
|
+ case all listed names are used. At
|
||||||
|
+ installation time, <command>systemctl
|
||||||
|
+ enable</command> will create symlinks
|
||||||
|
+ from these names to the unit
|
||||||
|
+ filename.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>WantedBy=</varname></term>
|
||||||
|
<term><varname>RequiredBy=</varname></term>
|
||||||
|
|
||||||
|
- <listitem><para>A symbolic link is
|
||||||
|
- created in the
|
||||||
|
- <filename>.wants/</filename> or
|
||||||
|
- <filename>.requires/</filename> directory
|
||||||
|
- of the listed unit when this unit is
|
||||||
|
- activated by <command>systemctl
|
||||||
|
- enable</command>. This has the effect
|
||||||
|
- that a dependency of type
|
||||||
|
- <varname>Wants=</varname> or
|
||||||
|
+ <listitem><para>This option may be
|
||||||
|
+ used more than once, or a
|
||||||
|
+ space-separated list of unit names may
|
||||||
|
+ be given. A symbolic link is created
|
||||||
|
+ in the <filename>.wants/</filename> or
|
||||||
|
+ <filename>.requires/</filename>
|
||||||
|
+ directory of each of the listed units
|
||||||
|
+ when this unit is installed by
|
||||||
|
+ <command>systemctl enable</command>.
|
||||||
|
+ This has the effect that a dependency
|
||||||
|
+ of type <varname>Wants=</varname> or
|
||||||
|
<varname>Requires=</varname> is added
|
||||||
|
from the listed unit to the current
|
||||||
|
unit. The primary result is that the
|
||||||
|
@@ -1201,7 +1208,12 @@
|
||||||
|
and <command>systemctl
|
||||||
|
disable</command> will automatically
|
||||||
|
install/uninstall units listed in this option as
|
||||||
|
- well.</para></listitem>
|
||||||
|
+ well.</para>
|
||||||
|
+
|
||||||
|
+ <para>This option may be used more
|
||||||
|
+ than once, or a space-separated list
|
||||||
|
+ of unit names may be
|
||||||
|
+ given.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
93
0049-systemd-treat-reload-failure-as-failure.patch
Normal file
93
0049-systemd-treat-reload-failure-as-failure.patch
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
From 6a371e23ee0e47827fb4e3aa469ed84da2599304 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||||
|
Date: Mon, 2 Dec 2013 21:52:51 -0500
|
||||||
|
Subject: [PATCH] systemd: treat reload failure as failure
|
||||||
|
|
||||||
|
systemctl reload "suceeded" on stopped units, but it is documented
|
||||||
|
to fail in this case.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1036845
|
||||||
|
---
|
||||||
|
src/core/job.c | 11 +++++++----
|
||||||
|
src/core/job.h | 3 ++-
|
||||||
|
src/core/unit.c | 5 ++++-
|
||||||
|
3 files changed, 13 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git src/core/job.c src/core/job.c
|
||||||
|
index 557917a..ce97263 100644
|
||||||
|
--- src/core/job.c
|
||||||
|
+++ src/core/job.c
|
||||||
|
@@ -508,7 +508,7 @@ int job_run_and_invalidate(Job *j) {
|
||||||
|
else if (t == UNIT_ACTIVATING)
|
||||||
|
r = -EAGAIN;
|
||||||
|
else
|
||||||
|
- r = -ENOEXEC;
|
||||||
|
+ r = -EBADR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -537,8 +537,10 @@ int job_run_and_invalidate(Job *j) {
|
||||||
|
if (j) {
|
||||||
|
if (r == -EALREADY)
|
||||||
|
r = job_finish_and_invalidate(j, JOB_DONE, true);
|
||||||
|
- else if (r == -ENOEXEC)
|
||||||
|
+ else if (r == -EBADR)
|
||||||
|
r = job_finish_and_invalidate(j, JOB_SKIPPED, true);
|
||||||
|
+ else if (r == -ENOEXEC)
|
||||||
|
+ r = job_finish_and_invalidate(j, JOB_INVALID, true);
|
||||||
|
else if (r == -EAGAIN) {
|
||||||
|
j->state = JOB_WAITING;
|
||||||
|
m->n_running_jobs--;
|
||||||
|
@@ -764,7 +766,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) {
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (result == JOB_FAILED)
|
||||||
|
+ if (result == JOB_FAILED || result == JOB_INVALID)
|
||||||
|
j->manager->n_failed_jobs ++;
|
||||||
|
|
||||||
|
job_uninstall(j);
|
||||||
|
@@ -1119,7 +1121,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = {
|
||||||
|
[JOB_TIMEOUT] = "timeout",
|
||||||
|
[JOB_FAILED] = "failed",
|
||||||
|
[JOB_DEPENDENCY] = "dependency",
|
||||||
|
- [JOB_SKIPPED] = "skipped"
|
||||||
|
+ [JOB_SKIPPED] = "skipped",
|
||||||
|
+ [JOB_INVALID] = "invalid",
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult);
|
||||||
|
diff --git src/core/job.h src/core/job.h
|
||||||
|
index c23a380..0500e12 100644
|
||||||
|
--- src/core/job.h
|
||||||
|
+++ src/core/job.h
|
||||||
|
@@ -97,7 +97,8 @@ enum JobResult {
|
||||||
|
JOB_TIMEOUT, /* JobTimeout elapsed */
|
||||||
|
JOB_FAILED, /* Job failed */
|
||||||
|
JOB_DEPENDENCY, /* A required dependency job did not result in JOB_DONE */
|
||||||
|
- JOB_SKIPPED, /* JOB_RELOAD of inactive unit; negative result of JOB_VERIFY_ACTIVE */
|
||||||
|
+ JOB_SKIPPED, /* Negative result of JOB_VERIFY_ACTIVE */
|
||||||
|
+ JOB_INVALID, /* JOB_RELOAD of inactive unit */
|
||||||
|
_JOB_RESULT_MAX,
|
||||||
|
_JOB_RESULT_INVALID = -1
|
||||||
|
};
|
||||||
|
diff --git src/core/unit.c src/core/unit.c
|
||||||
|
index 50db86c..81d2162 100644
|
||||||
|
--- src/core/unit.c
|
||||||
|
+++ src/core/unit.c
|
||||||
|
@@ -1239,8 +1239,11 @@ int unit_reload(Unit *u) {
|
||||||
|
if (state == UNIT_RELOADING)
|
||||||
|
return -EALREADY;
|
||||||
|
|
||||||
|
- if (state != UNIT_ACTIVE)
|
||||||
|
+ if (state != UNIT_ACTIVE) {
|
||||||
|
+ log_warning_unit(u->id, "Unit %s cannot be reloaded because it is inactive.",
|
||||||
|
+ u->id);
|
||||||
|
return -ENOEXEC;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if ((following = unit_following(u))) {
|
||||||
|
log_debug_unit(u->id, "Redirecting reload request from %s to %s.",
|
||||||
|
--
|
||||||
|
1.7.9.2
|
||||||
|
|
@ -1,3 +1,32 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 14 16:03:16 UTC 2014 - werner@suse.de
|
||||||
|
|
||||||
|
- Add several upstream bugfix patches which are missed:
|
||||||
|
* 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
|
||||||
|
* 0026-udevadm.xml-document-resolve-names-option-for-test.patch
|
||||||
|
* 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
|
||||||
|
* 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
|
||||||
|
* 0031-man-document-the-b-special-boot-option.patch
|
||||||
|
* 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
|
||||||
|
* 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch
|
||||||
|
* 0035-activate-mention-E-in-the-help-text.patch
|
||||||
|
* 0036-activate-fix-crash-when-s-is-passed.patch
|
||||||
|
* 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch
|
||||||
|
* 0038-core-socket-fix-SO_REUSEPORT.patch
|
||||||
|
* 0039-journal-when-appending-to-journal-file-allocate-larg.patch
|
||||||
|
* 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
|
||||||
|
* 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch
|
||||||
|
* 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch
|
||||||
|
* 0043-journal-simplify-pre-allocation-logic.patch
|
||||||
|
* 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch
|
||||||
|
* 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
|
||||||
|
* 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
|
||||||
|
* 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
|
||||||
|
* 0049-systemd-treat-reload-failure-as-failure.patch
|
||||||
|
- Add patch 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch
|
||||||
|
to avoid potential NULL pointer
|
||||||
|
- Reorder patches to reflect udev/systemd usage
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Feb 11 10:53:48 UTC 2014 - coolo@suse.com
|
Tue Feb 11 10:53:48 UTC 2014 - coolo@suse.com
|
||||||
|
|
||||||
|
@ -273,22 +273,8 @@ Patch90: 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
|
|||||||
Patch91: plymouth-quit-and-wait-for-emergency-service.patch
|
Patch91: plymouth-quit-and-wait-for-emergency-service.patch
|
||||||
# PATCH-FIX-SUSE 0145-logind-use-correct-who-enum-values-with-KillUnit.patch -- Be able to kill sessions (bnc#860574)
|
# PATCH-FIX-SUSE 0145-logind-use-correct-who-enum-values-with-KillUnit.patch -- Be able to kill sessions (bnc#860574)
|
||||||
Patch92: 0145-logind-use-correct-who-enum-values-with-KillUnit.patch
|
Patch92: 0145-logind-use-correct-who-enum-values-with-KillUnit.patch
|
||||||
|
# PATCH-FIX-SUSE 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch -- Avoid systemd crash on resume (bnc#861488)
|
||||||
# udev patches
|
Patch93: 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch
|
||||||
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
|
|
||||||
Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
|
||||||
Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
|
|
||||||
Patch1003: 1003-udev-netlink-null-rules.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
|
|
||||||
Patch1006: 1006-udev-always-rename-network.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.patch
|
|
||||||
Patch1007: 1007-physical-hotplug-cpu-and-memory.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch
|
|
||||||
Patch1008: 1008-add-msft-compability-rules.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
|
# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
|
||||||
Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch
|
Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch
|
||||||
# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
|
# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
|
||||||
@ -311,6 +297,64 @@ Patch1017: 1017-skip-native-unit-handling-if-sysv-already-handled.patch
|
|||||||
Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
|
Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
|
||||||
# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch
|
# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch
|
||||||
Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch
|
Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch werner@suse.com
|
||||||
|
Patch94: 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch werner@suse.com
|
||||||
|
Patch96: 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0031-man-document-the-b-special-boot-option.patch werner@suse.com
|
||||||
|
Patch97: 0031-man-document-the-b-special-boot-option.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch werner@suse.com
|
||||||
|
Patch99: 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch werner@suse.com
|
||||||
|
Patch100: 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0035-activate-mention-E-in-the-help-text.patch werner@suse.com
|
||||||
|
Patch101: 0035-activate-mention-E-in-the-help-text.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0036-activate-fix-crash-when-s-is-passed.patch werner@suse.com
|
||||||
|
Patch102: 0036-activate-fix-crash-when-s-is-passed.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch werner@suse.com
|
||||||
|
Patch103: 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0038-core-socket-fix-SO_REUSEPORT.patch werner@suse.com
|
||||||
|
Patch104: 0038-core-socket-fix-SO_REUSEPORT.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0039-journal-when-appending-to-journal-file-allocate-larg.patch werner@suse.com
|
||||||
|
Patch105: 0039-journal-when-appending-to-journal-file-allocate-larg.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch werner@suse.com
|
||||||
|
Patch106: 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch werner@suse.com
|
||||||
|
Patch107: 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch werner@suse.com
|
||||||
|
Patch108: 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0043-journal-simplify-pre-allocation-logic.patch werner@suse.com
|
||||||
|
Patch109: 0043-journal-simplify-pre-allocation-logic.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch werner@suse.com
|
||||||
|
Patch110: 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch werner@suse.com
|
||||||
|
Patch111: 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch werner@suse.com
|
||||||
|
Patch112: 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch werner@suse.com
|
||||||
|
Patch113: 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0049-systemd-treat-reload-failure-as-failure.patch werner@suse.com
|
||||||
|
Patch114: 0049-systemd-treat-reload-failure-as-failure.patch
|
||||||
|
|
||||||
|
# udev patches
|
||||||
|
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
|
Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
|
Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
|
||||||
|
Patch1003: 1003-udev-netlink-null-rules.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
|
Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
|
||||||
|
Patch1006: 1006-udev-always-rename-network.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.patch
|
||||||
|
Patch1007: 1007-physical-hotplug-cpu-and-memory.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch
|
||||||
|
Patch1008: 1008-add-msft-compability-rules.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0026-udevadm.xml-document-resolve-names-option-for-test.patch werner@suse.com
|
||||||
|
Patch95: 0026-udevadm.xml-document-resolve-names-option-for-test.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch werner@suse.com
|
||||||
|
Patch98: 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Systemd is a system and service manager, compatible with SysV and LSB
|
Systemd is a system and service manager, compatible with SysV and LSB
|
||||||
@ -600,6 +644,37 @@ cp %{SOURCE7} m4/
|
|||||||
%patch90 -p1
|
%patch90 -p1
|
||||||
%patch91 -p1
|
%patch91 -p1
|
||||||
%patch92 -p1
|
%patch92 -p1
|
||||||
|
%patch93 -p1
|
||||||
|
%patch1009 -p1
|
||||||
|
%patch1010 -p1
|
||||||
|
%patch1011 -p1
|
||||||
|
%patch1012 -p1
|
||||||
|
%patch1013 -p1
|
||||||
|
%patch1014 -p1
|
||||||
|
%patch1015 -p1
|
||||||
|
%patch1016 -p1
|
||||||
|
%patch1017 -p1
|
||||||
|
%patch1018 -p1
|
||||||
|
%patch1019 -p1
|
||||||
|
%patch94 -p0
|
||||||
|
%patch96 -p0
|
||||||
|
%patch97 -p0
|
||||||
|
%patch99 -p0
|
||||||
|
%patch100 -p0
|
||||||
|
%patch101 -p0
|
||||||
|
%patch102 -p0
|
||||||
|
%patch103 -p0
|
||||||
|
%patch104 -p0
|
||||||
|
%patch105 -p0
|
||||||
|
%patch106 -p0
|
||||||
|
%patch107 -p0
|
||||||
|
%patch108 -p0
|
||||||
|
%patch109 -p0
|
||||||
|
%patch110 -p0
|
||||||
|
%patch111 -p0
|
||||||
|
%patch112 -p0
|
||||||
|
%patch113 -p0
|
||||||
|
%patch114 -p0
|
||||||
|
|
||||||
# udev patches
|
# udev patches
|
||||||
%patch1001 -p1
|
%patch1001 -p1
|
||||||
@ -612,17 +687,8 @@ cp %{SOURCE7} m4/
|
|||||||
%patch1007 -p1
|
%patch1007 -p1
|
||||||
%patch1008 -p1
|
%patch1008 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch1009 -p1
|
%patch95 -p0
|
||||||
%patch1010 -p1
|
%patch98 -p0
|
||||||
%patch1011 -p1
|
|
||||||
%patch1012 -p1
|
|
||||||
%patch1013 -p1
|
|
||||||
%patch1014 -p1
|
|
||||||
%patch1015 -p1
|
|
||||||
%patch1016 -p1
|
|
||||||
%patch1017 -p1
|
|
||||||
%patch1018 -p1
|
|
||||||
%patch1019 -p1
|
|
||||||
|
|
||||||
# ensure generate files are removed
|
# ensure generate files are removed
|
||||||
rm -f units/emergency.service
|
rm -f units/emergency.service
|
||||||
|
@ -1,3 +1,32 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 14 16:03:16 UTC 2014 - werner@suse.de
|
||||||
|
|
||||||
|
- Add several upstream bugfix patches which are missed:
|
||||||
|
* 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
|
||||||
|
* 0026-udevadm.xml-document-resolve-names-option-for-test.patch
|
||||||
|
* 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
|
||||||
|
* 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
|
||||||
|
* 0031-man-document-the-b-special-boot-option.patch
|
||||||
|
* 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
|
||||||
|
* 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch
|
||||||
|
* 0035-activate-mention-E-in-the-help-text.patch
|
||||||
|
* 0036-activate-fix-crash-when-s-is-passed.patch
|
||||||
|
* 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch
|
||||||
|
* 0038-core-socket-fix-SO_REUSEPORT.patch
|
||||||
|
* 0039-journal-when-appending-to-journal-file-allocate-larg.patch
|
||||||
|
* 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
|
||||||
|
* 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch
|
||||||
|
* 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch
|
||||||
|
* 0043-journal-simplify-pre-allocation-logic.patch
|
||||||
|
* 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch
|
||||||
|
* 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
|
||||||
|
* 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
|
||||||
|
* 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
|
||||||
|
* 0049-systemd-treat-reload-failure-as-failure.patch
|
||||||
|
- Add patch 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch
|
||||||
|
to avoid potential NULL pointer
|
||||||
|
- Reorder patches to reflect udev/systemd usage
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Feb 11 10:53:48 UTC 2014 - coolo@suse.com
|
Tue Feb 11 10:53:48 UTC 2014 - coolo@suse.com
|
||||||
|
|
||||||
|
120
systemd.spec
120
systemd.spec
@ -268,22 +268,8 @@ Patch90: 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
|
|||||||
Patch91: plymouth-quit-and-wait-for-emergency-service.patch
|
Patch91: plymouth-quit-and-wait-for-emergency-service.patch
|
||||||
# PATCH-FIX-SUSE 0145-logind-use-correct-who-enum-values-with-KillUnit.patch -- Be able to kill sessions (bnc#860574)
|
# PATCH-FIX-SUSE 0145-logind-use-correct-who-enum-values-with-KillUnit.patch -- Be able to kill sessions (bnc#860574)
|
||||||
Patch92: 0145-logind-use-correct-who-enum-values-with-KillUnit.patch
|
Patch92: 0145-logind-use-correct-who-enum-values-with-KillUnit.patch
|
||||||
|
# PATCH-FIX-SUSE 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch -- Avoid systemd crash on resume (bnc#861488)
|
||||||
# udev patches
|
Patch93: 0001-Don-t-snprintf-a-potentially-NULL-pointer.patch
|
||||||
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
|
|
||||||
Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
|
||||||
Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
|
|
||||||
Patch1003: 1003-udev-netlink-null-rules.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
|
|
||||||
Patch1006: 1006-udev-always-rename-network.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.patch
|
|
||||||
Patch1007: 1007-physical-hotplug-cpu-and-memory.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch
|
|
||||||
Patch1008: 1008-add-msft-compability-rules.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
|
# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
|
||||||
Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch
|
Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch
|
||||||
# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
|
# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
|
||||||
@ -306,6 +292,64 @@ Patch1017: 1017-skip-native-unit-handling-if-sysv-already-handled.patch
|
|||||||
Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
|
Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
|
||||||
# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch
|
# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch
|
||||||
Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch
|
Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch werner@suse.com
|
||||||
|
Patch94: 0018-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch werner@suse.com
|
||||||
|
Patch96: 0030-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0031-man-document-the-b-special-boot-option.patch werner@suse.com
|
||||||
|
Patch97: 0031-man-document-the-b-special-boot-option.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch werner@suse.com
|
||||||
|
Patch99: 0033-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch werner@suse.com
|
||||||
|
Patch100: 0034-systemd-python-fix-booted-and-add-two-functions-to-d.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0035-activate-mention-E-in-the-help-text.patch werner@suse.com
|
||||||
|
Patch101: 0035-activate-mention-E-in-the-help-text.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0036-activate-fix-crash-when-s-is-passed.patch werner@suse.com
|
||||||
|
Patch102: 0036-activate-fix-crash-when-s-is-passed.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch werner@suse.com
|
||||||
|
Patch103: 0037-tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0038-core-socket-fix-SO_REUSEPORT.patch werner@suse.com
|
||||||
|
Patch104: 0038-core-socket-fix-SO_REUSEPORT.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0039-journal-when-appending-to-journal-file-allocate-larg.patch werner@suse.com
|
||||||
|
Patch105: 0039-journal-when-appending-to-journal-file-allocate-larg.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch werner@suse.com
|
||||||
|
Patch106: 0040-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch werner@suse.com
|
||||||
|
Patch107: 0041-journal-fix-iteration-when-we-go-backwards-from-the-.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch werner@suse.com
|
||||||
|
Patch108: 0042-journal-allow-journal_file_copy_entry-to-work-on-non.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0043-journal-simplify-pre-allocation-logic.patch werner@suse.com
|
||||||
|
Patch109: 0043-journal-simplify-pre-allocation-logic.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch werner@suse.com
|
||||||
|
Patch110: 0044-journald-mention-how-long-we-needed-to-flush-to-var-.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch werner@suse.com
|
||||||
|
Patch111: 0046-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch werner@suse.com
|
||||||
|
Patch112: 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch werner@suse.com
|
||||||
|
Patch113: 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0049-systemd-treat-reload-failure-as-failure.patch werner@suse.com
|
||||||
|
Patch114: 0049-systemd-treat-reload-failure-as-failure.patch
|
||||||
|
|
||||||
|
# udev patches
|
||||||
|
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
|
Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
|
Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
|
||||||
|
Patch1003: 1003-udev-netlink-null-rules.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
|
Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
|
||||||
|
Patch1006: 1006-udev-always-rename-network.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1007-physical-hotplug-cpu-and-memory.patch
|
||||||
|
Patch1007: 1007-physical-hotplug-cpu-and-memory.patch
|
||||||
|
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch
|
||||||
|
Patch1008: 1008-add-msft-compability-rules.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0026-udevadm.xml-document-resolve-names-option-for-test.patch werner@suse.com
|
||||||
|
Patch95: 0026-udevadm.xml-document-resolve-names-option-for-test.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch werner@suse.com
|
||||||
|
Patch98: 0032-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Systemd is a system and service manager, compatible with SysV and LSB
|
Systemd is a system and service manager, compatible with SysV and LSB
|
||||||
@ -595,6 +639,37 @@ cp %{SOURCE7} m4/
|
|||||||
%patch90 -p1
|
%patch90 -p1
|
||||||
%patch91 -p1
|
%patch91 -p1
|
||||||
%patch92 -p1
|
%patch92 -p1
|
||||||
|
%patch93 -p1
|
||||||
|
%patch1009 -p1
|
||||||
|
%patch1010 -p1
|
||||||
|
%patch1011 -p1
|
||||||
|
%patch1012 -p1
|
||||||
|
%patch1013 -p1
|
||||||
|
%patch1014 -p1
|
||||||
|
%patch1015 -p1
|
||||||
|
%patch1016 -p1
|
||||||
|
%patch1017 -p1
|
||||||
|
%patch1018 -p1
|
||||||
|
%patch1019 -p1
|
||||||
|
%patch94 -p0
|
||||||
|
%patch96 -p0
|
||||||
|
%patch97 -p0
|
||||||
|
%patch99 -p0
|
||||||
|
%patch100 -p0
|
||||||
|
%patch101 -p0
|
||||||
|
%patch102 -p0
|
||||||
|
%patch103 -p0
|
||||||
|
%patch104 -p0
|
||||||
|
%patch105 -p0
|
||||||
|
%patch106 -p0
|
||||||
|
%patch107 -p0
|
||||||
|
%patch108 -p0
|
||||||
|
%patch109 -p0
|
||||||
|
%patch110 -p0
|
||||||
|
%patch111 -p0
|
||||||
|
%patch112 -p0
|
||||||
|
%patch113 -p0
|
||||||
|
%patch114 -p0
|
||||||
|
|
||||||
# udev patches
|
# udev patches
|
||||||
%patch1001 -p1
|
%patch1001 -p1
|
||||||
@ -607,17 +682,8 @@ cp %{SOURCE7} m4/
|
|||||||
%patch1007 -p1
|
%patch1007 -p1
|
||||||
%patch1008 -p1
|
%patch1008 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch1009 -p1
|
%patch95 -p0
|
||||||
%patch1010 -p1
|
%patch98 -p0
|
||||||
%patch1011 -p1
|
|
||||||
%patch1012 -p1
|
|
||||||
%patch1013 -p1
|
|
||||||
%patch1014 -p1
|
|
||||||
%patch1015 -p1
|
|
||||||
%patch1016 -p1
|
|
||||||
%patch1017 -p1
|
|
||||||
%patch1018 -p1
|
|
||||||
%patch1019 -p1
|
|
||||||
|
|
||||||
# ensure generate files are removed
|
# ensure generate files are removed
|
||||||
rm -f units/emergency.service
|
rm -f units/emergency.service
|
||||||
|
Loading…
Reference in New Issue
Block a user