forked from pool/systemd
Accepting request 313261 from home:jengelh:branches:Base:System
- Update to new upstream release 221 OBS-URL: https://build.opensuse.org/request/show/313261 OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=875
This commit is contained in:
parent
6eb77d03ed
commit
701179bcff
@ -1,69 +0,0 @@
|
||||
Based on deff2d3e18e831d63bf98dd4114e4e35e41966e8 Mon Sep 17 00:00:00 2001
|
||||
From: Werner Fink <werner@suse.de>
|
||||
Date: Wed, 10 Jun 2015 10:47:13 +0200
|
||||
Subject: [PATCH] Let some boolean survive a daemon-reload
|
||||
|
||||
Without the boolean bus_name_good services as well as cgroup_realized
|
||||
for units a unit of Type=dbus and ExecReload sending SIGHUP to $MAINPID
|
||||
will be terminated if systemd will be daemon reloaded.
|
||||
|
||||
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746151
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=78311
|
||||
https://bugzilla.opensuse.org/show_bug.cgi?id=934077
|
||||
---
|
||||
src/core/service.c | 9 +++++++++
|
||||
src/core/unit.c | 11 +++++++++++
|
||||
2 files changed, 20 insertions(+)
|
||||
|
||||
--- systemd-219/src/core/service.c
|
||||
+++ systemd-219/src/core/service.c 2015-06-11 12:24:36.769519910 +0000
|
||||
@@ -1920,6 +1920,7 @@ static int service_serialize(Unit *u, FI
|
||||
unit_serialize_item_format(u, f, "main-pid", PID_FMT, s->main_pid);
|
||||
|
||||
unit_serialize_item(u, f, "main-pid-known", yes_no(s->main_pid_known));
|
||||
+ unit_serialize_item(u, f, "bus-name-good", yes_no(s->bus_name_good));
|
||||
|
||||
if (s->status_text)
|
||||
unit_serialize_item(u, f, "status-text", s->status_text);
|
||||
@@ -2044,6 +2045,14 @@ static int service_deserialize_item(Unit
|
||||
log_unit_debug(u->id, "Failed to parse main-pid-known value %s", value);
|
||||
else
|
||||
s->main_pid_known = b;
|
||||
+ } else if (streq(key, "bus-name-good")) {
|
||||
+ int b;
|
||||
+
|
||||
+ b = parse_boolean(value);
|
||||
+ if (b < 0)
|
||||
+ log_unit_debug(u->id, "Failed to parse bus-name-good value %s", value);
|
||||
+ else
|
||||
+ s->bus_name_good = b;
|
||||
} else if (streq(key, "status-text")) {
|
||||
char *t;
|
||||
|
||||
--- systemd-219/src/core/unit.c
|
||||
+++ systemd-219/src/core/unit.c 2015-06-11 12:30:56.805519155 +0000
|
||||
@@ -2612,6 +2612,7 @@ int unit_serialize(Unit *u, FILE *f, FDS
|
||||
|
||||
if (u->cgroup_path)
|
||||
unit_serialize_item(u, f, "cgroup", u->cgroup_path);
|
||||
+ unit_serialize_item(u, f, "cgroup-realized", yes_no(u->cgroup_realized));
|
||||
|
||||
if (serialize_jobs) {
|
||||
if (u->job) {
|
||||
@@ -2803,6 +2804,16 @@ int unit_deserialize(Unit *u, FILE *f, F
|
||||
assert(hashmap_put(u->manager->cgroup_unit, s, u) == 1);
|
||||
|
||||
continue;
|
||||
+ } else if (streq(l, "cgroup-realized")) {
|
||||
+ int b;
|
||||
+
|
||||
+ b = parse_boolean(v);
|
||||
+ if (b < 0)
|
||||
+ log_debug("Failed to parse cgroup-realized bool %s", v);
|
||||
+ else
|
||||
+ u->cgroup_realized = b;
|
||||
+
|
||||
+ continue;
|
||||
}
|
||||
|
||||
if (unit_can_serialize(u)) {
|
@ -1,29 +1,183 @@
|
||||
---
|
||||
rules/99-systemd.rules.in | 2
|
||||
src/basic/terminal-util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++--
|
||||
src/basic/terminal-util.h | 1
|
||||
src/core/manager.c | 24 ++++++++---
|
||||
src/shared/util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++--
|
||||
src/shared/util.h | 1
|
||||
4 files changed, 116 insertions(+), 10 deletions(-)
|
||||
|
||||
|
||||
Index: systemd/rules/99-systemd.rules.in
|
||||
Index: systemd-221/rules/99-systemd.rules.in
|
||||
===================================================================
|
||||
--- systemd.orig/rules/99-systemd.rules.in
|
||||
+++ systemd/rules/99-systemd.rules.in
|
||||
--- systemd-221.orig/rules/99-systemd.rules.in
|
||||
+++ systemd-221/rules/99-systemd.rules.in
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
ACTION=="remove", GOTO="systemd_end"
|
||||
|
||||
-SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", TAG+="systemd"
|
||||
+SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd"
|
||||
|
||||
KERNEL=="vport*", TAG+="systemd"
|
||||
|
||||
Index: systemd/src/core/manager.c
|
||||
SUBSYSTEM=="block", TAG+="systemd"
|
||||
Index: systemd-221/src/basic/terminal-util.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/core/manager.c
|
||||
+++ systemd/src/core/manager.c
|
||||
@@ -113,7 +113,7 @@ static int manager_watch_jobs_in_progres
|
||||
--- systemd-221.orig/src/basic/terminal-util.c
|
||||
+++ systemd-221/src/basic/terminal-util.c
|
||||
@@ -647,6 +647,7 @@ int status_vprintf(const char *status, b
|
||||
struct iovec iovec[6] = {};
|
||||
int n = 0;
|
||||
static bool prev_ephemeral;
|
||||
+ static int is_ansi_console = -1;
|
||||
|
||||
assert(format);
|
||||
|
||||
@@ -660,6 +661,41 @@ int status_vprintf(const char *status, b
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
|
||||
+ if (_unlikely_(is_ansi_console < 0))
|
||||
+ is_ansi_console = ansi_console(fd);
|
||||
+
|
||||
+ if (status && !is_ansi_console) {
|
||||
+ const char *esc, *ptr;
|
||||
+ esc = strchr(status, 0x1B);
|
||||
+ if (esc && (ptr = strpbrk(esc, "SOFDTI*"))) {
|
||||
+ switch(*ptr) {
|
||||
+ case 'S':
|
||||
+ status = " SKIP ";
|
||||
+ break;
|
||||
+ case 'O':
|
||||
+ status = " OK ";
|
||||
+ break;
|
||||
+ case 'F':
|
||||
+ status = "FAILED";
|
||||
+ break;
|
||||
+ case 'D':
|
||||
+ status = "DEPEND";
|
||||
+ break;
|
||||
+ case 'T':
|
||||
+ status = " TIME ";
|
||||
+ break;
|
||||
+ case 'I':
|
||||
+ status = " INFO ";
|
||||
+ break;
|
||||
+ case '*':
|
||||
+ status = " BUSY ";
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (ellipse) {
|
||||
char *e;
|
||||
size_t emax, sl;
|
||||
@@ -682,8 +718,12 @@ int status_vprintf(const char *status, b
|
||||
}
|
||||
}
|
||||
|
||||
- if (prev_ephemeral)
|
||||
- IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
|
||||
+ if (prev_ephemeral) {
|
||||
+ if (is_ansi_console)
|
||||
+ IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
|
||||
+ else
|
||||
+ IOVEC_SET_STRING(iovec[n++], "\r");
|
||||
+ }
|
||||
prev_ephemeral = ephemeral;
|
||||
|
||||
if (status) {
|
||||
@@ -807,10 +847,47 @@ bool tty_is_vc_resolve(const char *tty)
|
||||
return tty_is_vc(tty);
|
||||
}
|
||||
|
||||
+bool ansi_console(int fd) {
|
||||
+ static int cached_ansi_console = -1;
|
||||
+
|
||||
+ if (_likely_(cached_ansi_console >= 0))
|
||||
+ return cached_ansi_console;
|
||||
+
|
||||
+ cached_ansi_console = isatty(fd) > 0;
|
||||
+#if defined(__s390__) || defined(__s390x__)
|
||||
+ if (cached_ansi_console) {
|
||||
+ const char *e = getenv("TERM");
|
||||
+ if (e != NULL && (streq(e, "dumb") || strneq(e, "ibm3", 4))) {
|
||||
+ _cleanup_free_ char *mode = NULL;
|
||||
+ int r = parse_env_file("/proc/cmdline", WHITESPACE,
|
||||
+ "conmode", &mode, NULL);
|
||||
+ if (r < 0 || mode == NULL || !streq(mode, "3270"))
|
||||
+ cached_ansi_console = 0;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+ return cached_ansi_console;
|
||||
+}
|
||||
+
|
||||
const char *default_term_for_tty(const char *tty) {
|
||||
assert(tty);
|
||||
|
||||
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220";
|
||||
+ if (tty_is_vc_resolve(tty))
|
||||
+ return "TERM=linux";
|
||||
+ if (startswith(tty, "/dev/"))
|
||||
+ tty += 5;
|
||||
+#if defined (__s390__) || defined (__s390x__)
|
||||
+ if (streq(tty, "ttyS0")) {
|
||||
+ _cleanup_free_ char *mode = NULL;
|
||||
+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode",
|
||||
+ &mode, NULL);
|
||||
+ if (r < 0 || mode == NULL || !streq(mode, "3270"))
|
||||
+ return "TERM=dumb";
|
||||
+ if (streq(mode, "3270"))
|
||||
+ return "TERM=ibm327x";
|
||||
+ }
|
||||
+#endif
|
||||
+ return "TERM=vt220";
|
||||
}
|
||||
|
||||
int fd_columns(int fd) {
|
||||
@@ -890,8 +967,22 @@ void columns_lines_cache_reset(int signu
|
||||
bool on_tty(void) {
|
||||
static int cached_on_tty = -1;
|
||||
|
||||
- if (_unlikely_(cached_on_tty < 0))
|
||||
+ if (_unlikely_(cached_on_tty < 0)) {
|
||||
cached_on_tty = isatty(STDOUT_FILENO) > 0;
|
||||
+#if defined (__s390__) || defined (__s390x__)
|
||||
+ if (cached_on_tty) {
|
||||
+ const char *e = getenv("TERM");
|
||||
+ if (!e)
|
||||
+ return cached_on_tty;
|
||||
+ if (streq(e, "dumb") || strneq(e, "ibm3", 4)) {
|
||||
+ char *mode = NULL;
|
||||
+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL);
|
||||
+ if (r < 0 || !mode || !streq(mode, "3270"))
|
||||
+ cached_on_tty = 0;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+ }
|
||||
|
||||
return cached_on_tty;
|
||||
}
|
||||
Index: systemd-221/src/basic/terminal-util.h
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/basic/terminal-util.h
|
||||
+++ systemd-221/src/basic/terminal-util.h
|
||||
@@ -77,6 +77,7 @@ unsigned lines(void);
|
||||
void columns_lines_cache_reset(int _unused_ signum);
|
||||
|
||||
bool on_tty(void);
|
||||
+bool ansi_console(int fd);
|
||||
|
||||
static inline const char *ansi_highlight(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_ON : "";
|
||||
Index: systemd-221/src/core/manager.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/core/manager.c
|
||||
+++ systemd-221/src/core/manager.c
|
||||
@@ -113,7 +113,7 @@ static void manager_watch_jobs_in_progre
|
||||
|
||||
#define CYLON_BUFFER_EXTRA (2*(sizeof(ANSI_RED_ON)-1) + sizeof(ANSI_HIGHLIGHT_RED_ON)-1 + 2*(sizeof(ANSI_HIGHLIGHT_OFF)-1))
|
||||
|
||||
@ -89,161 +243,3 @@ Index: systemd/src/core/manager.c
|
||||
|
||||
m->jobs_in_progress_iteration++;
|
||||
|
||||
Index: systemd/src/shared/util.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/shared/util.c
|
||||
+++ systemd/src/shared/util.c
|
||||
@@ -3212,6 +3212,7 @@ int status_vprintf(const char *status, b
|
||||
struct iovec iovec[6] = {};
|
||||
int n = 0;
|
||||
static bool prev_ephemeral;
|
||||
+ static int is_ansi_console = -1;
|
||||
|
||||
assert(format);
|
||||
|
||||
@@ -3225,6 +3226,41 @@ int status_vprintf(const char *status, b
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
|
||||
+ if (_unlikely_(is_ansi_console < 0))
|
||||
+ is_ansi_console = ansi_console(fd);
|
||||
+
|
||||
+ if (status && !is_ansi_console) {
|
||||
+ const char *esc, *ptr;
|
||||
+ esc = strchr(status, 0x1B);
|
||||
+ if (esc && (ptr = strpbrk(esc, "SOFDTI*"))) {
|
||||
+ switch(*ptr) {
|
||||
+ case 'S':
|
||||
+ status = " SKIP ";
|
||||
+ break;
|
||||
+ case 'O':
|
||||
+ status = " OK ";
|
||||
+ break;
|
||||
+ case 'F':
|
||||
+ status = "FAILED";
|
||||
+ break;
|
||||
+ case 'D':
|
||||
+ status = "DEPEND";
|
||||
+ break;
|
||||
+ case 'T':
|
||||
+ status = " TIME ";
|
||||
+ break;
|
||||
+ case 'I':
|
||||
+ status = " INFO ";
|
||||
+ break;
|
||||
+ case '*':
|
||||
+ status = " BUSY ";
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (ellipse) {
|
||||
char *e;
|
||||
size_t emax, sl;
|
||||
@@ -3247,8 +3283,12 @@ int status_vprintf(const char *status, b
|
||||
}
|
||||
}
|
||||
|
||||
- if (prev_ephemeral)
|
||||
- IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
|
||||
+ if (prev_ephemeral) {
|
||||
+ if (is_ansi_console)
|
||||
+ IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
|
||||
+ else
|
||||
+ IOVEC_SET_STRING(iovec[n++], "\r");
|
||||
+ }
|
||||
prev_ephemeral = ephemeral;
|
||||
|
||||
if (status) {
|
||||
@@ -3504,8 +3544,22 @@ void columns_lines_cache_reset(int signu
|
||||
bool on_tty(void) {
|
||||
static int cached_on_tty = -1;
|
||||
|
||||
- if (_unlikely_(cached_on_tty < 0))
|
||||
+ if (_unlikely_(cached_on_tty < 0)) {
|
||||
cached_on_tty = isatty(STDOUT_FILENO) > 0;
|
||||
+#if defined (__s390__) || defined (__s390x__)
|
||||
+ if (cached_on_tty) {
|
||||
+ const char *e = getenv("TERM");
|
||||
+ if (!e)
|
||||
+ return cached_on_tty;
|
||||
+ if (streq(e, "dumb") || strneq(e, "ibm3", 4)) {
|
||||
+ char *mode = NULL;
|
||||
+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL);
|
||||
+ if (r < 0 || !mode || !streq(mode, "3270"))
|
||||
+ cached_on_tty = 0;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+ }
|
||||
|
||||
return cached_on_tty;
|
||||
}
|
||||
@@ -3523,6 +3577,27 @@ int files_same(const char *filea, const
|
||||
a.st_ino == b.st_ino;
|
||||
}
|
||||
|
||||
+bool ansi_console(int fd) {
|
||||
+ static int cached_ansi_console = -1;
|
||||
+
|
||||
+ if (_unlikely_(cached_ansi_console < 0)) {
|
||||
+ cached_ansi_console = isatty(fd) > 0;
|
||||
+#if defined (__s390__) || defined (__s390x__)
|
||||
+ if (cached_ansi_console) {
|
||||
+ const char *e = getenv("TERM");
|
||||
+ if (e && (streq(e, "dumb") || strneq(e, "ibm3", 4))) {
|
||||
+ char *mode = NULL;
|
||||
+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL);
|
||||
+ if (r < 0 || !mode || !streq(mode, "3270"))
|
||||
+ cached_ansi_console = 0;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+ return cached_ansi_console;
|
||||
+}
|
||||
+
|
||||
int running_in_chroot(void) {
|
||||
int ret;
|
||||
|
||||
@@ -4006,7 +4081,23 @@ bool tty_is_vc_resolve(const char *tty)
|
||||
const char *default_term_for_tty(const char *tty) {
|
||||
assert(tty);
|
||||
|
||||
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220";
|
||||
+ if (tty_is_vc_resolve(tty))
|
||||
+ return "TERM=linux";
|
||||
+
|
||||
+ if (startswith(tty, "/dev/"))
|
||||
+ tty += 5;
|
||||
+
|
||||
+#if defined (__s390__) || defined (__s390x__)
|
||||
+ if (streq(tty, "ttyS0")) {
|
||||
+ char *mode = NULL;
|
||||
+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL);
|
||||
+ if (r < 0 || !mode || !streq(mode, "3270"))
|
||||
+ return "TERM=dumb";
|
||||
+ if (streq(mode, "3270"))
|
||||
+ return "TERM=ibm327x";
|
||||
+ }
|
||||
+#endif
|
||||
+ return "TERM=vt220";
|
||||
}
|
||||
|
||||
bool dirent_is_file(const struct dirent *de) {
|
||||
Index: systemd/src/shared/util.h
|
||||
===================================================================
|
||||
--- systemd.orig/src/shared/util.h
|
||||
+++ systemd/src/shared/util.h
|
||||
@@ -475,6 +475,7 @@ unsigned lines(void);
|
||||
void columns_lines_cache_reset(int _unused_ signum);
|
||||
|
||||
bool on_tty(void);
|
||||
+bool ansi_console(int fd);
|
||||
|
||||
static inline const char *ansi_highlight(void) {
|
||||
return on_tty() ? ANSI_HIGHLIGHT_ON : "";
|
||||
|
@ -3,11 +3,11 @@
|
||||
src/systemctl/systemctl.c | 18 ++++++++++++------
|
||||
2 files changed, 16 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: systemd-218/src/core/shutdown.c
|
||||
Index: systemd-221/src/core/shutdown.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/shutdown.c
|
||||
+++ systemd-218/src/core/shutdown.c
|
||||
@@ -400,6 +400,10 @@ int main(int argc, char *argv[]) {
|
||||
--- systemd-221.orig/src/core/shutdown.c
|
||||
+++ systemd-221/src/core/shutdown.c
|
||||
@@ -396,6 +396,10 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
reboot(cmd);
|
||||
@ -18,11 +18,11 @@ Index: systemd-218/src/core/shutdown.c
|
||||
if (errno == EPERM && in_container) {
|
||||
/* If we are in a container, and we lacked
|
||||
* CAP_SYS_BOOT just exit, this will kill our
|
||||
Index: systemd-218/src/systemctl/systemctl.c
|
||||
Index: systemd-221/src/systemctl/systemctl.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/systemctl/systemctl.c
|
||||
+++ systemd-218/src/systemctl/systemctl.c
|
||||
@@ -94,6 +94,7 @@ static bool arg_no_pager = false;
|
||||
--- systemd-221.orig/src/systemctl/systemctl.c
|
||||
+++ systemd-221/src/systemctl/systemctl.c
|
||||
@@ -93,6 +93,7 @@ static bool arg_no_pager = false;
|
||||
static bool arg_no_wtmp = false;
|
||||
static bool arg_no_wall = false;
|
||||
static bool arg_no_reload = false;
|
||||
@ -30,7 +30,7 @@ Index: systemd-218/src/systemctl/systemctl.c
|
||||
static bool arg_show_types = false;
|
||||
static bool arg_ignore_inhibitors = false;
|
||||
static bool arg_dry = false;
|
||||
@@ -6813,6 +6814,7 @@ static int halt_parse_argv(int argc, cha
|
||||
@@ -6636,6 +6637,7 @@ static int halt_parse_argv(int argc, cha
|
||||
{ "reboot", no_argument, NULL, ARG_REBOOT },
|
||||
{ "force", no_argument, NULL, 'f' },
|
||||
{ "wtmp-only", no_argument, NULL, 'w' },
|
||||
@ -38,7 +38,7 @@ Index: systemd-218/src/systemctl/systemctl.c
|
||||
{ "no-wtmp", no_argument, NULL, 'd' },
|
||||
{ "no-wall", no_argument, NULL, ARG_NO_WALL },
|
||||
{}
|
||||
@@ -6865,10 +6867,13 @@ static int halt_parse_argv(int argc, cha
|
||||
@@ -6688,10 +6690,13 @@ static int halt_parse_argv(int argc, cha
|
||||
|
||||
case 'i':
|
||||
case 'h':
|
||||
@ -53,7 +53,7 @@ Index: systemd-218/src/systemctl/systemctl.c
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
||||
@@ -7511,7 +7516,8 @@ static int halt_now(enum action a) {
|
||||
@@ -7291,7 +7296,8 @@ static int halt_now(enum action a) {
|
||||
/* The kernel will automaticall flush ATA disks and suchlike
|
||||
* on reboot(), but the file systems need to be synce'd
|
||||
* explicitly in advance. */
|
||||
@ -63,7 +63,7 @@ Index: systemd-218/src/systemctl/systemctl.c
|
||||
|
||||
/* Make sure C-A-D is handled by the kernel from this point
|
||||
* on... */
|
||||
@@ -7519,14 +7525,14 @@ static int halt_now(enum action a) {
|
||||
@@ -7299,14 +7305,14 @@ static int halt_now(enum action a) {
|
||||
|
||||
switch (a) {
|
||||
|
||||
|
@ -5,17 +5,17 @@ NFS share is added as "After=" dependency to the <nfs-share-mount-point>.mount.
|
||||
|
||||
---
|
||||
Makefile.am | 2
|
||||
src/basic/util.c | 1
|
||||
src/core/mount-iface.c | 173 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
src/core/mount-iface.h | 25 +++++++
|
||||
src/core/mount.c | 35 +++++++++
|
||||
src/shared/util.c | 1
|
||||
5 files changed, 234 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
@@ -1134,6 +1134,8 @@ libsystemd_core_la_SOURCES = \
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -1164,6 +1164,8 @@ libcore_la_SOURCES = \
|
||||
src/core/machine-id-setup.h \
|
||||
src/core/mount-setup.c \
|
||||
src/core/mount-setup.h \
|
||||
@ -24,10 +24,22 @@ Index: systemd-218/Makefile.am
|
||||
src/core/kmod-setup.c \
|
||||
src/core/kmod-setup.h \
|
||||
src/core/loopback-setup.h \
|
||||
Index: systemd-218/src/core/mount-iface.c
|
||||
Index: systemd-221/src/basic/util.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/basic/util.c
|
||||
+++ systemd-221/src/basic/util.c
|
||||
@@ -1478,6 +1478,7 @@ bool fstype_is_network(const char *fstyp
|
||||
"ncp\0"
|
||||
"nfs\0"
|
||||
"nfs4\0"
|
||||
+ "afs\0"
|
||||
"gfs\0"
|
||||
"gfs2\0"
|
||||
"glusterfs\0";
|
||||
Index: systemd-221/src/core/mount-iface.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/src/core/mount-iface.c
|
||||
+++ systemd-221/src/core/mount-iface.c
|
||||
@@ -0,0 +1,173 @@
|
||||
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
|
||||
+
|
||||
@ -202,10 +214,10 @@ Index: systemd-218/src/core/mount-iface.c
|
||||
+ freeifaddrs(ifa_list);
|
||||
+ ifa_list = NULL;
|
||||
+}
|
||||
Index: systemd-218/src/core/mount-iface.h
|
||||
Index: systemd-221/src/core/mount-iface.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/src/core/mount-iface.h
|
||||
+++ systemd-221/src/core/mount-iface.h
|
||||
@@ -0,0 +1,25 @@
|
||||
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
|
||||
+
|
||||
@ -232,11 +244,11 @@ Index: systemd-218/src/core/mount-iface.h
|
||||
+
|
||||
+char *host2iface(const char *ip);
|
||||
+void freeroutes(void);
|
||||
Index: systemd-218/src/core/mount.c
|
||||
Index: systemd-221/src/core/mount.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/mount.c
|
||||
+++ systemd-218/src/core/mount.c
|
||||
@@ -38,6 +38,7 @@
|
||||
--- systemd-221.orig/src/core/mount.c
|
||||
+++ systemd-221/src/core/mount.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "mkdir.h"
|
||||
#include "path-util.h"
|
||||
#include "mount-setup.h"
|
||||
@ -244,7 +256,7 @@ Index: systemd-218/src/core/mount.c
|
||||
#include "unit-name.h"
|
||||
#include "dbus-mount.h"
|
||||
#include "special.h"
|
||||
@@ -1365,8 +1366,9 @@ static int mount_add_one(
|
||||
@@ -1332,8 +1333,9 @@ static int mount_setup_unit(
|
||||
_cleanup_free_ char *e = NULL, *w = NULL, *o = NULL, *f = NULL;
|
||||
bool load_extras = false;
|
||||
MountParameters *p;
|
||||
@ -255,17 +267,17 @@ Index: systemd-218/src/core/mount.c
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
@@ -1391,6 +1393,8 @@ static int mount_add_one(
|
||||
if (!e)
|
||||
return -ENOMEM;
|
||||
@@ -1358,6 +1360,8 @@ static int mount_setup_unit(
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
+ isnetwork = fstype_is_network(fstype);
|
||||
+
|
||||
u = manager_get_unit(m, e);
|
||||
if (!u) {
|
||||
delete = true;
|
||||
@@ -1419,7 +1423,7 @@ static int mount_add_one(
|
||||
if (m->running_as == SYSTEMD_SYSTEM) {
|
||||
@@ -1385,7 +1389,7 @@ static int mount_setup_unit(
|
||||
if (m->running_as == MANAGER_SYSTEM) {
|
||||
const char* target;
|
||||
|
||||
- target = mount_needs_network(options, fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
|
||||
@ -273,7 +285,7 @@ Index: systemd-218/src/core/mount.c
|
||||
r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
@@ -1505,6 +1509,32 @@ static int mount_add_one(
|
||||
@@ -1471,6 +1475,32 @@ static int mount_setup_unit(
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -296,7 +308,7 @@ Index: systemd-218/src/core/mount.c
|
||||
+ else {
|
||||
+ r = unit_add_dependency_by_name(u, UNIT_AFTER, target, NULL, true);
|
||||
+ if (r < 0)
|
||||
+ log_unit_error(u->id, "Failed to add dependency on %s, ignoring: %s",
|
||||
+ log_unit_error(u, "Failed to add dependency on %s, ignoring: %s",
|
||||
+ target, strerror(-r));
|
||||
+ }
|
||||
+ }
|
||||
@ -306,7 +318,7 @@ Index: systemd-218/src/core/mount.c
|
||||
if (changed)
|
||||
unit_add_to_dbus_queue(u);
|
||||
|
||||
@@ -1560,6 +1590,7 @@ static int mount_load_proc_self_mountinf
|
||||
@@ -1537,6 +1567,7 @@ static int mount_load_proc_self_mountinf
|
||||
if (r == 0 && k < 0)
|
||||
r = k;
|
||||
}
|
||||
@ -314,15 +326,3 @@ Index: systemd-218/src/core/mount.c
|
||||
|
||||
return r;
|
||||
}
|
||||
Index: systemd-218/src/shared/util.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/shared/util.c
|
||||
+++ systemd-218/src/shared/util.c
|
||||
@@ -1667,6 +1667,7 @@ bool fstype_is_network(const char *fstyp
|
||||
"ncp\0"
|
||||
"nfs\0"
|
||||
"nfs4\0"
|
||||
+ "afs\0"
|
||||
"gfs\0"
|
||||
"gfs2\0"
|
||||
"glusterfs\0";
|
||||
|
@ -1,6 +1,12 @@
|
||||
--- systemd-209/src/login/logind-session.c
|
||||
+++ systemd-209/src/login/logind-session.c 2014-02-28 12:12:14.762736079 +0000
|
||||
@@ -525,6 +525,12 @@ int session_start(Session *s) {
|
||||
---
|
||||
src/login/logind-session.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
Index: systemd-221/src/login/logind-session.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/login/logind-session.c
|
||||
+++ systemd-221/src/login/logind-session.c
|
||||
@@ -548,6 +548,12 @@ int session_start(Session *s) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
---
|
||||
src/login/logind-action.c | 5 +++++
|
||||
src/login/logind-dbus.c | 20 ++++++++++++++++----
|
||||
2 files changed, 21 insertions(+), 4 deletions(-)
|
||||
src/login/logind-dbus.c | 31 +++++++++++++++++++++++--------
|
||||
2 files changed, 28 insertions(+), 8 deletions(-)
|
||||
|
||||
Index: systemd-218/src/login/logind-action.c
|
||||
Index: systemd-221/src/login/logind-action.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/login/logind-action.c
|
||||
+++ systemd-218/src/login/logind-action.c
|
||||
@@ -83,6 +83,11 @@ int manager_handle_action(
|
||||
--- systemd-221.orig/src/login/logind-action.c
|
||||
+++ systemd-221/src/login/logind-action.c
|
||||
@@ -85,6 +85,11 @@ int manager_handle_action(
|
||||
|
||||
/* If the key handling is inhibited, don't do anything */
|
||||
if (inhibit_key > 0) {
|
||||
@ -19,57 +19,83 @@ Index: systemd-218/src/login/logind-action.c
|
||||
if (manager_is_inhibited(m, inhibit_key, INHIBIT_BLOCK, NULL, true, false, 0, NULL)) {
|
||||
log_debug("Refusing operation, %s is inhibited.", inhibit_what_to_string(inhibit_key));
|
||||
return 0;
|
||||
Index: systemd-218/src/login/logind-dbus.c
|
||||
Index: systemd-221/src/login/logind-dbus.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/login/logind-dbus.c
|
||||
+++ systemd-218/src/login/logind-dbus.c
|
||||
@@ -1487,9 +1487,11 @@ static int method_do_shutdown_or_sleep(
|
||||
sd_bus_error *error) {
|
||||
--- systemd-221.orig/src/login/logind-dbus.c
|
||||
+++ systemd-221/src/login/logind-dbus.c
|
||||
@@ -1625,12 +1625,13 @@ static int verify_shutdown_creds(
|
||||
const char *action,
|
||||
const char *action_multiple_sessions,
|
||||
const char *action_ignore_inhibit,
|
||||
- sd_bus_error *error) {
|
||||
+ sd_bus_error *error, const char *sleep_verb) {
|
||||
|
||||
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
|
||||
- bool multiple_sessions, blocked;
|
||||
+ bool multiple_sessions, blocked, shutdown_through_acpi;
|
||||
int interactive, r;
|
||||
uid_t uid;
|
||||
+ int fd;
|
||||
- int r;
|
||||
+ int r, fd;
|
||||
+ struct stat buf;
|
||||
|
||||
assert(m);
|
||||
assert(message);
|
||||
@@ -1533,7 +1535,17 @@ static int method_do_shutdown_or_sleep(
|
||||
@@ -1652,7 +1653,19 @@ static int verify_shutdown_creds(
|
||||
multiple_sessions = r > 0;
|
||||
blocked = manager_is_inhibited(m, w, INHIBIT_BLOCK, NULL, false, true, uid, NULL);
|
||||
|
||||
- if (multiple_sessions) {
|
||||
- if (multiple_sessions && action_multiple_sessions) {
|
||||
+ fd = open ("/run/systemd/acpi-shutdown", O_NOFOLLOW|O_PATH|O_CLOEXEC);
|
||||
+ if (fd >= 0) {
|
||||
+ shutdown_through_acpi = ((fstat(fd,&buf) == 0) && (time(NULL) - buf.st_mtime <= 65) && !sleep_verb);
|
||||
+ shutdown_through_acpi = fstat(fd, &buf) == 0 &&
|
||||
+ time(NULL) - buf.st_mtime <= 65 &&
|
||||
+ sleep_verb == NULL;
|
||||
+ close(fd);
|
||||
+ unlink ("/run/systemd/acpi-shutdown");
|
||||
+ }
|
||||
+ else
|
||||
+ shutdown_through_acpi = false;
|
||||
+
|
||||
+
|
||||
+ if (multiple_sessions && !shutdown_through_acpi) {
|
||||
r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_multiple_sessions, interactive, &m->polkit_registry, error);
|
||||
+ if (multiple_sessions && action_multiple_sessions &&
|
||||
+ !shutdown_through_acpi) {
|
||||
r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_multiple_sessions, interactive, UID_INVALID, &m->polkit_registry, error);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -1541,7 +1553,7 @@ static int method_do_shutdown_or_sleep(
|
||||
@@ -1660,7 +1673,7 @@ static int verify_shutdown_creds(
|
||||
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
|
||||
}
|
||||
|
||||
- if (blocked) {
|
||||
+ if (blocked && !shutdown_through_acpi) {
|
||||
r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_ignore_inhibit, interactive, &m->polkit_registry, error);
|
||||
- if (blocked && action_ignore_inhibit) {
|
||||
+ if (blocked && action_ignore_inhibit && !shutdown_through_acpi) {
|
||||
r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action_ignore_inhibit, interactive, UID_INVALID, &m->polkit_registry, error);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -1549,7 +1561,7 @@ static int method_do_shutdown_or_sleep(
|
||||
@@ -1668,7 +1681,8 @@ static int verify_shutdown_creds(
|
||||
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
|
||||
}
|
||||
|
||||
- if (!multiple_sessions && !blocked) {
|
||||
+ if (!multiple_sessions && !blocked && !shutdown_through_acpi) {
|
||||
r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action, interactive, &m->polkit_registry, error);
|
||||
- if (!multiple_sessions && !blocked && action) {
|
||||
+ if (!multiple_sessions && !blocked && action &&
|
||||
+ !shutdown_through_acpi) {
|
||||
r = bus_verify_polkit_async(message, CAP_SYS_BOOT, action, interactive, UID_INVALID, &m->polkit_registry, error);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -1716,7 +1730,7 @@ static int method_do_shutdown_or_sleep(
|
||||
}
|
||||
|
||||
r = verify_shutdown_creds(m, message, w, interactive, action, action_multiple_sessions,
|
||||
- action_ignore_inhibit, error);
|
||||
+ action_ignore_inhibit, error, sleep_verb);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
@@ -1896,7 +1910,8 @@ static int method_schedule_shutdown(sd_b
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unsupported shutdown type");
|
||||
|
||||
r = verify_shutdown_creds(m, message, INHIBIT_SHUTDOWN, false,
|
||||
- action, action_multiple_sessions, action_ignore_inhibit, error);
|
||||
+ action, action_multiple_sessions,
|
||||
+ action_ignore_inhibit, error, "UNUSED");
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
|
@ -1,917 +0,0 @@
|
||||
From 628c89cc68ab96fce2de7ebba5933725d147aecc Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 27 Feb 2015 21:55:08 +0100
|
||||
Subject: [PATCH] core: rework device state logic
|
||||
References: https://bugzilla.redhat.com/show_bug.cgi?id=1196452
|
||||
|
||||
This change introduces a new state "tentative" for device units. Device
|
||||
units are considered "plugged" when udev announced them, "dead" when
|
||||
they are not available in the kernel, and "tentative" when they are
|
||||
referenced in /proc/self/mountinfo or /proc/swaps but not (yet)
|
||||
announced via udev.
|
||||
|
||||
This should fix a race when device nodes (like loop devices) are created
|
||||
and immediately mounted. Previously, systemd might end up seeing the
|
||||
mount unit before the device, and would thus pull down the mount because
|
||||
its BindTo dependency on the device would not be fulfilled.
|
||||
===
|
||||
[The bug can be triggered by
|
||||
cp -a /dev/sda1 (pick any source) /dev/xxx; mount /dev/xxx /mnt;
|
||||
since "xxx" is a device udev does not know about even if it runs
|
||||
and is race-free in the moment you are trying.
|
||||
-jengelh]
|
||||
---
|
||||
src/core/device.c | 368 +++++++++++++++++++++++++++++++++---------------------
|
||||
src/core/device.h | 14 ++-
|
||||
src/core/mount.c | 46 ++++---
|
||||
src/core/swap.c | 32 +++--
|
||||
src/core/swap.h | 4 +-
|
||||
src/core/unit.c | 1 -
|
||||
6 files changed, 285 insertions(+), 180 deletions(-)
|
||||
|
||||
diff --git a/src/core/device.c b/src/core/device.c
|
||||
index 2d983cc..e41ed41 100644
|
||||
--- a/src/core/device.c
|
||||
+++ b/src/core/device.c
|
||||
@@ -34,7 +34,8 @@
|
||||
|
||||
static const UnitActiveState state_translation_table[_DEVICE_STATE_MAX] = {
|
||||
[DEVICE_DEAD] = UNIT_INACTIVE,
|
||||
- [DEVICE_PLUGGED] = UNIT_ACTIVE
|
||||
+ [DEVICE_TENTATIVE] = UNIT_ACTIVATING,
|
||||
+ [DEVICE_PLUGGED] = UNIT_ACTIVE,
|
||||
};
|
||||
|
||||
static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata);
|
||||
@@ -63,6 +64,41 @@ static void device_unset_sysfs(Device *d) {
|
||||
d->sysfs = NULL;
|
||||
}
|
||||
|
||||
+static int device_set_sysfs(Device *d, const char *sysfs) {
|
||||
+ Device *first;
|
||||
+ char *copy;
|
||||
+ int r;
|
||||
+
|
||||
+ assert(d);
|
||||
+
|
||||
+ if (streq_ptr(d->sysfs, sysfs))
|
||||
+ return 0;
|
||||
+
|
||||
+ r = hashmap_ensure_allocated(&UNIT(d)->manager->devices_by_sysfs, &string_hash_ops);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+
|
||||
+ copy = strdup(sysfs);
|
||||
+ if (!copy)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ device_unset_sysfs(d);
|
||||
+
|
||||
+ first = hashmap_get(UNIT(d)->manager->devices_by_sysfs, sysfs);
|
||||
+ LIST_PREPEND(same_sysfs, first, d);
|
||||
+
|
||||
+ r = hashmap_replace(UNIT(d)->manager->devices_by_sysfs, copy, first);
|
||||
+ if (r < 0) {
|
||||
+ LIST_REMOVE(same_sysfs, first, d);
|
||||
+ free(copy);
|
||||
+ return r;
|
||||
+ }
|
||||
+
|
||||
+ d->sysfs = copy;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void device_init(Unit *u) {
|
||||
Device *d = DEVICE(u);
|
||||
|
||||
@@ -110,8 +146,13 @@ static int device_coldplug(Unit *u) {
|
||||
assert(d);
|
||||
assert(d->state == DEVICE_DEAD);
|
||||
|
||||
- if (d->sysfs)
|
||||
+ if (d->found & DEVICE_FOUND_UDEV)
|
||||
+ /* If udev says the device is around, it's around */
|
||||
device_set_state(d, DEVICE_PLUGGED);
|
||||
+ else if (d->found != DEVICE_NOT_FOUND)
|
||||
+ /* If a device is found in /proc/self/mountinfo or
|
||||
+ * /proc/swaps, it's "tentatively" around. */
|
||||
+ device_set_state(d, DEVICE_TENTATIVE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -140,49 +181,9 @@ _pure_ static const char *device_sub_state_to_string(Unit *u) {
|
||||
return device_state_to_string(DEVICE(u)->state);
|
||||
}
|
||||
|
||||
-static int device_add_escaped_name(Unit *u, const char *dn) {
|
||||
- _cleanup_free_ char *e = NULL;
|
||||
- int r;
|
||||
-
|
||||
- assert(u);
|
||||
- assert(dn);
|
||||
- assert(dn[0] == '/');
|
||||
-
|
||||
- e = unit_name_from_path(dn, ".device");
|
||||
- if (!e)
|
||||
- return -ENOMEM;
|
||||
-
|
||||
- r = unit_add_name(u, e);
|
||||
- if (r < 0 && r != -EEXIST)
|
||||
- return r;
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) {
|
||||
- _cleanup_free_ char *e = NULL;
|
||||
- Unit *u;
|
||||
-
|
||||
- assert(m);
|
||||
- assert(dn);
|
||||
- assert(dn[0] == '/');
|
||||
- assert(_u);
|
||||
-
|
||||
- e = unit_name_from_path(dn, ".device");
|
||||
- if (!e)
|
||||
- return -ENOMEM;
|
||||
-
|
||||
- u = manager_get_unit(m, e);
|
||||
- if (u) {
|
||||
- *_u = u;
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static int device_make_description(Unit *u, struct udev_device *dev, const char *path) {
|
||||
+static int device_update_description(Unit *u, struct udev_device *dev, const char *path) {
|
||||
const char *model;
|
||||
+ int r;
|
||||
|
||||
assert(u);
|
||||
assert(dev);
|
||||
@@ -207,13 +208,16 @@ static int device_make_description(Unit *u, struct udev_device *dev, const char
|
||||
|
||||
j = strjoin(model, " ", label, NULL);
|
||||
if (j)
|
||||
- return unit_set_description(u, j);
|
||||
- }
|
||||
+ r = unit_set_description(u, j);
|
||||
+ } else
|
||||
+ r = unit_set_description(u, model);
|
||||
+ } else
|
||||
+ r = unit_set_description(u, path);
|
||||
|
||||
- return unit_set_description(u, model);
|
||||
- }
|
||||
+ if (r < 0)
|
||||
+ log_unit_error_errno(u->id, r, "Failed to set device description: %m");
|
||||
|
||||
- return unit_set_description(u, path);
|
||||
+ return r;
|
||||
}
|
||||
|
||||
static int device_add_udev_wants(Unit *u, struct udev_device *dev) {
|
||||
@@ -240,20 +244,20 @@ static int device_add_udev_wants(Unit *u, struct udev_device *dev) {
|
||||
|
||||
n = unit_name_mangle(e, MANGLE_NOGLOB);
|
||||
if (!n)
|
||||
- return -ENOMEM;
|
||||
+ return log_oom();
|
||||
|
||||
r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true);
|
||||
if (r < 0)
|
||||
- return r;
|
||||
+ return log_unit_error_errno(u->id, r, "Failed to add wants dependency: %m");
|
||||
}
|
||||
if (!isempty(state))
|
||||
- log_unit_warning(u->id, "Property %s on %s has trailing garbage, ignoring.",
|
||||
- property, strna(udev_device_get_syspath(dev)));
|
||||
+ log_unit_warning(u->id, "Property %s on %s has trailing garbage, ignoring.", property, strna(udev_device_get_syspath(dev)));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int device_update_unit(Manager *m, struct udev_device *dev, const char *path, bool main) {
|
||||
+static int device_setup_unit(Manager *m, struct udev_device *dev, const char *path, bool main) {
|
||||
+ _cleanup_free_ char *e = NULL;
|
||||
const char *sysfs;
|
||||
Unit *u = NULL;
|
||||
bool delete;
|
||||
@@ -267,12 +271,18 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
|
||||
if (!sysfs)
|
||||
return 0;
|
||||
|
||||
- r = device_find_escape_name(m, path, &u);
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
+ e = unit_name_from_path(path, ".device");
|
||||
+ if (!e)
|
||||
+ return log_oom();
|
||||
+
|
||||
+ u = manager_get_unit(m, e);
|
||||
|
||||
- if (u && DEVICE(u)->sysfs && !path_equal(DEVICE(u)->sysfs, sysfs))
|
||||
+ if (u &&
|
||||
+ DEVICE(u)->sysfs &&
|
||||
+ !path_equal(DEVICE(u)->sysfs, sysfs)) {
|
||||
+ log_unit_error(u->id, "Device %s appeared twice with different sysfs paths %s and %s", e, DEVICE(u)->sysfs, sysfs);
|
||||
return -EEXIST;
|
||||
+ }
|
||||
|
||||
if (!u) {
|
||||
delete = true;
|
||||
@@ -281,7 +291,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
|
||||
if (!u)
|
||||
return log_oom();
|
||||
|
||||
- r = device_add_escaped_name(u, path);
|
||||
+ r = unit_add_name(u, e);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
@@ -293,37 +303,16 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
|
||||
* actually been seen yet ->sysfs will not be
|
||||
* initialized. Hence initialize it if necessary. */
|
||||
|
||||
- if (!DEVICE(u)->sysfs) {
|
||||
- Device *first;
|
||||
-
|
||||
- DEVICE(u)->sysfs = strdup(sysfs);
|
||||
- if (!DEVICE(u)->sysfs) {
|
||||
- r = -ENOMEM;
|
||||
- goto fail;
|
||||
- }
|
||||
-
|
||||
- r = hashmap_ensure_allocated(&m->devices_by_sysfs, &string_hash_ops);
|
||||
- if (r < 0)
|
||||
- goto fail;
|
||||
-
|
||||
- first = hashmap_get(m->devices_by_sysfs, sysfs);
|
||||
- LIST_PREPEND(same_sysfs, first, DEVICE(u));
|
||||
-
|
||||
- r = hashmap_replace(m->devices_by_sysfs, DEVICE(u)->sysfs, first);
|
||||
- if (r < 0)
|
||||
- goto fail;
|
||||
- }
|
||||
-
|
||||
- device_make_description(u, dev, path);
|
||||
+ r = device_set_sysfs(DEVICE(u), sysfs);
|
||||
+ if (r < 0)
|
||||
+ goto fail;
|
||||
|
||||
- if (main) {
|
||||
- /* The additional systemd udev properties we only
|
||||
- * interpret for the main object */
|
||||
+ (void) device_update_description(u, dev, path);
|
||||
|
||||
- r = device_add_udev_wants(u, dev);
|
||||
- if (r < 0)
|
||||
- goto fail;
|
||||
- }
|
||||
+ /* The additional systemd udev properties we only interpret
|
||||
+ * for the main object */
|
||||
+ if (main)
|
||||
+ (void) device_add_udev_wants(u, dev);
|
||||
|
||||
/* Note that this won't dispatch the load queue, the caller
|
||||
* has to do that if needed and appropriate */
|
||||
@@ -332,7 +321,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
- log_warning_errno(r, "Failed to load device unit: %m");
|
||||
+ log_unit_warning_errno(u->id, r, "Failed to set up device unit: %m");
|
||||
|
||||
if (delete && u)
|
||||
unit_free(u);
|
||||
@@ -340,7 +329,7 @@ fail:
|
||||
return r;
|
||||
}
|
||||
|
||||
-static int device_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
+static int device_process_new(Manager *m, struct udev_device *dev) {
|
||||
const char *sysfs, *dn, *alias;
|
||||
struct udev_list_entry *item = NULL, *first = NULL;
|
||||
int r;
|
||||
@@ -352,14 +341,14 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
return 0;
|
||||
|
||||
/* Add the main unit named after the sysfs path */
|
||||
- r = device_update_unit(m, dev, sysfs, true);
|
||||
+ r = device_setup_unit(m, dev, sysfs, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* Add an additional unit for the device node */
|
||||
dn = udev_device_get_devnode(dev);
|
||||
if (dn)
|
||||
- device_update_unit(m, dev, dn, false);
|
||||
+ (void) device_setup_unit(m, dev, dn, false);
|
||||
|
||||
/* Add additional units for all symlinks */
|
||||
first = udev_device_get_devlinks_list_entry(dev);
|
||||
@@ -386,7 +375,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
st.st_rdev != udev_device_get_devnum(dev))
|
||||
continue;
|
||||
|
||||
- device_update_unit(m, dev, p, false);
|
||||
+ (void) device_setup_unit(m, dev, p, false);
|
||||
}
|
||||
|
||||
/* Add additional units for all explicitly configured
|
||||
@@ -403,7 +392,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
e[l] = 0;
|
||||
|
||||
if (path_is_absolute(e))
|
||||
- device_update_unit(m, dev, e, false);
|
||||
+ (void) device_setup_unit(m, dev, e, false);
|
||||
else
|
||||
log_warning("SYSTEMD_ALIAS for %s is not an absolute path, ignoring: %s", sysfs, e);
|
||||
}
|
||||
@@ -414,39 +403,62 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static void device_set_path_plugged(Manager *m, struct udev_device *dev) {
|
||||
- const char *sysfs;
|
||||
+static void device_update_found_one(Device *d, bool add, DeviceFound found, bool now) {
|
||||
+ DeviceFound n;
|
||||
+
|
||||
+ assert(d);
|
||||
+
|
||||
+ n = add ? (d->found | found) : (d->found & ~found);
|
||||
+ if (n == d->found)
|
||||
+ return;
|
||||
+
|
||||
+ d->found = n;
|
||||
+
|
||||
+ if (now) {
|
||||
+ if (d->found & DEVICE_FOUND_UDEV)
|
||||
+ device_set_state(d, DEVICE_PLUGGED);
|
||||
+ else if (d->found != DEVICE_NOT_FOUND)
|
||||
+ device_set_state(d, DEVICE_TENTATIVE);
|
||||
+ else
|
||||
+ device_set_state(d, DEVICE_DEAD);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int device_update_found_by_sysfs(Manager *m, const char *sysfs, bool add, DeviceFound found, bool now) {
|
||||
Device *d, *l;
|
||||
|
||||
assert(m);
|
||||
- assert(dev);
|
||||
+ assert(sysfs);
|
||||
|
||||
- sysfs = udev_device_get_syspath(dev);
|
||||
- if (!sysfs)
|
||||
- return;
|
||||
+ if (found == DEVICE_NOT_FOUND)
|
||||
+ return 0;
|
||||
|
||||
l = hashmap_get(m->devices_by_sysfs, sysfs);
|
||||
LIST_FOREACH(same_sysfs, d, l)
|
||||
- device_set_state(d, DEVICE_PLUGGED);
|
||||
+ device_update_found_one(d, add, found, now);
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
-static int device_process_removed_device(Manager *m, struct udev_device *dev) {
|
||||
- const char *sysfs;
|
||||
- Device *d;
|
||||
+static int device_update_found_by_name(Manager *m, const char *path, bool add, DeviceFound found, bool now) {
|
||||
+ _cleanup_free_ char *e = NULL;
|
||||
+ Unit *u;
|
||||
|
||||
assert(m);
|
||||
- assert(dev);
|
||||
+ assert(path);
|
||||
|
||||
- sysfs = udev_device_get_syspath(dev);
|
||||
- if (!sysfs)
|
||||
- return -ENOMEM;
|
||||
+ if (found == DEVICE_NOT_FOUND)
|
||||
+ return 0;
|
||||
|
||||
- /* Remove all units of this sysfs path */
|
||||
- while ((d = hashmap_get(m->devices_by_sysfs, sysfs))) {
|
||||
- device_unset_sysfs(d);
|
||||
- device_set_state(d, DEVICE_DEAD);
|
||||
- }
|
||||
+ e = unit_name_from_path(path, ".device");
|
||||
+ if (!e)
|
||||
+ return log_oom();
|
||||
|
||||
+ u = manager_get_unit(m, e);
|
||||
+ if (!u)
|
||||
+ return 0;
|
||||
+
|
||||
+ device_update_found_one(DEVICE(u), add, found, now);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -462,22 +474,6 @@ static bool device_is_ready(struct udev_device *dev) {
|
||||
return parse_boolean(ready) != 0;
|
||||
}
|
||||
|
||||
-static int device_process_new_path(Manager *m, const char *path) {
|
||||
- _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
|
||||
-
|
||||
- assert(m);
|
||||
- assert(path);
|
||||
-
|
||||
- dev = udev_device_new_from_syspath(m->udev, path);
|
||||
- if (!dev)
|
||||
- return log_oom();
|
||||
-
|
||||
- if (!device_is_ready(dev))
|
||||
- return 0;
|
||||
-
|
||||
- return device_process_new_device(m, dev);
|
||||
-}
|
||||
-
|
||||
static Unit *device_following(Unit *u) {
|
||||
Device *d = DEVICE(u);
|
||||
Device *other, *first = NULL;
|
||||
@@ -604,12 +600,31 @@ static int device_enumerate(Manager *m) {
|
||||
goto fail;
|
||||
|
||||
first = udev_enumerate_get_list_entry(e);
|
||||
- udev_list_entry_foreach(item, first)
|
||||
- device_process_new_path(m, udev_list_entry_get_name(item));
|
||||
+ udev_list_entry_foreach(item, first) {
|
||||
+ _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
|
||||
+ const char *sysfs;
|
||||
+
|
||||
+ sysfs = udev_list_entry_get_name(item);
|
||||
+
|
||||
+ dev = udev_device_new_from_syspath(m->udev, sysfs);
|
||||
+ if (!dev) {
|
||||
+ log_oom();
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (!device_is_ready(dev))
|
||||
+ continue;
|
||||
+
|
||||
+ (void) device_process_new(m, dev);
|
||||
+
|
||||
+ device_update_found_by_sysfs(m, sysfs, true, DEVICE_FOUND_UDEV, false);
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
+ log_error_errno(r, "Failed to enumerate devices: %m");
|
||||
+
|
||||
device_shutdown(m);
|
||||
return r;
|
||||
}
|
||||
@@ -617,7 +632,7 @@ fail:
|
||||
static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata) {
|
||||
_cleanup_udev_device_unref_ struct udev_device *dev = NULL;
|
||||
Manager *m = userdata;
|
||||
- const char *action;
|
||||
+ const char *action, *sysfs;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
@@ -639,33 +654,47 @@ static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
|
||||
if (!dev)
|
||||
return 0;
|
||||
|
||||
+ sysfs = udev_device_get_syspath(dev);
|
||||
+ if (!sysfs) {
|
||||
+ log_error("Failed to get udev sys path.");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
action = udev_device_get_action(dev);
|
||||
if (!action) {
|
||||
log_error("Failed to get udev action string.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (streq(action, "remove") || !device_is_ready(dev)) {
|
||||
- r = device_process_removed_device(m, dev);
|
||||
- if (r < 0)
|
||||
- log_error_errno(r, "Failed to process device remove event: %m");
|
||||
-
|
||||
- r = swap_process_removed_device(m, dev);
|
||||
+ if (streq(action, "remove")) {
|
||||
+ r = swap_process_device_remove(m, dev);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to process swap device remove event: %m");
|
||||
|
||||
- } else {
|
||||
- r = device_process_new_device(m, dev);
|
||||
- if (r < 0)
|
||||
- log_error_errno(r, "Failed to process device new event: %m");
|
||||
+ /* If we get notified that a device was removed by
|
||||
+ * udev, then it's completely gone, hence unset all
|
||||
+ * found bits */
|
||||
+ device_update_found_by_sysfs(m, sysfs, false, DEVICE_FOUND_UDEV|DEVICE_FOUND_MOUNT|DEVICE_FOUND_SWAP, true);
|
||||
|
||||
- r = swap_process_new_device(m, dev);
|
||||
+ } else if (device_is_ready(dev)) {
|
||||
+
|
||||
+ (void) device_process_new(m, dev);
|
||||
+
|
||||
+ r = swap_process_device_new(m, dev);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to process swap device new event: %m");
|
||||
|
||||
manager_dispatch_load_queue(m);
|
||||
|
||||
- device_set_path_plugged(m, dev);
|
||||
+ /* The device is found now, set the udev found bit */
|
||||
+ device_update_found_by_sysfs(m, sysfs, true, DEVICE_FOUND_UDEV, true);
|
||||
+
|
||||
+ } else {
|
||||
+ /* The device is nominally around, but not ready for
|
||||
+ * us. Hence unset the udev bit, but leave the rest
|
||||
+ * around. */
|
||||
+
|
||||
+ device_update_found_by_sysfs(m, sysfs, false, DEVICE_FOUND_UDEV, true);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -684,9 +713,58 @@ static bool device_supported(Manager *m) {
|
||||
return read_only <= 0;
|
||||
}
|
||||
|
||||
+int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now) {
|
||||
+ _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
|
||||
+ struct stat st;
|
||||
+
|
||||
+ assert(m);
|
||||
+ assert(node);
|
||||
+
|
||||
+ /* This is called whenever we find a device referenced in
|
||||
+ * /proc/swaps or /proc/self/mounts. Such a device might be
|
||||
+ * mounted/enabled at a time where udev has not finished
|
||||
+ * probing it yet, and we thus haven't learned about it
|
||||
+ * yet. In this case we will set the device unit to
|
||||
+ * "tentative" state. */
|
||||
+
|
||||
+ if (add) {
|
||||
+ if (!path_startswith(node, "/dev"))
|
||||
+ return 0;
|
||||
+
|
||||
+ if (stat(node, &st) < 0) {
|
||||
+ if (errno == ENOENT)
|
||||
+ return 0;
|
||||
+
|
||||
+ return log_error_errno(errno, "Failed to stat device node file %s: %m", node);
|
||||
+ }
|
||||
+
|
||||
+ if (!S_ISBLK(st.st_mode) && !S_ISCHR(st.st_mode))
|
||||
+ return 0;
|
||||
+
|
||||
+ dev = udev_device_new_from_devnum(m->udev, S_ISBLK(st.st_mode) ? 'b' : 'c', st.st_rdev);
|
||||
+ if (!dev) {
|
||||
+ if (errno == ENOENT)
|
||||
+ return 0;
|
||||
+
|
||||
+ return log_oom();
|
||||
+ }
|
||||
+
|
||||
+ /* If the device is known in the kernel and newly
|
||||
+ * appeared, then we'll create a device unit for it,
|
||||
+ * under the name referenced in /proc/swaps or
|
||||
+ * /proc/self/mountinfo. */
|
||||
+
|
||||
+ (void) device_setup_unit(m, dev, node, false);
|
||||
+ }
|
||||
+
|
||||
+ /* Update the device unit's state, should it exist */
|
||||
+ return device_update_found_by_name(m, node, add, found, now);
|
||||
+}
|
||||
+
|
||||
static const char* const device_state_table[_DEVICE_STATE_MAX] = {
|
||||
[DEVICE_DEAD] = "dead",
|
||||
- [DEVICE_PLUGGED] = "plugged"
|
||||
+ [DEVICE_TENTATIVE] = "tentative",
|
||||
+ [DEVICE_PLUGGED] = "plugged",
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(device_state, DeviceState);
|
||||
diff --git a/src/core/device.h b/src/core/device.h
|
||||
index 9065085..9f46e08 100644
|
||||
--- a/src/core/device.h
|
||||
+++ b/src/core/device.h
|
||||
@@ -28,20 +28,28 @@ typedef struct Device Device;
|
||||
* simplifies the state engine greatly */
|
||||
typedef enum DeviceState {
|
||||
DEVICE_DEAD,
|
||||
- DEVICE_PLUGGED,
|
||||
+ DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
|
||||
+ DEVICE_PLUGGED, /* announced by udev */
|
||||
_DEVICE_STATE_MAX,
|
||||
_DEVICE_STATE_INVALID = -1
|
||||
} DeviceState;
|
||||
|
||||
+typedef enum DeviceFound {
|
||||
+ DEVICE_NOT_FOUND = 0,
|
||||
+ DEVICE_FOUND_UDEV = 1,
|
||||
+ DEVICE_FOUND_MOUNT = 2,
|
||||
+ DEVICE_FOUND_SWAP = 4,
|
||||
+} DeviceFound;
|
||||
+
|
||||
struct Device {
|
||||
Unit meta;
|
||||
|
||||
char *sysfs;
|
||||
+ DeviceFound found;
|
||||
|
||||
/* In order to be able to distinguish dependencies on
|
||||
different device nodes we might end up creating multiple
|
||||
devices for the same sysfs path. We chain them up here. */
|
||||
-
|
||||
LIST_FIELDS(struct Device, same_sysfs);
|
||||
|
||||
DeviceState state;
|
||||
@@ -51,3 +59,5 @@ extern const UnitVTable device_vtable;
|
||||
|
||||
const char* device_state_to_string(DeviceState i) _const_;
|
||||
DeviceState device_state_from_string(const char *s) _pure_;
|
||||
+
|
||||
+int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now);
|
||||
diff --git a/src/core/mount.c b/src/core/mount.c
|
||||
index 40037e7..8e4a376 100644
|
||||
--- a/src/core/mount.c
|
||||
+++ b/src/core/mount.c
|
||||
@@ -1386,7 +1386,7 @@ static int mount_dispatch_timer(sd_event_source *source, usec_t usec, void *user
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int mount_add_one(
|
||||
+static int mount_setup_unit(
|
||||
Manager *m,
|
||||
const char *what,
|
||||
const char *where,
|
||||
@@ -1429,7 +1429,7 @@ static int mount_add_one(
|
||||
|
||||
u = unit_new(m, sizeof(Mount));
|
||||
if (!u)
|
||||
- return -ENOMEM;
|
||||
+ return log_oom();
|
||||
|
||||
r = unit_add_name(u, e);
|
||||
if (r < 0)
|
||||
@@ -1542,6 +1542,8 @@ static int mount_add_one(
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
+ log_warning_errno(r, "Failed to set up mount unit: %m");
|
||||
+
|
||||
if (delete && u)
|
||||
unit_free(u);
|
||||
|
||||
@@ -1549,33 +1551,36 @@ fail:
|
||||
}
|
||||
|
||||
static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
|
||||
- _cleanup_(mnt_free_tablep) struct libmnt_table *tb = NULL;
|
||||
- _cleanup_(mnt_free_iterp) struct libmnt_iter *itr = NULL;
|
||||
- struct libmnt_fs *fs;
|
||||
+ _cleanup_(mnt_free_tablep) struct libmnt_table *t = NULL;
|
||||
+ _cleanup_(mnt_free_iterp) struct libmnt_iter *i = NULL;
|
||||
int r = 0;
|
||||
|
||||
assert(m);
|
||||
|
||||
- tb = mnt_new_table();
|
||||
- itr = mnt_new_iter(MNT_ITER_FORWARD);
|
||||
- if (!tb || !itr)
|
||||
+ t = mnt_new_table();
|
||||
+ if (!t)
|
||||
return log_oom();
|
||||
|
||||
- r = mnt_table_parse_mtab(tb, NULL);
|
||||
+ i = mnt_new_iter(MNT_ITER_FORWARD);
|
||||
+ if (!i)
|
||||
+ return log_oom();
|
||||
+
|
||||
+ r = mnt_table_parse_mtab(t, NULL);
|
||||
if (r < 0)
|
||||
- return r;
|
||||
+ return log_error_errno(r, "Failed to parse /proc/self/mountinfo: %m");
|
||||
|
||||
r = 0;
|
||||
for (;;) {
|
||||
const char *device, *path, *options, *fstype;
|
||||
_cleanup_free_ const char *d = NULL, *p = NULL;
|
||||
+ struct libmnt_fs *fs;
|
||||
int k;
|
||||
|
||||
- k = mnt_table_next_fs(tb, itr, &fs);
|
||||
+ k = mnt_table_next_fs(t, i, &fs);
|
||||
if (k == 1)
|
||||
break;
|
||||
- else if (k < 0)
|
||||
- return log_error_errno(k, "Failed to get next entry from /etc/fstab: %m");
|
||||
+ if (k < 0)
|
||||
+ return log_error_errno(k, "Failed to get next entry from /proc/self/mountinfo: %m");
|
||||
|
||||
device = mnt_fs_get_source(fs);
|
||||
path = mnt_fs_get_target(fs);
|
||||
@@ -1583,11 +1588,16 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
|
||||
fstype = mnt_fs_get_fstype(fs);
|
||||
|
||||
d = cunescape(device);
|
||||
+ if (!d)
|
||||
+ return log_oom();
|
||||
+
|
||||
p = cunescape(path);
|
||||
- if (!d || !p)
|
||||
+ if (!p)
|
||||
return log_oom();
|
||||
|
||||
- k = mount_add_one(m, d, p, options, fstype, set_flags);
|
||||
+ (void) device_found_node(m, d, true, DEVICE_FOUND_MOUNT, set_flags);
|
||||
+
|
||||
+ k = mount_setup_unit(m, d, p, options, fstype, set_flags);
|
||||
if (r == 0 && k < 0)
|
||||
r = k;
|
||||
}
|
||||
@@ -1731,8 +1741,6 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
|
||||
|
||||
r = mount_load_proc_self_mountinfo(m, true);
|
||||
if (r < 0) {
|
||||
- log_error_errno(r, "Failed to reread /proc/self/mountinfo: %m");
|
||||
-
|
||||
/* Reset flags, just in case, for later calls */
|
||||
LIST_FOREACH(units_by_type, u, m->units_by_type[UNIT_MOUNT]) {
|
||||
Mount *mount = MOUNT(u);
|
||||
@@ -1765,6 +1773,10 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
|
||||
break;
|
||||
}
|
||||
|
||||
+ if (mount->parameters_proc_self_mountinfo.what)
|
||||
+ (void) device_found_node(m, mount->parameters_proc_self_mountinfo.what, false, DEVICE_FOUND_MOUNT, true);
|
||||
+
|
||||
+
|
||||
} else if (mount->just_mounted || mount->just_changed) {
|
||||
|
||||
/* New or changed mount entry */
|
||||
diff --git a/src/core/swap.c b/src/core/swap.c
|
||||
index f73a8e6..de3a5d8 100644
|
||||
--- a/src/core/swap.c
|
||||
+++ b/src/core/swap.c
|
||||
@@ -331,7 +331,7 @@ static int swap_load(Unit *u) {
|
||||
return swap_verify(s);
|
||||
}
|
||||
|
||||
-static int swap_add_one(
|
||||
+static int swap_setup_unit(
|
||||
Manager *m,
|
||||
const char *what,
|
||||
const char *what_proc_swaps,
|
||||
@@ -356,8 +356,10 @@ static int swap_add_one(
|
||||
|
||||
if (u &&
|
||||
SWAP(u)->from_proc_swaps &&
|
||||
- !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps))
|
||||
+ !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps)) {
|
||||
+ log_error("Swap %s appeared twice with different device paths %s and %s", e, SWAP(u)->parameters_proc_swaps.what, what_proc_swaps);
|
||||
return -EEXIST;
|
||||
+ }
|
||||
|
||||
if (!u) {
|
||||
delete = true;
|
||||
@@ -372,7 +374,7 @@ static int swap_add_one(
|
||||
|
||||
SWAP(u)->what = strdup(what);
|
||||
if (!SWAP(u)->what) {
|
||||
- r = log_oom();
|
||||
+ r = -ENOMEM;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -400,7 +402,6 @@ static int swap_add_one(
|
||||
p->priority = priority;
|
||||
|
||||
unit_add_to_dbus_queue(u);
|
||||
-
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
@@ -412,7 +413,7 @@ fail:
|
||||
return r;
|
||||
}
|
||||
|
||||
-static int swap_process_new_swap(Manager *m, const char *device, int prio, bool set_flags) {
|
||||
+static int swap_process_new(Manager *m, const char *device, int prio, bool set_flags) {
|
||||
_cleanup_udev_device_unref_ struct udev_device *d = NULL;
|
||||
struct udev_list_entry *item = NULL, *first = NULL;
|
||||
const char *dn;
|
||||
@@ -421,7 +422,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
|
||||
|
||||
assert(m);
|
||||
|
||||
- r = swap_add_one(m, device, device, prio, set_flags);
|
||||
+ r = swap_setup_unit(m, device, device, prio, set_flags);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -437,7 +438,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
|
||||
/* Add the main device node */
|
||||
dn = udev_device_get_devnode(d);
|
||||
if (dn && !streq(dn, device))
|
||||
- swap_add_one(m, dn, device, prio, set_flags);
|
||||
+ swap_setup_unit(m, dn, device, prio, set_flags);
|
||||
|
||||
/* Add additional units for all symlinks */
|
||||
first = udev_device_get_devlinks_list_entry(d);
|
||||
@@ -458,7 +459,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
|
||||
st.st_rdev != udev_device_get_devnum(d))
|
||||
continue;
|
||||
|
||||
- swap_add_one(m, p, device, prio, set_flags);
|
||||
+ swap_setup_unit(m, p, device, prio, set_flags);
|
||||
}
|
||||
|
||||
return r;
|
||||
@@ -1084,15 +1085,17 @@ static int swap_load_proc_swaps(Manager *m, bool set_flags) {
|
||||
if (k == EOF)
|
||||
break;
|
||||
|
||||
- log_warning("Failed to parse /proc/swaps:%u", i);
|
||||
+ log_warning("Failed to parse /proc/swaps:%u.", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
d = cunescape(dev);
|
||||
if (!d)
|
||||
- return -ENOMEM;
|
||||
+ return log_oom();
|
||||
+
|
||||
+ device_found_node(m, d, true, DEVICE_FOUND_SWAP, set_flags);
|
||||
|
||||
- k = swap_process_new_swap(m, d, prio, set_flags);
|
||||
+ k = swap_process_new(m, d, prio, set_flags);
|
||||
if (k < 0)
|
||||
r = k;
|
||||
}
|
||||
@@ -1144,6 +1147,9 @@ static int swap_dispatch_io(sd_event_source *source, int fd, uint32_t revents, v
|
||||
break;
|
||||
}
|
||||
|
||||
+ if (swap->what)
|
||||
+ device_found_node(m, swap->what, false, DEVICE_FOUND_SWAP, true);
|
||||
+
|
||||
} else if (swap->just_activated) {
|
||||
|
||||
/* New swap entry */
|
||||
@@ -1291,7 +1297,7 @@ fail:
|
||||
return r;
|
||||
}
|
||||
|
||||
-int swap_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
+int swap_process_device_new(Manager *m, struct udev_device *dev) {
|
||||
struct udev_list_entry *item = NULL, *first = NULL;
|
||||
_cleanup_free_ char *e = NULL;
|
||||
const char *dn;
|
||||
@@ -1334,7 +1340,7 @@ int swap_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
return r;
|
||||
}
|
||||
|
||||
-int swap_process_removed_device(Manager *m, struct udev_device *dev) {
|
||||
+int swap_process_device_remove(Manager *m, struct udev_device *dev) {
|
||||
const char *dn;
|
||||
int r = 0;
|
||||
Swap *s;
|
||||
diff --git a/src/core/swap.h b/src/core/swap.h
|
||||
index c36c6f2..5de8c20 100644
|
||||
--- a/src/core/swap.h
|
||||
+++ b/src/core/swap.h
|
||||
@@ -115,8 +115,8 @@ struct Swap {
|
||||
|
||||
extern const UnitVTable swap_vtable;
|
||||
|
||||
-int swap_process_new_device(Manager *m, struct udev_device *dev);
|
||||
-int swap_process_removed_device(Manager *m, struct udev_device *dev);
|
||||
+int swap_process_device_new(Manager *m, struct udev_device *dev);
|
||||
+int swap_process_device_remove(Manager *m, struct udev_device *dev);
|
||||
|
||||
const char* swap_state_to_string(SwapState i) _const_;
|
||||
SwapState swap_state_from_string(const char *s) _pure_;
|
||||
diff --git a/src/core/unit.c b/src/core/unit.c
|
||||
index 63ccd67..7cd7043 100644
|
||||
--- a/src/core/unit.c
|
||||
+++ b/src/core/unit.c
|
||||
@@ -2834,7 +2834,6 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
|
||||
return -ENOMEM;
|
||||
|
||||
r = manager_load_unit(u->manager, e, NULL, NULL, &device);
|
||||
-
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
--
|
||||
2.1.4
|
||||
|
@ -1,5 +1,11 @@
|
||||
--- systemd-210/shell-completion/bash/systemctl.in
|
||||
+++ systemd-210/shell-completion/bash/systemctl.in 2014-08-20 15:01:04.502736981 +0000
|
||||
---
|
||||
shell-completion/bash/systemctl.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-221/shell-completion/bash/systemctl.in
|
||||
===================================================================
|
||||
--- systemd-221.orig/shell-completion/bash/systemctl.in
|
||||
+++ systemd-221/shell-completion/bash/systemctl.in
|
||||
@@ -43,7 +43,7 @@ __filter_units_by_property () {
|
||||
local units=("$@")
|
||||
local props
|
||||
|
@ -8,12 +8,14 @@ is used, the XDG_RUNTIME_DIR will not be clobbered by the new uid.
|
||||
This belongs to BNC#852015 and also to BNC#855160
|
||||
|
||||
---
|
||||
pam_systemd.c | 19 +++++++++++++++++++
|
||||
src/login/pam_systemd.c | 19 +++++++++++++++++++
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
--- systemd-209/src/login/pam_systemd.c
|
||||
+++ systemd-209/src/login/pam_systemd.c 2014-02-26 14:31:30.158235525 +0000
|
||||
@@ -447,6 +447,25 @@ _public_ PAM_EXTERN int pam_sm_open_sess
|
||||
Index: systemd-221/src/login/pam_systemd.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/login/pam_systemd.c
|
||||
+++ systemd-221/src/login/pam_systemd.c
|
||||
@@ -445,6 +445,25 @@ _public_ PAM_EXTERN int pam_sm_open_sess
|
||||
r = export_legacy_dbus_address(handle, pw->pw_uid, runtime_path);
|
||||
if (r != PAM_SUCCESS)
|
||||
return r;
|
||||
|
@ -1,5 +1,11 @@
|
||||
--- systemd-208/man/custom-man.xsl
|
||||
+++ systemd-208/man/custom-man.xsl 2013-10-21 09:23:31.030735259 +0000
|
||||
---
|
||||
man/custom-man.xsl | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: systemd-221/man/custom-man.xsl
|
||||
===================================================================
|
||||
--- systemd-221.orig/man/custom-man.xsl
|
||||
+++ systemd-221/man/custom-man.xsl
|
||||
@@ -61,4 +61,7 @@
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:template>
|
||||
|
@ -2,9 +2,15 @@
|
||||
| Belongs to bnc#849071 that is do not install console-shell.service
|
||||
| in any system target as this will cause automatic poweroff at boot.
|
||||
|
|
||||
--- systemd-208/units/console-shell.service.m4.in
|
||||
+++ systemd-208/units/console-shell.service.m4.in 2013-11-06 09:35:37.958693570 +0000
|
||||
@@ -26,6 +26,3 @@ StandardError=inherit
|
||||
---
|
||||
units/console-shell.service.m4.in | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
Index: systemd-221/units/console-shell.service.m4.in
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/console-shell.service.m4.in
|
||||
+++ systemd-221/units/console-shell.service.m4.in
|
||||
@@ -28,6 +28,3 @@ StandardError=inherit
|
||||
KillMode=process
|
||||
IgnoreSIGPIPE=no
|
||||
SendSIGHUP=yes
|
||||
|
@ -13,10 +13,10 @@ No word on compression…
|
||||
src/journal/journald-server.c | 34 ++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 34 insertions(+)
|
||||
|
||||
Index: systemd/src/journal/journald-server.c
|
||||
Index: systemd-221/src/journal/journald-server.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/journal/journald-server.c
|
||||
+++ systemd/src/journal/journald-server.c
|
||||
--- systemd-221.orig/src/journal/journald-server.c
|
||||
+++ systemd-221/src/journal/journald-server.c
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <sys/signalfd.h>
|
||||
@ -25,7 +25,7 @@ Index: systemd/src/journal/journald-server.c
|
||||
#include <linux/sockios.h>
|
||||
#include <sys/statvfs.h>
|
||||
#include <sys/mman.h>
|
||||
@@ -917,6 +918,38 @@ finish:
|
||||
@@ -918,6 +919,38 @@ finish:
|
||||
dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid);
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ Index: systemd/src/journal/journald-server.c
|
||||
|
||||
static int system_journal_open(Server *s, bool flush_requested) {
|
||||
int r;
|
||||
@@ -946,6 +979,7 @@ static int system_journal_open(Server *s
|
||||
@@ -947,6 +980,7 @@ static int system_journal_open(Server *s
|
||||
|
||||
fn = strjoina("/var/log/journal/", ids);
|
||||
(void) mkdir(fn, 0755);
|
||||
|
@ -12,10 +12,10 @@
|
||||
shell-completion/bash/udevadm | 6 +++++-
|
||||
11 files changed, 70 insertions(+), 11 deletions(-)
|
||||
|
||||
Index: systemd/shell-completion/bash/coredumpctl
|
||||
Index: systemd-221/shell-completion/bash/coredumpctl
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/coredumpctl
|
||||
+++ systemd/shell-completion/bash/coredumpctl
|
||||
--- systemd-221.orig/shell-completion/bash/coredumpctl
|
||||
+++ systemd-221/shell-completion/bash/coredumpctl
|
||||
@@ -44,6 +44,10 @@ _coredumpctl() {
|
||||
[DUMP]='dump gdb'
|
||||
)
|
||||
@ -33,10 +33,10 @@ Index: systemd/shell-completion/bash/coredumpctl
|
||||
|
||||
-complete -F _coredumpctl coredumpctl
|
||||
+complete -o default -o bashdefault -F _coredumpctl coredumpctl
|
||||
Index: systemd/shell-completion/bash/hostnamectl
|
||||
Index: systemd-221/shell-completion/bash/hostnamectl
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/hostnamectl
|
||||
+++ systemd/shell-completion/bash/hostnamectl
|
||||
--- systemd-221.orig/shell-completion/bash/hostnamectl
|
||||
+++ systemd-221/shell-completion/bash/hostnamectl
|
||||
@@ -30,6 +30,10 @@ _hostnamectl() {
|
||||
local OPTS='-h --help --version --transient --static --pretty
|
||||
--no-ask-password -H --host --machine'
|
||||
@ -54,10 +54,10 @@ Index: systemd/shell-completion/bash/hostnamectl
|
||||
|
||||
-complete -F _hostnamectl hostnamectl
|
||||
+complete -o default -o bashdefault -F _hostnamectl hostnamectl
|
||||
Index: systemd/shell-completion/bash/journalctl
|
||||
Index: systemd-221/shell-completion/bash/journalctl
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/journalctl
|
||||
+++ systemd/shell-completion/bash/journalctl
|
||||
--- systemd-221.orig/shell-completion/bash/journalctl
|
||||
+++ systemd-221/shell-completion/bash/journalctl
|
||||
@@ -55,6 +55,10 @@ _journalctl() {
|
||||
--root --machine'
|
||||
)
|
||||
@ -75,10 +75,10 @@ Index: systemd/shell-completion/bash/journalctl
|
||||
|
||||
-complete -F _journalctl journalctl
|
||||
+complete -o default -o bashdefault -F _journalctl journalctl
|
||||
Index: systemd/shell-completion/bash/kernel-install
|
||||
Index: systemd-221/shell-completion/bash/kernel-install
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/kernel-install
|
||||
+++ systemd/shell-completion/bash/kernel-install
|
||||
--- systemd-221.orig/shell-completion/bash/kernel-install
|
||||
+++ systemd-221/shell-completion/bash/kernel-install
|
||||
@@ -18,11 +18,22 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
@ -108,10 +108,10 @@ Index: systemd/shell-completion/bash/kernel-install
|
||||
|
||||
-complete -F _kernel_install kernel-install
|
||||
+complete -o default -o bashdefault -F _kernel_install kernel-install
|
||||
Index: systemd/shell-completion/bash/localectl
|
||||
Index: systemd-221/shell-completion/bash/localectl
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/localectl
|
||||
+++ systemd/shell-completion/bash/localectl
|
||||
--- systemd-221.orig/shell-completion/bash/localectl
|
||||
+++ systemd-221/shell-completion/bash/localectl
|
||||
@@ -36,6 +36,10 @@ _localectl() {
|
||||
local OPTS='-h --help --version --no-convert --no-pager --no-ask-password
|
||||
-H --host --machine'
|
||||
@ -129,10 +129,10 @@ Index: systemd/shell-completion/bash/localectl
|
||||
|
||||
-complete -F _localectl localectl
|
||||
+complete -o default -o bashdefault -F _localectl localectl
|
||||
Index: systemd/shell-completion/bash/loginctl
|
||||
Index: systemd-221/shell-completion/bash/loginctl
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/loginctl
|
||||
+++ systemd/shell-completion/bash/loginctl
|
||||
--- systemd-221.orig/shell-completion/bash/loginctl
|
||||
+++ systemd-221/shell-completion/bash/loginctl
|
||||
@@ -38,6 +38,10 @@ _loginctl () {
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s --machine'
|
||||
)
|
||||
@ -150,12 +150,12 @@ Index: systemd/shell-completion/bash/loginctl
|
||||
|
||||
-complete -F _loginctl loginctl
|
||||
+complete -o default -o bashdefault -F _loginctl loginctl
|
||||
Index: systemd/shell-completion/bash/systemctl.in
|
||||
Index: systemd-221/shell-completion/bash/systemctl.in
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/systemctl.in
|
||||
+++ systemd/shell-completion/bash/systemctl.in
|
||||
--- systemd-221.orig/shell-completion/bash/systemctl.in
|
||||
+++ systemd-221/shell-completion/bash/systemctl.in
|
||||
@@ -96,6 +96,10 @@ _systemctl () {
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root'
|
||||
)
|
||||
|
||||
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
|
||||
@ -165,16 +165,16 @@ Index: systemd/shell-completion/bash/systemctl.in
|
||||
if __contains_word "--user" ${COMP_WORDS[*]}; then
|
||||
mode=--user
|
||||
else
|
||||
@@ -264,4 +268,4 @@ _systemctl () {
|
||||
@@ -268,4 +272,4 @@ _systemctl () {
|
||||
return 0
|
||||
}
|
||||
|
||||
-complete -F _systemctl systemctl
|
||||
+complete -o default -o bashdefault -F _systemctl systemctl
|
||||
Index: systemd/shell-completion/bash/systemd-analyze
|
||||
Index: systemd-221/shell-completion/bash/systemd-analyze
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/systemd-analyze
|
||||
+++ systemd/shell-completion/bash/systemd-analyze
|
||||
--- systemd-221.orig/shell-completion/bash/systemd-analyze
|
||||
+++ systemd-221/shell-completion/bash/systemd-analyze
|
||||
@@ -47,6 +47,10 @@ _systemd_analyze() {
|
||||
[VERIFY]='verify'
|
||||
)
|
||||
@ -192,10 +192,10 @@ Index: systemd/shell-completion/bash/systemd-analyze
|
||||
|
||||
-complete -F _systemd_analyze systemd-analyze
|
||||
+complete -o default -o bashdefault -F _systemd_analyze systemd-analyze
|
||||
Index: systemd/shell-completion/bash/systemd-run
|
||||
Index: systemd-221/shell-completion/bash/systemd-run
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/systemd-run
|
||||
+++ systemd/shell-completion/bash/systemd-run
|
||||
--- systemd-221.orig/shell-completion/bash/systemd-run
|
||||
+++ systemd-221/shell-completion/bash/systemd-run
|
||||
@@ -17,6 +17,13 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
@ -228,10 +228,10 @@ Index: systemd/shell-completion/bash/systemd-run
|
||||
|
||||
-complete -F _systemd_run systemd-run
|
||||
+complete -o default -o bashdefault -F _systemd_run systemd-run
|
||||
Index: systemd/shell-completion/bash/timedatectl
|
||||
Index: systemd-221/shell-completion/bash/timedatectl
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/timedatectl
|
||||
+++ systemd/shell-completion/bash/timedatectl
|
||||
--- systemd-221.orig/shell-completion/bash/timedatectl
|
||||
+++ systemd-221/shell-completion/bash/timedatectl
|
||||
@@ -30,6 +30,10 @@ _timedatectl() {
|
||||
local OPTS='-h --help --version --adjust-system-clock --no-pager
|
||||
--no-ask-password -H --host --machine'
|
||||
@ -249,10 +249,10 @@ Index: systemd/shell-completion/bash/timedatectl
|
||||
|
||||
-complete -F _timedatectl timedatectl
|
||||
+complete -o default -o bashdefault -F _timedatectl timedatectl
|
||||
Index: systemd/shell-completion/bash/udevadm
|
||||
Index: systemd-221/shell-completion/bash/udevadm
|
||||
===================================================================
|
||||
--- systemd.orig/shell-completion/bash/udevadm
|
||||
+++ systemd/shell-completion/bash/udevadm
|
||||
--- systemd-221.orig/shell-completion/bash/udevadm
|
||||
+++ systemd-221/shell-completion/bash/udevadm
|
||||
@@ -36,6 +36,10 @@ _udevadm() {
|
||||
|
||||
local verbs=(info trigger settle control monitor hwdb test-builtin test)
|
||||
|
@ -25,11 +25,11 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
src/udev/udev-builtin-path_id.c | 53 ++++++++++++++++++++++++++++++----------
|
||||
1 file changed, 41 insertions(+), 12 deletions(-)
|
||||
|
||||
Index: systemd-218/src/udev/udev-builtin-path_id.c
|
||||
Index: systemd-221/src/udev/udev-builtin-path_id.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/udev-builtin-path_id.c
|
||||
+++ systemd-218/src/udev/udev-builtin-path_id.c
|
||||
@@ -426,6 +426,46 @@ static struct udev_device *handle_scsi_h
|
||||
--- systemd-221.orig/src/udev/udev-builtin-path_id.c
|
||||
+++ systemd-221/src/udev/udev-builtin-path_id.c
|
||||
@@ -447,6 +447,46 @@ static struct udev_device *handle_scsi_h
|
||||
return parent;
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ Index: systemd-218/src/udev/udev-builtin-path_id.c
|
||||
static struct udev_device *handle_scsi(struct udev_device *parent, char **path, bool *supported_parent) {
|
||||
const char *devtype;
|
||||
const char *name;
|
||||
@@ -465,19 +505,8 @@ static struct udev_device *handle_scsi(s
|
||||
@@ -486,19 +526,8 @@ static struct udev_device *handle_scsi(s
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -4,12 +4,14 @@ Subject: rules create by id scsi links for ATA devices
|
||||
|
||||
Re-enable creation of by-id scsi links for ATA devices. (bnc#769002)
|
||||
---
|
||||
rules/60-persistent-storage.rules | 4 ++++
|
||||
rules/60-persistent-storage.rules | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- systemd-206.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd-206/rules/60-persistent-storage.rules
|
||||
@@ -42,6 +42,10 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk",
|
||||
Index: systemd-221/rules/60-persistent-storage.rules
|
||||
===================================================================
|
||||
--- systemd-221.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd-221/rules/60-persistent-storage.rules
|
||||
@@ -36,6 +36,10 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk",
|
||||
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
|
||||
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
|
||||
|
||||
@ -17,6 +19,6 @@ Re-enable creation of by-id scsi links for ATA devices. (bnc#769002)
|
||||
+KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
|
||||
+KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"
|
||||
+
|
||||
# firewire
|
||||
# FireWire
|
||||
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
|
||||
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
|
||||
|
@ -7,16 +7,16 @@ udevd race for netlink events (bnc#774646)
|
||||
src/udev/udevd.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
Index: systemd-218/src/udev/udevd.c
|
||||
Index: systemd-221/src/udev/udevd.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/udevd.c
|
||||
+++ systemd-218/src/udev/udevd.c
|
||||
@@ -1468,6 +1468,8 @@ int main(int argc, char *argv[]) {
|
||||
dev = udev_monitor_receive_device(monitor);
|
||||
if (dev != NULL) {
|
||||
udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC));
|
||||
+ if (rules == NULL)
|
||||
+ rules = udev_rules_new(udev, arg_resolve_names);
|
||||
if (event_queue_insert(dev) < 0)
|
||||
udev_device_unref(dev);
|
||||
}
|
||||
--- systemd-221.orig/src/udev/udevd.c
|
||||
+++ systemd-221/src/udev/udevd.c
|
||||
@@ -917,6 +917,8 @@ static int on_uevent(sd_event_source *s,
|
||||
dev = udev_monitor_receive_device(manager->monitor);
|
||||
if (dev) {
|
||||
udev_device_ensure_usec_initialized(dev, NULL);
|
||||
+ if (manager->rules == NULL)
|
||||
+ manager->rules = udev_rules_new(manager->udev, arg_resolve_names);
|
||||
r = event_queue_insert(manager, dev);
|
||||
if (r < 0)
|
||||
udev_device_unref(dev);
|
||||
|
@ -7,10 +7,10 @@ cdrom_id: created links for the default cd/dvd drive (bnc#783054).
|
||||
rules/60-cdrom_id.rules | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd/rules/60-cdrom_id.rules
|
||||
Index: systemd-221/rules/60-cdrom_id.rules
|
||||
===================================================================
|
||||
--- systemd.orig/rules/60-cdrom_id.rules
|
||||
+++ systemd/rules/60-cdrom_id.rules
|
||||
--- systemd-221.orig/rules/60-cdrom_id.rules
|
||||
+++ systemd-221/rules/60-cdrom_id.rules
|
||||
@@ -20,6 +20,9 @@ IMPORT{program}="cdrom_id --lock-media $
|
||||
# stale mounts after ejecting
|
||||
ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0"
|
||||
|
@ -13,11 +13,11 @@ Port the patch of Robert to systemd v210 and test it out.
|
||||
1 file changed, 37 insertions(+), 4 deletions(-)
|
||||
|
||||
|
||||
Index: systemd-218/src/udev/udev-event.c
|
||||
Index: systemd-221/src/udev/udev-event.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/udev-event.c
|
||||
+++ systemd-218/src/udev/udev-event.c
|
||||
@@ -767,20 +767,53 @@ out:
|
||||
--- systemd-221.orig/src/udev/udev-event.c
|
||||
+++ systemd-221/src/udev/udev-event.c
|
||||
@@ -796,20 +796,53 @@ out:
|
||||
static int rename_netif(struct udev_event *event) {
|
||||
struct udev_device *dev = event->dev;
|
||||
char name[IFNAMSIZ];
|
||||
|
@ -1,5 +1,27 @@
|
||||
--- systemd-210/rules/80-hotplug-cpu-mem.rules
|
||||
+++ systemd-210/rules/80-hotplug-cpu-mem.rules 2014-05-21 15:47:01.885605543 +0000
|
||||
---
|
||||
Makefile.am | 4 ++++
|
||||
rules/80-hotplug-cpu-mem.rules | 12 ++++++++++++
|
||||
2 files changed, 16 insertions(+)
|
||||
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -3841,6 +3841,10 @@ dist_udevrules_DATA += \
|
||||
rules/73-seat-numlock.rules
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
+dist_udevrules_DATA += \
|
||||
+ rules/80-hotplug-cpu-mem.rules
|
||||
+
|
||||
+# ------------------------------------------------------------------------------
|
||||
mtd_probe_SOURCES = \
|
||||
src/udev/mtd_probe/mtd_probe.c \
|
||||
src/udev/mtd_probe/mtd_probe.h \
|
||||
Index: systemd-221/rules/80-hotplug-cpu-mem.rules
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-221/rules/80-hotplug-cpu-mem.rules
|
||||
@@ -0,0 +1,12 @@
|
||||
+# do not edit this file, it will be overwritten on update
|
||||
+
|
||||
@ -13,16 +35,3 @@
|
||||
+
|
||||
+#
|
||||
+TAG=="tmpfs", RUN+="/usr/lib/udev/remount-tmpfs"
|
||||
--- systemd-210/Makefile.am
|
||||
+++ systemd-210/Makefile.am
|
||||
@@ -2480,6 +2480,10 @@ dist_udevrules_DATA += \
|
||||
rules/73-seat-numlock.rules
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
+dist_udevrules_DATA += \
|
||||
+ rules/80-hotplug-cpu-mem.rules
|
||||
+
|
||||
+# ------------------------------------------------------------------------------
|
||||
if ENABLE_GUDEV
|
||||
if ENABLE_GTK_DOC
|
||||
SUBDIRS += \
|
||||
|
@ -7,13 +7,13 @@ If any devices are marked with 'SYSTEMD_READY=0' then
|
||||
we shouldn't run any btrfs check on them.
|
||||
|
||||
---
|
||||
rules/64-btrfs.rules | 1 +
|
||||
rules/64-btrfs.rules | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/rules/64-btrfs.rules b/rules/64-btrfs.rules
|
||||
index fe01001..57631bc 100644
|
||||
--- a/rules/64-btrfs.rules
|
||||
+++ b/rules/64-btrfs.rules
|
||||
Index: systemd-221/rules/64-btrfs.rules
|
||||
===================================================================
|
||||
--- systemd-221.orig/rules/64-btrfs.rules
|
||||
+++ systemd-221/rules/64-btrfs.rules
|
||||
@@ -3,6 +3,7 @@
|
||||
SUBSYSTEM!="block", GOTO="btrfs_end"
|
||||
ACTION=="remove", GOTO="btrfs_end"
|
||||
@ -22,6 +22,3 @@ index fe01001..57631bc 100644
|
||||
|
||||
# let the kernel know about this btrfs filesystem, and check if it is complete
|
||||
IMPORT{builtin}="btrfs ready $devnode"
|
||||
--
|
||||
1.8.1.4
|
||||
|
||||
|
@ -10,15 +10,15 @@ persistent symlinks to that device.
|
||||
Otherwise systemd will get confused about which device to use.
|
||||
|
||||
---
|
||||
rules/60-persistent-storage.rules | 7 +++++--
|
||||
rules/60-persistent-storage.rules | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
|
||||
index 1208bd3..fd5bedd 100644
|
||||
--- a/rules/60-persistent-storage.rules
|
||||
+++ b/rules/60-persistent-storage.rules
|
||||
@@ -39,8 +39,8 @@ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin
|
||||
# scsi devices
|
||||
Index: systemd-221/rules/60-persistent-storage.rules
|
||||
===================================================================
|
||||
--- systemd-221.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd-221/rules/60-persistent-storage.rules
|
||||
@@ -33,8 +33,8 @@ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!
|
||||
# SCSI devices
|
||||
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"
|
||||
KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss"
|
||||
-KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
|
||||
@ -28,7 +28,7 @@ index 1208bd3..fd5bedd 100644
|
||||
|
||||
# scsi compat links for ATA devices
|
||||
KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
|
||||
@@ -70,6 +70,9 @@ KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DAT
|
||||
@@ -66,6 +66,9 @@ KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!=
|
||||
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \
|
||||
IMPORT{builtin}="blkid --noraid"
|
||||
|
||||
@ -38,6 +38,3 @@ index 1208bd3..fd5bedd 100644
|
||||
# probe filesystem metadata of disks
|
||||
KERNEL!="sr*", IMPORT{builtin}="blkid"
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
||||
|
@ -1,6 +1,12 @@
|
||||
--- systemd-210/rules/42-usb-hid-pm.rules.old 2014-04-23 10:54:31.694485615 +0200
|
||||
+++ systemd-210/rules/42-usb-hid-pm.rules 2014-04-23 10:55:21.969423056 +0200
|
||||
@@ -22,8 +22,6 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{id
|
||||
---
|
||||
rules/42-usb-hid-pm.rules | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
Index: systemd-221/rules/42-usb-hid-pm.rules
|
||||
===================================================================
|
||||
--- systemd-221.orig/rules/42-usb-hid-pm.rules
|
||||
+++ systemd-221/rules/42-usb-hid-pm.rules
|
||||
@@ -19,8 +19,6 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{id
|
||||
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="413c", ATTR{idProduct}=="0000", TEST=="power/control", ATTR{power/control}="auto"
|
||||
|
||||
# IBM remote access
|
||||
|
@ -12,21 +12,18 @@ References: bnc#881942
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
---
|
||||
rules/99-systemd.rules.in | 1 +
|
||||
rules/99-systemd.rules.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
|
||||
index db72373..11ee262 100644
|
||||
--- a/rules/99-systemd.rules.in
|
||||
+++ b/rules/99-systemd.rules.in
|
||||
@@ -11,6 +11,7 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270
|
||||
|
||||
Index: systemd-221/rules/99-systemd.rules.in
|
||||
===================================================================
|
||||
--- systemd-221.orig/rules/99-systemd.rules.in
|
||||
+++ systemd-221/rules/99-systemd.rules.in
|
||||
@@ -10,6 +10,7 @@ ACTION=="remove", GOTO="systemd_end"
|
||||
SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd"
|
||||
KERNEL=="vport*", TAG+="systemd"
|
||||
|
||||
+SUBSYSTEM=="block", KERNEL!="ram*", ENV{SYSTEMD_READY}=="0", GOTO="systemd_end"
|
||||
SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd"
|
||||
SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
|
||||
|
||||
--
|
||||
1.8.4.5
|
||||
+SUBSYSTEM=="block", ENV{SYSTEMD_READY}=="0", GOTO="systemd_end"
|
||||
SUBSYSTEM=="block", TAG+="systemd"
|
||||
SUBSYSTEM=="block", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
|
||||
|
||||
|
@ -1,8 +1,14 @@
|
||||
Exclude cd/dvd as well (bnc#882714)
|
||||
|
||||
--- systemd-210/src/udev/udevd.c
|
||||
+++ systemd-210/src/udev/udevd.c 2014-06-18 12:53:34.454235577 +0000
|
||||
@@ -744,7 +744,8 @@ static int synthesize_change(struct udev
|
||||
---
|
||||
src/udev/udevd.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-221/src/udev/udevd.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/udev/udevd.c
|
||||
+++ systemd-221/src/udev/udevd.c
|
||||
@@ -1022,7 +1022,8 @@ static int synthesize_change(struct udev
|
||||
|
||||
if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
|
||||
streq_ptr("disk", udev_device_get_devtype(dev)) &&
|
||||
|
@ -29,8 +29,10 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
||||
rules/64-btrfs.rules | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/rules/64-btrfs.rules
|
||||
+++ b/rules/64-btrfs.rules
|
||||
Index: systemd-221/rules/64-btrfs.rules
|
||||
===================================================================
|
||||
--- systemd-221.orig/rules/64-btrfs.rules
|
||||
+++ systemd-221/rules/64-btrfs.rules
|
||||
@@ -6,7 +6,8 @@ ENV{ID_FS_TYPE}!="btrfs", GOTO="btrfs_en
|
||||
ENV{SYSTEMD_READY}=="0", GOTO="btrfs_end"
|
||||
|
||||
|
@ -1,11 +1,15 @@
|
||||
Index: systemd-210/rules/50-udev-default.rules
|
||||
---
|
||||
rules/50-udev-default.rules | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
Index: systemd-221/rules/50-udev-default.rules
|
||||
===================================================================
|
||||
--- systemd-210.orig/rules/50-udev-default.rules
|
||||
+++ systemd-210/rules/50-udev-default.rules
|
||||
@@ -66,4 +66,6 @@ KERNEL=="tun", MODE="0666", OPTIONS+="st
|
||||
--- systemd-221.orig/rules/50-udev-default.rules
|
||||
+++ systemd-221/rules/50-udev-default.rules
|
||||
@@ -74,4 +74,6 @@ KERNEL=="tun", MODE="0666", OPTIONS+="st
|
||||
|
||||
KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
|
||||
|
||||
+KERNEL=="genwqe*", MODE="0666"
|
||||
+
|
||||
LABEL="default_permissions_end"
|
||||
LABEL="default_end"
|
||||
|
@ -18,11 +18,11 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
||||
src/udev/scsi_id/scsi_serial.c | 19 +++++++++++++------
|
||||
4 files changed, 32 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: systemd/rules/60-persistent-storage.rules
|
||||
Index: systemd-221/rules/60-persistent-storage.rules
|
||||
===================================================================
|
||||
--- systemd.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd/rules/60-persistent-storage.rules
|
||||
@@ -46,6 +46,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par
|
||||
--- systemd-221.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd-221/rules/60-persistent-storage.rules
|
||||
@@ -40,6 +40,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par
|
||||
KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
|
||||
KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"
|
||||
|
||||
@ -30,13 +30,13 @@ Index: systemd/rules/60-persistent-storage.rules
|
||||
+KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --truncated-serial --whitelisted --replace-whitespace -p0x80 -d$tempnode", RESULT=="?*", ENV{ID_SCSI_COMPAT_TRUNCATED}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT_TRUNCATED}"
|
||||
+KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT_TRUNCATED}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT_TRUNCATED}-part%n"
|
||||
+
|
||||
# firewire
|
||||
# FireWire
|
||||
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
|
||||
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
|
||||
Index: systemd/src/udev/scsi_id/scsi_id.c
|
||||
Index: systemd-221/src/udev/scsi_id/scsi_id.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/udev/scsi_id/scsi_id.c
|
||||
+++ systemd/src/udev/scsi_id/scsi_id.c
|
||||
--- systemd-221.orig/src/udev/scsi_id/scsi_id.c
|
||||
+++ systemd-221/src/udev/scsi_id/scsi_id.c
|
||||
@@ -43,6 +43,7 @@ static const struct option options[] = {
|
||||
{ "replace-whitespace", no_argument, NULL, 'u' },
|
||||
{ "sg-version", required_argument, NULL, 's' },
|
||||
@ -94,11 +94,11 @@ Index: systemd/src/udev/scsi_id/scsi_id.c
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("%s\n", serial_str);
|
||||
goto out;
|
||||
Index: systemd/src/udev/scsi_id/scsi_id.h
|
||||
Index: systemd-221/src/udev/scsi_id/scsi_id.h
|
||||
===================================================================
|
||||
--- systemd.orig/src/udev/scsi_id/scsi_id.h
|
||||
+++ systemd/src/udev/scsi_id/scsi_id.h
|
||||
@@ -43,6 +43,7 @@ struct scsi_id_device {
|
||||
--- systemd-221.orig/src/udev/scsi_id/scsi_id.h
|
||||
+++ systemd-221/src/udev/scsi_id/scsi_id.h
|
||||
@@ -45,6 +45,7 @@ struct scsi_id_device {
|
||||
char kernel[64];
|
||||
char serial[MAX_SERIAL_LEN];
|
||||
char serial_short[MAX_SERIAL_LEN];
|
||||
@ -106,11 +106,11 @@ Index: systemd/src/udev/scsi_id/scsi_id.h
|
||||
int use_sg;
|
||||
|
||||
/* Always from page 0x80 e.g. 'B3G1P8500RWT' - may not be unique */
|
||||
Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
Index: systemd-221/src/udev/scsi_id/scsi_serial.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/udev/scsi_id/scsi_serial.c
|
||||
+++ systemd/src/udev/scsi_id/scsi_serial.c
|
||||
@@ -96,7 +96,8 @@ static const char hex_str[]="0123456789a
|
||||
--- systemd-221.orig/src/udev/scsi_id/scsi_serial.c
|
||||
+++ systemd-221/src/udev/scsi_id/scsi_serial.c
|
||||
@@ -97,7 +97,8 @@ static const char hex_str[]="0123456789a
|
||||
|
||||
static int do_scsi_page80_inquiry(struct udev *udev,
|
||||
struct scsi_id_device *dev_scsi, int fd,
|
||||
@ -120,7 +120,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
|
||||
static int sg_err_category_new(struct udev *udev,
|
||||
int scsi_status, int msg_status, int
|
||||
@@ -619,7 +620,7 @@ static int do_scsi_page83_inquiry(struct
|
||||
@@ -620,7 +621,7 @@ static int do_scsi_page83_inquiry(struct
|
||||
unsigned char page_83[SCSI_INQ_BUFF_LEN];
|
||||
|
||||
/* also pick up the page 80 serial number */
|
||||
@ -129,7 +129,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
|
||||
memzero(page_83, SCSI_INQ_BUFF_LEN);
|
||||
retval = scsi_inquiry(udev, dev_scsi, fd, 1, PAGE_83, page_83,
|
||||
@@ -764,7 +765,8 @@ static int do_scsi_page83_prespc3_inquir
|
||||
@@ -765,7 +766,8 @@ static int do_scsi_page83_prespc3_inquir
|
||||
/* Get unit serial number VPD page */
|
||||
static int do_scsi_page80_inquiry(struct udev *udev,
|
||||
struct scsi_id_device *dev_scsi, int fd,
|
||||
@ -139,7 +139,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
{
|
||||
int retval;
|
||||
int ser_ind;
|
||||
@@ -798,9 +800,14 @@ static int do_scsi_page80_inquiry(struct
|
||||
@@ -799,9 +801,14 @@ static int do_scsi_page80_inquiry(struct
|
||||
ser_ind = prepend_vendor_model(udev, dev_scsi, &serial[1]);
|
||||
if (ser_ind < 0)
|
||||
return 1;
|
||||
@ -155,7 +155,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
}
|
||||
if (serial_short != NULL) {
|
||||
memcpy(serial_short, &buf[4], len);
|
||||
@@ -876,7 +883,7 @@ int scsi_get_serial(struct udev *udev,
|
||||
@@ -877,7 +884,7 @@ int scsi_get_serial(struct udev *udev,
|
||||
return 1;
|
||||
|
||||
if (page_code == PAGE_80) {
|
||||
@ -164,7 +164,7 @@ Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
retval = 1;
|
||||
goto completed;
|
||||
} else {
|
||||
@@ -950,7 +957,7 @@ int scsi_get_serial(struct udev *udev,
|
||||
@@ -951,7 +958,7 @@ int scsi_get_serial(struct udev *udev,
|
||||
for (ind = 4; ind <= page0[3] + 3; ind++)
|
||||
if (page0[ind] == PAGE_80)
|
||||
if (!do_scsi_page80_inquiry(udev, dev_scsi, fd,
|
||||
|
@ -3,22 +3,22 @@
|
||||
rules/60-ssd-scheduler.rules | 11 +++++++++++
|
||||
2 files changed, 12 insertions(+)
|
||||
|
||||
Index: systemd/Makefile.am
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -3576,6 +3576,7 @@ dist_udevrules_DATA += \
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -3501,6 +3501,7 @@ dist_udevrules_DATA += \
|
||||
rules/60-persistent-input.rules \
|
||||
rules/60-persistent-alsa.rules \
|
||||
rules/60-persistent-storage.rules \
|
||||
+ rules/60-ssd-scheduler.rules \
|
||||
rules/60-serial.rules \
|
||||
rules/64-btrfs.rules \
|
||||
rules/70-mouse.rules \
|
||||
rules/70-touchpad.rules \
|
||||
Index: systemd/rules/60-ssd-scheduler.rules
|
||||
Index: systemd-221/rules/60-ssd-scheduler.rules
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd/rules/60-ssd-scheduler.rules
|
||||
+++ systemd-221/rules/60-ssd-scheduler.rules
|
||||
@@ -0,0 +1,11 @@
|
||||
+# do not edit this file, it will be overwritten on update
|
||||
+
|
||||
|
@ -5,11 +5,11 @@
|
||||
units/systemd-udev-root-symlink.service.in | 10 ++
|
||||
4 files changed, 96 insertions(+)
|
||||
|
||||
Index: systemd/Makefile.am
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -3862,6 +3862,25 @@ EXTRA_DIST += \
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -3754,6 +3754,25 @@ EXTRA_DIST += \
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
@ -35,10 +35,10 @@ Index: systemd/Makefile.am
|
||||
ata_id_SOURCES = \
|
||||
src/udev/ata_id/ata_id.c
|
||||
|
||||
Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
Index: systemd-221/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
+++ systemd-221/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
@@ -0,0 +1,57 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2014-2015 Robert Milasan <rmilasan@suse.com>
|
||||
@ -97,10 +97,10 @@ Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
+ return errno;
|
||||
+ return 0;
|
||||
+}
|
||||
Index: systemd/units/systemd-udev-root-symlink.service
|
||||
Index: systemd-221/units/systemd-udev-root-symlink.service
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd/units/systemd-udev-root-symlink.service
|
||||
+++ systemd-221/units/systemd-udev-root-symlink.service
|
||||
@@ -0,0 +1,10 @@
|
||||
+[Unit]
|
||||
+Description=Rule generator for /dev/root symlink
|
||||
@ -112,10 +112,10 @@ Index: systemd/units/systemd-udev-root-symlink.service
|
||||
+Type=oneshot
|
||||
+RemainAfterExit=yes
|
||||
+ExecStart=/usr/lib/udev/rootsymlink-generator
|
||||
Index: systemd/units/systemd-udev-root-symlink.service.in
|
||||
Index: systemd-221/units/systemd-udev-root-symlink.service.in
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd/units/systemd-udev-root-symlink.service.in
|
||||
+++ systemd-221/units/systemd-udev-root-symlink.service.in
|
||||
@@ -0,0 +1,10 @@
|
||||
+[Unit]
|
||||
+Description=Rule generator for /dev/root symlink
|
||||
|
@ -2,25 +2,25 @@
|
||||
src/udev/udevd.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-218/src/udev/udevd.c
|
||||
Index: systemd-221/src/udev/udevd.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/udevd.c
|
||||
+++ systemd-218/src/udev/udevd.c
|
||||
@@ -446,7 +446,7 @@ static void event_run(struct event *even
|
||||
--- systemd-221.orig/src/udev/udevd.c
|
||||
+++ systemd-221/src/udev/udevd.c
|
||||
@@ -569,7 +569,7 @@ static void event_run(Manager *manager,
|
||||
|
||||
if (children >= arg_children_max) {
|
||||
if (hashmap_size(manager->workers) >= arg_children_max) {
|
||||
if (arg_children_max > 1)
|
||||
- log_debug("maximum number (%i) of children reached", children);
|
||||
+ log_error("maximum number (%i) of children reached", children);
|
||||
- log_debug("maximum number (%i) of children reached", hashmap_size(manager->workers));
|
||||
+ log_error("maximum number (%i) of children reached", hashmap_size(manager->workers));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1265,7 +1265,7 @@ int main(int argc, char *argv[]) {
|
||||
@@ -1641,7 +1641,7 @@ int main(int argc, char *argv[]) {
|
||||
arg_children_max = 8;
|
||||
|
||||
if (sched_getaffinity(0, sizeof (cpu_set), &cpu_set) == 0) {
|
||||
- arg_children_max += CPU_COUNT(&cpu_set) * 2;
|
||||
- arg_children_max += CPU_COUNT(&cpu_set) * 2;
|
||||
+ arg_children_max += CPU_COUNT(&cpu_set) * 64;
|
||||
}
|
||||
}
|
||||
log_debug("set children_max to %u", arg_children_max);
|
||||
|
||||
log_debug("set children_max to %u", arg_children_max);
|
||||
|
@ -1,8 +1,12 @@
|
||||
Index: systemd-219/units/systemd-networkd.service.in
|
||||
---
|
||||
units/systemd-networkd.service.m4.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: systemd-221/units/systemd-networkd.service.m4.in
|
||||
===================================================================
|
||||
--- systemd-219.orig/units/systemd-networkd.service.in
|
||||
+++ systemd-219/units/systemd-networkd.service.in
|
||||
@@ -29,4 +29,5 @@ WatchdogSec=1min
|
||||
--- systemd-221.orig/units/systemd-networkd.service.m4.in
|
||||
+++ systemd-221/units/systemd-networkd.service.m4.in
|
||||
@@ -34,4 +34,5 @@ WatchdogSec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@ -8,10 +8,10 @@ disable /var/lock/{subsys,lockdev} and change default permissions on
|
||||
tmpfiles.d/legacy.conf | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: systemd-218/tmpfiles.d/legacy.conf
|
||||
Index: systemd-221/tmpfiles.d/legacy.conf
|
||||
===================================================================
|
||||
--- systemd-218.orig/tmpfiles.d/legacy.conf
|
||||
+++ systemd-218/tmpfiles.d/legacy.conf
|
||||
--- systemd-221.orig/tmpfiles.d/legacy.conf
|
||||
+++ systemd-221/tmpfiles.d/legacy.conf
|
||||
@@ -10,13 +10,14 @@
|
||||
# These files are considered legacy and are unnecessary on legacy-free
|
||||
# systems.
|
||||
@ -36,5 +36,5 @@ Index: systemd-218/tmpfiles.d/legacy.conf
|
||||
-d /run/lock/lockdev 0775 root lock -
|
||||
+#d /run/lock/lockdev 0775 root lock -
|
||||
|
||||
# /forcefsck, /fastboot and /forcequotecheck are deprecated in favor of the
|
||||
# /forcefsck, /fastboot and /forcequotacheck are deprecated in favor of the
|
||||
# kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and
|
||||
|
@ -7,19 +7,19 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157)
|
||||
src/sleep/sleep.c | 27 ++++++++++++++++++++++-----
|
||||
1 file changed, 22 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd/src/sleep/sleep.c
|
||||
Index: systemd-221/src/sleep/sleep.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/sleep/sleep.c
|
||||
+++ systemd/src/sleep/sleep.c
|
||||
@@ -24,6 +24,7 @@
|
||||
--- systemd-221.orig/src/sleep/sleep.c
|
||||
+++ systemd-221/src/sleep/sleep.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <getopt.h>
|
||||
+#include <stdlib.h>
|
||||
|
||||
#include "sd-id128.h"
|
||||
#include "sd-messages.h"
|
||||
@@ -36,6 +37,8 @@
|
||||
#include "log.h"
|
||||
@@ -34,6 +35,8 @@
|
||||
#include "def.h"
|
||||
|
||||
static char* arg_verb = NULL;
|
||||
@ -28,7 +28,7 @@ Index: systemd/src/sleep/sleep.c
|
||||
|
||||
static int write_mode(char **modes) {
|
||||
int r = 0;
|
||||
@@ -53,10 +56,6 @@ static int write_mode(char **modes) {
|
||||
@@ -51,10 +54,6 @@ static int write_mode(char **modes) {
|
||||
if (r == 0)
|
||||
r = k;
|
||||
}
|
||||
@ -39,7 +39,7 @@ Index: systemd/src/sleep/sleep.c
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -97,6 +96,8 @@ static int execute(char **modes, char **
|
||||
@@ -95,6 +94,8 @@ static int execute(char **modes, char **
|
||||
int r;
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
|
||||
@ -48,7 +48,7 @@ Index: systemd/src/sleep/sleep.c
|
||||
/* This file is opened first, so that if we hit an error,
|
||||
* we can abort before modifying any state. */
|
||||
f = fopen("/sys/power/state", "we");
|
||||
@@ -107,6 +108,7 @@ static int execute(char **modes, char **
|
||||
@@ -105,6 +106,7 @@ static int execute(char **modes, char **
|
||||
r = write_mode(modes);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@ -56,7 +56,7 @@ Index: systemd/src/sleep/sleep.c
|
||||
|
||||
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments);
|
||||
|
||||
@@ -115,8 +117,10 @@ static int execute(char **modes, char **
|
||||
@@ -113,8 +115,10 @@ static int execute(char **modes, char **
|
||||
LOG_MESSAGE("Suspending system..."),
|
||||
"SLEEP=%s", arg_verb,
|
||||
NULL);
|
||||
@ -68,7 +68,7 @@ Index: systemd/src/sleep/sleep.c
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -156,6 +160,7 @@ static int parse_argv(int argc, char *ar
|
||||
@@ -154,6 +158,7 @@ static int parse_argv(int argc, char *ar
|
||||
};
|
||||
|
||||
int c;
|
||||
@ -76,7 +76,7 @@ Index: systemd/src/sleep/sleep.c
|
||||
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
@@ -193,6 +198,18 @@ static int parse_argv(int argc, char *ar
|
||||
@@ -191,6 +196,18 @@ static int parse_argv(int argc, char *ar
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -4,13 +4,15 @@ Subject: allow multiple sulogin to be started
|
||||
|
||||
allows multiple sulogin instance (bnc#793182).
|
||||
---
|
||||
units/getty@.service.m4 | 1 +
|
||||
units/rescue.target | 1 +
|
||||
units/serial-getty@.service.m4 | 1 +
|
||||
units/getty@.service.m4 | 1 +
|
||||
units/rescue.target | 1 +
|
||||
units/serial-getty@.service.m4 | 1 +
|
||||
3 files changed, 3 insertions(+)
|
||||
|
||||
--- systemd-206.orig/units/getty@.service.m4
|
||||
+++ systemd-206/units/getty@.service.m4
|
||||
Index: systemd-221/units/getty@.service.m4
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/getty@.service.m4
|
||||
+++ systemd-221/units/getty@.service.m4
|
||||
@@ -9,6 +9,7 @@
|
||||
Description=Getty on %I
|
||||
Documentation=man:agetty(8) man:systemd-getty-generator(8)
|
||||
@ -19,8 +21,10 @@ allows multiple sulogin instance (bnc#793182).
|
||||
After=systemd-user-sessions.service plymouth-quit-wait.service
|
||||
m4_ifdef(`HAVE_SYSV_COMPAT',
|
||||
After=rc-local.service
|
||||
--- systemd-206.orig/units/rescue.target
|
||||
+++ systemd-206/units/rescue.target
|
||||
Index: systemd-221/units/rescue.target
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/rescue.target
|
||||
+++ systemd-221/units/rescue.target
|
||||
@@ -10,6 +10,7 @@ Description=Rescue Mode
|
||||
Documentation=man:systemd.special(7)
|
||||
Requires=sysinit.target rescue.service
|
||||
@ -29,8 +33,10 @@ allows multiple sulogin instance (bnc#793182).
|
||||
AllowIsolate=yes
|
||||
|
||||
[Install]
|
||||
--- systemd-206.orig/units/serial-getty@.service.m4
|
||||
+++ systemd-206/units/serial-getty@.service.m4
|
||||
Index: systemd-221/units/serial-getty@.service.m4
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/serial-getty@.service.m4
|
||||
+++ systemd-221/units/serial-getty@.service.m4
|
||||
@@ -10,6 +10,7 @@ Description=Serial Getty on %I
|
||||
Documentation=man:agetty(8) man:systemd-getty-generator(8)
|
||||
Documentation=http://0pointer.de/blog/projects/serial-console.html
|
||||
|
@ -4,14 +4,14 @@ Subject: apply ACL for nvidia device nodes
|
||||
|
||||
set ACL on nvidia devices (bnc#808319).
|
||||
---
|
||||
logind-acl.c | 12 ++++++++++++
|
||||
src/login/logind-acl.c | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
Index: systemd-210/src/login/logind-acl.c
|
||||
Index: systemd-221/src/login/logind-acl.c
|
||||
===================================================================
|
||||
--- systemd-210.orig/src/login/logind-acl.c
|
||||
+++ systemd-210/src/login/logind-acl.c
|
||||
@@ -283,5 +283,17 @@ int devnode_acl_all(struct udev *udev,
|
||||
--- systemd-221.orig/src/login/logind-acl.c
|
||||
+++ systemd-221/src/login/logind-acl.c
|
||||
@@ -285,5 +285,17 @@ int devnode_acl_all(struct udev *udev,
|
||||
r = k;
|
||||
}
|
||||
|
||||
|
@ -5,13 +5,13 @@ Subject: [PATCH] apply ACL for nvidia-uvm device node
|
||||
|
||||
set ACL on nvidia-uvm device (bnc#879767).
|
||||
---
|
||||
src/login/logind-acl.c | 2 ++
|
||||
src/login/logind-acl.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c
|
||||
index 54bc16b..a40af21 100644
|
||||
--- a/src/login/logind-acl.c
|
||||
+++ b/src/login/logind-acl.c
|
||||
Index: systemd-221/src/login/logind-acl.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/login/logind-acl.c
|
||||
+++ systemd-221/src/login/logind-acl.c
|
||||
@@ -295,6 +295,8 @@ int devnode_acl_all(struct udev *udev,
|
||||
if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0)
|
||||
break;
|
||||
@ -21,6 +21,3 @@ index 54bc16b..a40af21 100644
|
||||
}
|
||||
|
||||
return r;
|
||||
--
|
||||
1.8.4.5
|
||||
|
||||
|
@ -1,8 +1,28 @@
|
||||
Nasty bug reported on bnc#867663
|
||||
|
||||
--- systemd-210/src/core/manager.c
|
||||
+++ systemd-210/src/core/manager.c 2014-04-17 13:29:07.366236714 +0000
|
||||
@@ -1780,7 +1780,8 @@ static int manager_dispatch_jobs_in_prog
|
||||
---
|
||||
src/basic/def.h | 2 +-
|
||||
src/core/manager.c | 3 ++-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-221/src/basic/def.h
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/basic/def.h
|
||||
+++ systemd-221/src/basic/def.h
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#define SYSTEMD_CGROUP_CONTROLLER "systemd"
|
||||
|
||||
-#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
|
||||
+#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT,SIGTRAP,SIGSYS
|
||||
#define SIGNALS_IGNORE SIGPIPE
|
||||
|
||||
#define DIGITS "0123456789"
|
||||
Index: systemd-221/src/core/manager.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/core/manager.c
|
||||
+++ systemd-221/src/core/manager.c
|
||||
@@ -1991,7 +1991,8 @@ static int manager_dispatch_jobs_in_prog
|
||||
assert(m);
|
||||
assert(source);
|
||||
|
||||
@ -12,14 +32,3 @@ Nasty bug reported on bnc#867663
|
||||
|
||||
next = now(CLOCK_MONOTONIC) + JOBS_IN_PROGRESS_PERIOD_USEC;
|
||||
r = sd_event_source_set_time(source, next);
|
||||
--- systemd-210/src/shared/def.h
|
||||
+++ systemd-210/src/shared/def.h 2014-04-17 13:47:10.946234983 +0000
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#define SYSTEMD_CGROUP_CONTROLLER "name=systemd"
|
||||
|
||||
-#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
|
||||
+#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT,SIGTRAP,SIGSYS
|
||||
#define SIGNALS_IGNORE SIGPIPE
|
||||
|
||||
#define DIGITS "0123456789"
|
||||
|
@ -7,8 +7,14 @@ later by a shutdown may fail with (journalctl -b -1):
|
||||
which then caused the subsequent fault that umounting the users
|
||||
home directories done by automount are busy.
|
||||
|
||||
--- systemd-210/units/user/systemd-exit.service.in
|
||||
+++ systemd-210/units/user/systemd-exit.service.in 2014-03-25 16:59:20.406235916 +0000
|
||||
---
|
||||
units/user/systemd-exit.service.in | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-221/units/user/systemd-exit.service.in
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/user/systemd-exit.service.in
|
||||
+++ systemd-221/units/user/systemd-exit.service.in
|
||||
@@ -10,8 +10,9 @@ Description=Exit the Session
|
||||
Documentation=man:systemd.special(7)
|
||||
DefaultDependencies=no
|
||||
|
@ -5,6 +5,7 @@ systemd
|
||||
# postun "if [ "$1" == "0" ]; then"
|
||||
# postun "<prefix>%{_sbindir}/pam-config -d --systemd || :"
|
||||
# postun "fi"
|
||||
libgudev-1_0-0
|
||||
libsystemd0
|
||||
libudev1
|
||||
nss-myhostname
|
||||
nss-mymachines
|
||||
|
@ -1,6 +1,11 @@
|
||||
diff -Naur systemd-210/units/rc-local.service.in systemd-210-mod/units/rc-local.service.in
|
||||
--- systemd-210/units/rc-local.service.in 2013-08-13 22:02:52.788756123 +0200
|
||||
+++ systemd-210-mod/units/rc-local.service.in 2014-03-25 08:34:40.317587764 +0100
|
||||
---
|
||||
units/rc-local.service.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-221/units/rc-local.service.in
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/rc-local.service.in
|
||||
+++ systemd-221/units/rc-local.service.in
|
||||
@@ -10,7 +10,7 @@
|
||||
[Unit]
|
||||
Description=@RC_LOCAL_SCRIPT_PATH_START@ Compatibility
|
||||
|
@ -9,8 +9,10 @@ ensure passphrase is handled before starting getty on tty1.
|
||||
units/systemd-ask-password-wall.service.in | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- systemd-206_git201308300826.orig/units/systemd-ask-password-wall.service.in
|
||||
+++ systemd-206_git201308300826/units/systemd-ask-password-wall.service.in
|
||||
Index: systemd-221/units/systemd-ask-password-wall.service.in
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/systemd-ask-password-wall.service.in
|
||||
+++ systemd-221/units/systemd-ask-password-wall.service.in
|
||||
@@ -8,7 +8,8 @@
|
||||
[Unit]
|
||||
Description=Forward Password Requests to Wall
|
||||
|
@ -4,30 +4,28 @@ Subject: ensure shortname is set as hostname (bnc#820213)
|
||||
|
||||
strip hostname so the domain part isn't set as part of the hostname
|
||||
---
|
||||
src/core/hostname-setup.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
src/core/hostname-setup.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
Index: systemd-218/src/core/hostname-setup.c
|
||||
Index: systemd-221/src/core/hostname-setup.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/hostname-setup.c
|
||||
+++ systemd-218/src/core/hostname-setup.c
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "fileio.h"
|
||||
|
||||
static int read_and_strip_hostname(const char *path, char **hn) {
|
||||
- char *s;
|
||||
+ char *s, *domain;
|
||||
--- systemd-221.orig/src/core/hostname-setup.c
|
||||
+++ systemd-221/src/core/hostname-setup.c
|
||||
@@ -34,6 +34,7 @@ int hostname_setup(void) {
|
||||
int r;
|
||||
_cleanup_free_ char *b = NULL;
|
||||
const char *hn;
|
||||
+ char *domain;
|
||||
bool enoent = false;
|
||||
|
||||
assert(path);
|
||||
@@ -49,6 +49,10 @@ static int read_and_strip_hostname(const
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
r = read_hostname_config("/etc/hostname", &b);
|
||||
@@ -46,6 +47,9 @@ int hostname_setup(void) {
|
||||
hn = NULL;
|
||||
} else
|
||||
hn = b;
|
||||
+ /* strip any leftover of a domain name */
|
||||
+ if ((domain = strchr(s, '.')) != NULL)
|
||||
+ if ((domain = strchr(hn, '.')) != NULL)
|
||||
+ *domain = '\0';
|
||||
+
|
||||
*hn = s;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (isempty(hn)) {
|
||||
/* Don't override the hostname if it is already set
|
||||
|
@ -3,14 +3,14 @@ Date: Thu, 23 Aug 2012 11:08:25 +0200
|
||||
Subject: fix support for boot prefixed initscript (bnc#746506)
|
||||
|
||||
---
|
||||
src/systemctl/systemctl.c | 20 +++++++++++++++++++-
|
||||
1 file changed, 19 insertions(+), 1 deletion(-)
|
||||
src/systemctl/systemctl.c | 18 +++++++++++++++++-
|
||||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-218/src/systemctl/systemctl.c
|
||||
Index: systemd-221/src/systemctl/systemctl.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/systemctl/systemctl.c
|
||||
+++ systemd-218/src/systemctl/systemctl.c
|
||||
@@ -5202,8 +5202,26 @@ static int enable_sysv_units(const char
|
||||
--- systemd-221.orig/src/systemctl/systemctl.c
|
||||
+++ systemd-221/src/systemctl/systemctl.c
|
||||
@@ -5165,8 +5165,24 @@ static int enable_sysv_units(const char
|
||||
|
||||
p[strlen(p) - strlen(".service")] = 0;
|
||||
found_sysv = access(p, F_OK) >= 0;
|
||||
@ -27,14 +27,12 @@ Index: systemd-218/src/systemctl/systemctl.c
|
||||
+ return -ENOMEM;
|
||||
+ p[strlen(p) - sizeof(".service") + 1] = 0;
|
||||
+ found_sysv = access(p, F_OK) >= 0;
|
||||
+
|
||||
+ if (!found_sysv) {
|
||||
+ if (!found_sysv)
|
||||
+ continue;
|
||||
+ }
|
||||
+#else
|
||||
continue;
|
||||
+#endif
|
||||
+ }
|
||||
|
||||
log_info("%s is not a native service, redirecting to /sbin/chkconfig.", name);
|
||||
|
||||
if (found_native)
|
||||
log_info("Synchronizing state of %s with SysV init with %s...", name, argv[0]);
|
||||
|
@ -1,36 +1,41 @@
|
||||
From: Frederic Crozat <fcrozat@suse.com>
|
||||
Date: Fri, 19 Aug 2011 15:29:49 +0000
|
||||
Original-From: Frederic Crozat <fcrozat@suse.com>
|
||||
Original-Date: Fri, 19 Aug 2011 15:29:49 +0000
|
||||
Subject: handle disable_caplock and compose_table and kbd_rate
|
||||
References: https://bugzilla.opensuse.org/746595
|
||||
Last-Editor: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Fri Jun 19 21:36:27 CEST 2015
|
||||
|
||||
(bnc#746595)
|
||||
---
|
||||
src/vconsole/vconsole-setup.c | 151 +++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 148 insertions(+), 3 deletions(-)
|
||||
src/vconsole/vconsole-setup.c | 151 ++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 147 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
Index: systemd-221/src/vconsole/vconsole-setup.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/vconsole/vconsole-setup.c
|
||||
+++ systemd-218/src/vconsole/vconsole-setup.c
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "macro.h"
|
||||
--- systemd-221.orig/src/vconsole/vconsole-setup.c
|
||||
+++ systemd-221/src/vconsole/vconsole-setup.c
|
||||
@@ -35,6 +35,8 @@
|
||||
#include "log.h"
|
||||
#include "virt.h"
|
||||
#include "fileio.h"
|
||||
+#include "macro.h"
|
||||
+#include "strv.h"
|
||||
|
||||
static bool is_vconsole(int fd) {
|
||||
unsigned char data[1];
|
||||
@@ -101,8 +102,8 @@ static int enable_utf8(int fd) {
|
||||
#include "process-util.h"
|
||||
#include "terminal-util.h"
|
||||
#include "signal-util.h"
|
||||
@@ -99,8 +101,10 @@ static int enable_utf8(int fd) {
|
||||
return r;
|
||||
}
|
||||
|
||||
-static int keymap_load(const char *vc, const char *map, const char *map_toggle, bool utf8, pid_t *_pid) {
|
||||
-static int keyboard_load_and_wait(const char *vc, const char *map, const char *map_toggle, bool utf8) {
|
||||
- const char *args[8];
|
||||
+static int keymap_load(const char *vc, const char *map, const char *map_toggle, bool utf8, bool disable_capslock, pid_t *_pid) {
|
||||
+static int keyboard_load_and_wait(const char *vc, const char *map,
|
||||
+ const char *map_toggle, bool utf8, bool disable_capslock)
|
||||
+{
|
||||
+ const char *args[9];
|
||||
int i = 0;
|
||||
int i = 0, r;
|
||||
pid_t pid;
|
||||
|
||||
@@ -121,6 +122,8 @@ static int keymap_load(const char *vc, c
|
||||
@@ -117,6 +121,8 @@ static int keyboard_load_and_wait(const
|
||||
args[i++] = map;
|
||||
if (map_toggle)
|
||||
args[i++] = map_toggle;
|
||||
@ -39,23 +44,23 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
args[i++] = NULL;
|
||||
|
||||
pid = fork();
|
||||
@@ -236,11 +239,113 @@ static void font_copy_to_all_vcs(int fd)
|
||||
@@ -246,11 +252,117 @@ static void font_copy_to_all_vcs(int fd)
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef HAVE_SYSV_COMPAT
|
||||
+static int load_compose_table(const char *vc, const char *compose_table, pid_t *_pid) {
|
||||
+static int compose_load_and_wait(const char *vc, const char *compose_table)
|
||||
+{
|
||||
+ const char *args[1024];
|
||||
+ int i = 0, j = 0;
|
||||
+ unsigned int i = 0, j = 0;
|
||||
+ int ret;
|
||||
+ pid_t pid;
|
||||
+ char **strv_compose_table = NULL;
|
||||
+ char *to_free[1024];
|
||||
+
|
||||
+ if (isempty(compose_table)) {
|
||||
+ /* An empty map means no compose table*/
|
||||
+ *_pid = 0;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (isempty(compose_table))
|
||||
+ /* An empty map means no compose table */
|
||||
+ return 1;
|
||||
+
|
||||
+ args[i++] = KBD_LOADKEYS;
|
||||
+ args[i++] = "-q";
|
||||
@ -69,50 +74,51 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
+ char **name;
|
||||
+ char *arg;
|
||||
+
|
||||
+ STRV_FOREACH (name, strv_compose_table) {
|
||||
+ if (streq(*name,"-c") || streq(*name,"clear")) {
|
||||
+ STRV_FOREACH(name, strv_compose_table) {
|
||||
+ if (streq(*name, "-c") || streq(*name, "clear")) {
|
||||
+ compose_clear = true;
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (!compose_loaded) {
|
||||
+ if (compose_clear)
|
||||
+ args[i++] = "-c";
|
||||
+ }
|
||||
+ asprintf(&arg, "compose.%s",*name);
|
||||
+ if (!compose_loaded && compose_clear)
|
||||
+ args[i++] = "-c";
|
||||
+ asprintf(&arg, "compose.%s", *name);
|
||||
+ compose_loaded = true;
|
||||
+ args[i++] = to_free[j++] = arg;
|
||||
+
|
||||
+ if (i >= ELEMENTSOF(args) - 1)
|
||||
+ break;
|
||||
+ }
|
||||
+ strv_free(strv_compose_table);
|
||||
+ }
|
||||
+ args[i++] = NULL;
|
||||
+
|
||||
+ if ((pid = fork()) < 0) {
|
||||
+ log_error("Failed to fork: %m");
|
||||
+ return -errno;
|
||||
+ } else if (pid == 0) {
|
||||
+ pid = fork();
|
||||
+ if (pid < 0)
|
||||
+ return log_error_errno(errno, "Failed to fork: %m");
|
||||
+ if (pid == 0) {
|
||||
+ reset_all_signal_handlers();
|
||||
+ reset_signal_mask();
|
||||
+ execv(args[0], (char **) args);
|
||||
+ _exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+
|
||||
+ *_pid = pid;
|
||||
+
|
||||
+ for (i=0 ; i < j ; i++)
|
||||
+ free (to_free[i]);
|
||||
+
|
||||
+ return 0;
|
||||
+ ret = wait_for_terminate_and_warn(args[0], pid, true);
|
||||
+ for (i = 0; i < j; ++i)
|
||||
+ free(to_free[i]);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ return ret == 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+static int set_kbd_rate(const char *vc, const char *kbd_rate, const char *kbd_delay, pid_t *_pid) {
|
||||
+static int kbdrate_set_and_wait(const char *vc, const char *kbd_rate,
|
||||
+ const char *kbd_delay)
|
||||
+{
|
||||
+ const char *args[7];
|
||||
+ int i = 0;
|
||||
+ int i = 0, ret;
|
||||
+ pid_t pid;
|
||||
+
|
||||
+ if (isempty(kbd_rate) && isempty(kbd_delay)) {
|
||||
+ *_pid = 0;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (isempty(kbd_rate) && isempty(kbd_delay))
|
||||
+ return 1;
|
||||
+
|
||||
+ args[i++] = "/bin/kbdrate";
|
||||
+ if (!isempty(kbd_rate)) {
|
||||
@ -126,16 +132,19 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
+ args[i++] = "-s";
|
||||
+ args[i++] = NULL;
|
||||
+
|
||||
+ if ((pid = fork()) < 0) {
|
||||
+ log_error("Failed to fork: %m");
|
||||
+ return -errno;
|
||||
+ } else if (pid == 0) {
|
||||
+ pid = fork();
|
||||
+ if (pid < 0)
|
||||
+ return log_error_errno(errno, "Failed to fork: %m");
|
||||
+ if (pid == 0) {
|
||||
+ reset_all_signal_handlers();
|
||||
+ reset_signal_mask();
|
||||
+ execv(args[0], (char **) args);
|
||||
+ _exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+
|
||||
+ *_pid = pid;
|
||||
+ return 0;
|
||||
+ ret = wait_for_terminate_and_warn(args[0], pid, true);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ return ret == 0;
|
||||
+}
|
||||
+
|
||||
int main(int argc, char **argv) {
|
||||
@ -147,13 +156,13 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
+ _cleanup_free_ char
|
||||
+ *vc_kbd_delay = NULL, *vc_kbd_rate = NULL,
|
||||
+ *vc_kbd_disable_caps_lock = NULL, *vc_compose_table = NULL;
|
||||
+ pid_t kbd_rate_pid = 0, compose_table_pid = 0;
|
||||
+#endif
|
||||
+ bool disable_capslock = false;
|
||||
+ bool comp_ok, rate_ok;
|
||||
_cleanup_close_ int fd = -1;
|
||||
bool utf8;
|
||||
pid_t font_pid = 0, keymap_pid = 0;
|
||||
@@ -273,6 +378,28 @@ int main(int argc, char **argv) {
|
||||
bool utf8, font_copy = false, font_ok, keyboard_ok;
|
||||
int r = EXIT_FAILURE;
|
||||
@@ -281,6 +393,31 @@ int main(int argc, char **argv) {
|
||||
|
||||
utf8 = is_locale_utf8();
|
||||
|
||||
@ -166,7 +175,8 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
+ "COMPOSETABLE", &vc_compose_table,
|
||||
+ NULL);
|
||||
+ if (r < 0 && r != -ENOENT)
|
||||
+ log_warning("Failed to read /etc/sysconfig/keyboard: %s", strerror(-r));
|
||||
+ log_warning("Failed to read /etc/sysconfig/keyboard: %s",
|
||||
+ strerror(-r));
|
||||
+
|
||||
+ r = parse_env_file("/etc/sysconfig/console", NEWLINE,
|
||||
+ "CONSOLE_FONT", &vc_font,
|
||||
@ -174,45 +184,33 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
+ "CONSOLE_UNICODEMAP", &vc_font_unimap,
|
||||
+ NULL);
|
||||
+ if (r < 0 && r != -ENOENT)
|
||||
+ log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r));
|
||||
+ log_warning("Failed to read /etc/sysconfig/console: %s",
|
||||
+ strerror(-r));
|
||||
+
|
||||
+ disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0;
|
||||
+#endif
|
||||
+ disable_capslock = vc_kbd_disable_caps_lock &&
|
||||
+ strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0;
|
||||
+#endif /* HAVE_SYSV_COMPAT */
|
||||
+
|
||||
r = parse_env_file("/etc/vconsole.conf", NEWLINE,
|
||||
"KEYMAP", &vc_keymap,
|
||||
"KEYMAP_TOGGLE", &vc_keymap_toggle,
|
||||
@@ -312,14 +439,32 @@ int main(int argc, char **argv) {
|
||||
if (font_pid > 0)
|
||||
wait_for_terminate_and_warn(KBD_SETFONT, font_pid, true);
|
||||
@@ -312,11 +449,17 @@ int main(int argc, char **argv) {
|
||||
(void) disable_utf8(fd);
|
||||
|
||||
- r = keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid);
|
||||
+ r = keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, disable_capslock, &keymap_pid);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to start " KBD_LOADKEYS ": %m");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
font_ok = font_load_and_wait(vc, vc_font, vc_font_map, vc_font_unimap) > 0;
|
||||
- keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle, utf8) > 0;
|
||||
+ keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle,
|
||||
+ utf8, disable_capslock) > 0;
|
||||
+#ifdef HAVE_SYSV_COMPAT
|
||||
+ r = load_compose_table(vc, vc_compose_table, &compose_table_pid);
|
||||
+ if (r < 0) {
|
||||
+ log_error_errno(r, "Failed to start " KBD_LOADKEYS " loading the compose table: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+ r = set_kbd_rate(vc, vc_kbd_rate, vc_kbd_delay, &kbd_rate_pid);
|
||||
+ if (r < 0) {
|
||||
+ log_error_errno(r, "Failed to start kbdrate: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+ comp_ok = compose_load_and_wait(vc, vc_compose_table);
|
||||
+ rate_ok = kbdrate_set_and_wait(vc, vc_kbd_rate, vc_kbd_delay);
|
||||
+#endif
|
||||
|
||||
if (keymap_pid > 0)
|
||||
wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid, true);
|
||||
+#ifdef HAVE_SYSV_COMPAT
|
||||
+ if (compose_table_pid > 0)
|
||||
+ wait_for_terminate_and_warn(KBD_LOADKEYS, compose_table_pid, true);
|
||||
+ if (kbd_rate_pid > 0)
|
||||
+ wait_for_terminate_and_warn("/usr/bin/kbdrate", kbd_rate_pid, true);
|
||||
+#endif
|
||||
/* Only copy the font when we executed setfont successfully */
|
||||
if (font_copy && font_ok)
|
||||
(void) font_copy_to_all_vcs(fd);
|
||||
|
||||
/* Only copy the font when we started setfont successfully */
|
||||
if (font_copy && font_pid > 0)
|
||||
- return font_ok && keyboard_ok ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
+ return font_ok && keyboard_ok && comp_ok && rate_ok ?
|
||||
+ EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
||||
|
@ -14,11 +14,11 @@ Cristian Rodríguez <crrodriguez@opensuse.org>
|
||||
units/systemd-vconsole-setup.service.in | 2 -
|
||||
5 files changed, 94 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
@@ -3715,6 +3715,19 @@ dist_udevrules_DATA += \
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -3813,6 +3813,19 @@ dist_udevrules_DATA += \
|
||||
rules/61-accelerometer.rules
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
@ -35,13 +35,13 @@ Index: systemd-218/Makefile.am
|
||||
+ rules/73-seat-numlock.rules
|
||||
+
|
||||
+# ------------------------------------------------------------------------------
|
||||
if ENABLE_GUDEV
|
||||
if ENABLE_GTK_DOC
|
||||
SUBDIRS += \
|
||||
Index: systemd-218/rules/73-seat-numlock.rules
|
||||
mtd_probe_SOURCES = \
|
||||
src/udev/mtd_probe/mtd_probe.c \
|
||||
src/udev/mtd_probe/mtd_probe.h \
|
||||
Index: systemd-221/rules/73-seat-numlock.rules
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/rules/73-seat-numlock.rules
|
||||
+++ systemd-221/rules/73-seat-numlock.rules
|
||||
@@ -0,0 +1,8 @@
|
||||
+# This file is part of SUSE customization of systemd.
|
||||
+#
|
||||
@ -51,10 +51,10 @@ Index: systemd-218/rules/73-seat-numlock.rules
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+SUBSYSTEM=="tty", ACTION=="add", KERNEL=="tty[0-9]|tty1[0-2]", TEST=="/run/numlock-on", RUN+="numlock-on $env{DEVNAME}"
|
||||
Index: systemd-218/src/login/numlock-on.c
|
||||
Index: systemd-221/src/login/numlock-on.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/src/login/numlock-on.c
|
||||
+++ systemd-221/src/login/numlock-on.c
|
||||
@@ -0,0 +1,34 @@
|
||||
+/*
|
||||
+ * numlock-on.c: Turn numlock-on
|
||||
@ -90,13 +90,13 @@ Index: systemd-218/src/login/numlock-on.c
|
||||
+
|
||||
+ exit(0);
|
||||
+}
|
||||
Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
Index: systemd-221/src/vconsole/vconsole-setup.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/vconsole/vconsole-setup.c
|
||||
+++ systemd-218/src/vconsole/vconsole-setup.c
|
||||
@@ -42,6 +42,10 @@
|
||||
#include "fileio.h"
|
||||
#include "strv.h"
|
||||
--- systemd-221.orig/src/vconsole/vconsole-setup.c
|
||||
+++ systemd-221/src/vconsole/vconsole-setup.c
|
||||
@@ -41,6 +41,10 @@
|
||||
#include "terminal-util.h"
|
||||
#include "signal-util.h"
|
||||
|
||||
+#define BIOS_DATA_AREA 0x400
|
||||
+#define BDA_KEYBOARD_STATUS_FLAGS_4 0x97
|
||||
@ -105,21 +105,20 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
static bool is_vconsole(int fd) {
|
||||
unsigned char data[1];
|
||||
|
||||
@@ -342,10 +346,11 @@ int main(int argc, char **argv) {
|
||||
@@ -359,9 +363,10 @@ int main(int argc, char **argv) {
|
||||
#ifdef HAVE_SYSV_COMPAT
|
||||
_cleanup_free_ char
|
||||
*vc_kbd_delay = NULL, *vc_kbd_rate = NULL,
|
||||
- *vc_kbd_disable_caps_lock = NULL, *vc_compose_table = NULL;
|
||||
+ *vc_kbd_disable_caps_lock = NULL, *vc_compose_table = NULL,
|
||||
+ *vc_kbd_numlock = NULL;
|
||||
pid_t kbd_rate_pid = 0, compose_table_pid = 0;
|
||||
#endif
|
||||
- bool disable_capslock = false;
|
||||
+ bool disable_capslock = false, numlock = false;
|
||||
bool comp_ok, rate_ok;
|
||||
_cleanup_close_ int fd = -1;
|
||||
bool utf8;
|
||||
pid_t font_pid = 0, keymap_pid = 0;
|
||||
@@ -384,6 +389,7 @@ int main(int argc, char **argv) {
|
||||
bool utf8, font_copy = false, font_ok, keyboard_ok;
|
||||
@@ -399,6 +404,7 @@ int main(int argc, char **argv) {
|
||||
"KBD_DELAY", &vc_kbd_delay,
|
||||
"KBD_RATE", &vc_kbd_rate,
|
||||
"KBD_DISABLE_CAPS_LOCK", &vc_kbd_disable_caps_lock,
|
||||
@ -127,54 +126,54 @@ Index: systemd-218/src/vconsole/vconsole-setup.c
|
||||
"COMPOSETABLE", &vc_compose_table,
|
||||
NULL);
|
||||
if (r < 0 && r != -ENOENT)
|
||||
@@ -398,6 +404,32 @@ int main(int argc, char **argv) {
|
||||
log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r));
|
||||
@@ -416,6 +422,32 @@ int main(int argc, char **argv) {
|
||||
|
||||
disable_capslock = vc_kbd_disable_caps_lock && strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0;
|
||||
disable_capslock = vc_kbd_disable_caps_lock &&
|
||||
strcasecmp(vc_kbd_disable_caps_lock, "YES") == 0;
|
||||
+ numlock = vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "yes");
|
||||
+#if defined(__i386__) || defined(__x86_64__)
|
||||
+ if (vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "bios")) {
|
||||
+ int _cleanup_close_ fdmem;
|
||||
+ char c;
|
||||
+ if (vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "bios")) {
|
||||
+ int _cleanup_close_ fdmem;
|
||||
+ char c;
|
||||
+
|
||||
+ fdmem = open ("/dev/mem", O_RDONLY);
|
||||
+ if (fdmem < 0) {
|
||||
+ log_error("Failed to open /dev/mem: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+ fdmem = open ("/dev/mem", O_RDONLY);
|
||||
+ if (fdmem < 0) {
|
||||
+ log_error("Failed to open /dev/mem: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == (off_t) -1) {
|
||||
+ log_error("Failed to seek /dev/mem: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+ if (lseek(fdmem, BIOS_DATA_AREA + BDA_KEYBOARD_STATUS_FLAGS_4, SEEK_SET) == (off_t) -1) {
|
||||
+ log_error("Failed to seek /dev/mem: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ if (read (fdmem, &c, sizeof(char)) == -1) {
|
||||
+ log_error("Failed to read /dev/mem: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+ if (read(fdmem, &c, sizeof(char)) == -1) {
|
||||
+ log_error("Failed to read /dev/mem: %m");
|
||||
+ return EXIT_FAILURE;
|
||||
+ }
|
||||
+
|
||||
+ if (c & BDA_KSF4_NUMLOCK_MASK)
|
||||
+ numlock = true;
|
||||
+ } else
|
||||
+#endif
|
||||
+ numlock = vc_kbd_numlock && strcaseeq(vc_kbd_numlock, "yes");
|
||||
#endif
|
||||
+ if (c & BDA_KSF4_NUMLOCK_MASK)
|
||||
+ numlock = true;
|
||||
+ }
|
||||
+#endif /* x86 */
|
||||
#endif /* HAVE_SYSV_COMPAT */
|
||||
|
||||
r = parse_env_file("/etc/vconsole.conf", NEWLINE,
|
||||
@@ -444,6 +476,10 @@ int main(int argc, char **argv) {
|
||||
log_error_errno(r, "Failed to start " KBD_LOADKEYS ": %m");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
@@ -451,6 +483,10 @@ int main(int argc, char **argv) {
|
||||
font_ok = font_load_and_wait(vc, vc_font, vc_font_map, vc_font_unimap) > 0;
|
||||
keyboard_ok = keyboard_load_and_wait(vc, vc_keymap, vc_keymap_toggle,
|
||||
utf8, disable_capslock) > 0;
|
||||
+ if (numlock)
|
||||
+ touch("/run/numlock-on");
|
||||
+ else
|
||||
+ unlink("/run/numlock-on");
|
||||
#ifdef HAVE_SYSV_COMPAT
|
||||
r = load_compose_table(vc, vc_compose_table, &compose_table_pid);
|
||||
if (r < 0) {
|
||||
Index: systemd-218/units/systemd-vconsole-setup.service.in
|
||||
comp_ok = compose_load_and_wait(vc, vc_compose_table);
|
||||
rate_ok = kbdrate_set_and_wait(vc, vc_kbd_rate, vc_kbd_delay);
|
||||
Index: systemd-221/units/systemd-vconsole-setup.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/systemd-vconsole-setup.service.in
|
||||
+++ systemd-218/units/systemd-vconsole-setup.service.in
|
||||
--- systemd-221.orig/units/systemd-vconsole-setup.service.in
|
||||
+++ systemd-221/units/systemd-vconsole-setup.service.in
|
||||
@@ -10,7 +10,7 @@ Description=Setup Virtual Console
|
||||
Documentation=man:systemd-vconsole-setup.service(8) man:vconsole.conf(5)
|
||||
DefaultDependencies=no
|
||||
|
@ -7,11 +7,11 @@ handle ROOT_USES_LANG=ctype (bnc#792182).
|
||||
src/core/locale-setup.c | 26 ++++++++++++++++++++++++++
|
||||
1 file changed, 26 insertions(+)
|
||||
|
||||
Index: systemd-218/src/core/locale-setup.c
|
||||
Index: systemd-221/src/core/locale-setup.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/locale-setup.c
|
||||
+++ systemd-218/src/core/locale-setup.c
|
||||
@@ -36,6 +36,11 @@ int locale_setup(char ***environment) {
|
||||
--- systemd-221.orig/src/core/locale-setup.c
|
||||
+++ systemd-221/src/core/locale-setup.c
|
||||
@@ -34,6 +34,11 @@ int locale_setup(char ***environment) {
|
||||
char **add;
|
||||
char *variables[_VARIABLE_LC_MAX] = {};
|
||||
int r = 0, i;
|
||||
@ -23,7 +23,7 @@ Index: systemd-218/src/core/locale-setup.c
|
||||
|
||||
if (detect_container(NULL) <= 0) {
|
||||
r = parse_env_file("/proc/cmdline", WHITESPACE,
|
||||
@@ -82,6 +87,27 @@ int locale_setup(char ***environment) {
|
||||
@@ -80,6 +85,27 @@ int locale_setup(char ***environment) {
|
||||
if (r < 0 && r != -ENOENT)
|
||||
log_warning_errno(r, "Failed to read /etc/locale.conf: %m");
|
||||
}
|
||||
|
@ -8,14 +8,16 @@ systemd unit drop-in files to add dependencies
|
||||
---
|
||||
Makefile.am | 9
|
||||
src/insserv-generator/Makefile | 28 ++
|
||||
src/insserv-generator/insserv-generator.c | 312 ++++++++++++++++++++++++++++++
|
||||
3 files changed, 349 insertions(+)
|
||||
src/insserv-generator/insserv-generator.c | 315 ++++++++++++++++++++++++++++++
|
||||
3 files changed, 351 insertions(+), 1 deletion(-)
|
||||
create mode 100644 src/insserv-generator/Makefile
|
||||
create mode 100644 src/insserv-generator/insserv-generator.c
|
||||
|
||||
--- systemd-219.orig/Makefile.am
|
||||
+++ systemd-219/Makefile.am
|
||||
@@ -621,7 +621,8 @@ nodist_systemunit_DATA += \
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -618,7 +618,8 @@ nodist_systemunit_DATA += \
|
||||
|
||||
systemgenerator_PROGRAMS += \
|
||||
systemd-sysv-generator \
|
||||
@ -25,23 +27,23 @@ systemd unit drop-in files to add dependencies
|
||||
endif
|
||||
|
||||
EXTRA_DIST += \
|
||||
@@ -2565,6 +2566,14 @@ systemd_rc_local_generator_LDADD = \
|
||||
libsystemd-label.la \
|
||||
libsystemd-shared.la
|
||||
@@ -2544,6 +2545,12 @@ $(systemd_boot): $(systemd_boot_solib)
|
||||
endif
|
||||
endif
|
||||
|
||||
+#-------------------------------------------------------------------------------
|
||||
+systemd_insserv_generator_SOURCES = \
|
||||
+ src/insserv-generator/insserv-generator.c
|
||||
+
|
||||
+systemd_insserv_generator_LDADD = \
|
||||
+ libsystemd-label.la \
|
||||
+ libsystemd-shared.la
|
||||
+systemd_insserv_generator_LDADD = libbasic.la
|
||||
+
|
||||
# ------------------------------------------------------------------------------
|
||||
systemd_remount_fs_SOURCES = \
|
||||
src/remount-fs/remount-fs.c \
|
||||
stub_headers = \
|
||||
src/boot/efi/util.h \
|
||||
Index: systemd-221/src/insserv-generator/Makefile
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-219/src/insserv-generator/Makefile
|
||||
+++ systemd-221/src/insserv-generator/Makefile
|
||||
@@ -0,0 +1,28 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
@ -71,9 +73,11 @@ systemd unit drop-in files to add dependencies
|
||||
+ $(MAKE) -C .. clean
|
||||
+
|
||||
+.PHONY: all clean
|
||||
Index: systemd-221/src/insserv-generator/insserv-generator.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-219/src/insserv-generator/insserv-generator.c
|
||||
@@ -0,0 +1,312 @@
|
||||
+++ systemd-221/src/insserv-generator/insserv-generator.c
|
||||
@@ -0,0 +1,315 @@
|
||||
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
|
||||
+
|
||||
+/***
|
||||
@ -153,6 +157,7 @@ systemd unit drop-in files to add dependencies
|
||||
+ unsigned i;
|
||||
+ char *r;
|
||||
+ const char *n;
|
||||
+ int ret;
|
||||
+
|
||||
+ assert(name);
|
||||
+ assert(_r);
|
||||
@ -182,7 +187,9 @@ systemd unit drop-in files to add dependencies
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ /* Facilities starting with $ are most likely targets */
|
||||
+ r = unit_name_build(n, NULL, ".target");
|
||||
+ ret = unit_name_build(n, NULL, ".target", &r);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ } else if (filename && streq(name, filename))
|
||||
+ /* Names equaling the file name of the services are redundant */
|
||||
+ return 0;
|
||||
|
@ -16,11 +16,11 @@ What is the rationale for MAP_STACK?
|
||||
src/journal/mmap-cache.c | 16 +++++++++++++++-
|
||||
4 files changed, 33 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd/src/journal/catalog.c
|
||||
Index: systemd-221/src/journal/catalog.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/journal/catalog.c
|
||||
+++ systemd/src/journal/catalog.c
|
||||
@@ -470,6 +470,10 @@ finish:
|
||||
--- systemd-221.orig/src/journal/catalog.c
|
||||
+++ systemd-221/src/journal/catalog.c
|
||||
@@ -469,6 +469,10 @@ finish:
|
||||
|
||||
static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) {
|
||||
const CatalogHeader *h;
|
||||
@ -31,7 +31,7 @@ Index: systemd/src/journal/catalog.c
|
||||
int fd;
|
||||
void *p;
|
||||
struct stat st;
|
||||
@@ -492,12 +496,18 @@ static int open_mmap(const char *databas
|
||||
@@ -491,12 +495,18 @@ static int open_mmap(const char *databas
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -51,10 +51,10 @@ Index: systemd/src/journal/catalog.c
|
||||
h = p;
|
||||
if (memcmp(h->signature, CATALOG_SIGNATURE, sizeof(h->signature)) != 0 ||
|
||||
le64toh(h->header_size) < sizeof(CatalogHeader) ||
|
||||
Index: systemd/src/journal/journal-authenticate.c
|
||||
Index: systemd-221/src/journal/journal-authenticate.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/journal/journal-authenticate.c
|
||||
+++ systemd/src/journal/journal-authenticate.c
|
||||
--- systemd-221.orig/src/journal/journal-authenticate.c
|
||||
+++ systemd-221/src/journal/journal-authenticate.c
|
||||
@@ -355,7 +355,8 @@ int journal_file_fss_load(JournalFile *f
|
||||
goto finish;
|
||||
}
|
||||
@ -76,10 +76,10 @@ Index: systemd/src/journal/journal-authenticate.c
|
||||
if (f->fss_file == MAP_FAILED) {
|
||||
f->fss_file = NULL;
|
||||
r = -errno;
|
||||
Index: systemd/src/journal/journald-kmsg.c
|
||||
Index: systemd-221/src/journal/journald-kmsg.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/journal/journald-kmsg.c
|
||||
+++ systemd/src/journal/journald-kmsg.c
|
||||
--- systemd-221.orig/src/journal/journald-kmsg.c
|
||||
+++ systemd-221/src/journal/journald-kmsg.c
|
||||
@@ -454,7 +454,8 @@ int server_open_kernel_seqnum(Server *s)
|
||||
return 0;
|
||||
}
|
||||
@ -90,11 +90,11 @@ Index: systemd/src/journal/journald-kmsg.c
|
||||
if (p == MAP_FAILED) {
|
||||
log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
|
||||
return 0;
|
||||
Index: systemd/src/journal/mmap-cache.c
|
||||
Index: systemd-221/src/journal/mmap-cache.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/journal/mmap-cache.c
|
||||
+++ systemd/src/journal/mmap-cache.c
|
||||
@@ -467,11 +467,14 @@ static int add_mmap(
|
||||
--- systemd-221.orig/src/journal/mmap-cache.c
|
||||
+++ systemd-221/src/journal/mmap-cache.c
|
||||
@@ -466,11 +466,14 @@ static int add_mmap(
|
||||
struct stat *st,
|
||||
void **ret) {
|
||||
|
||||
@ -109,7 +109,7 @@ Index: systemd/src/journal/mmap-cache.c
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
@@ -510,7 +513,8 @@ static int add_mmap(
|
||||
@@ -509,7 +512,8 @@ static int add_mmap(
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
@ -119,7 +119,7 @@ Index: systemd/src/journal/mmap-cache.c
|
||||
if (d != MAP_FAILED)
|
||||
break;
|
||||
if (errno != ENOMEM)
|
||||
@@ -523,6 +527,16 @@ static int add_mmap(
|
||||
@@ -522,6 +526,16 @@ static int add_mmap(
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,10 @@ Date: Tue Jan 20 11:33:59 UTC 2015
|
||||
src/locale/kbd-model-map | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
Index: systemd/src/locale/kbd-model-map
|
||||
Index: systemd-221/src/locale/kbd-model-map
|
||||
===================================================================
|
||||
--- systemd.orig/src/locale/kbd-model-map
|
||||
+++ systemd/src/locale/kbd-model-map
|
||||
--- systemd-221.orig/src/locale/kbd-model-map
|
||||
+++ systemd-221/src/locale/kbd-model-map
|
||||
@@ -66,3 +66,16 @@ lt.baltic lt pc105 - terminate:ctrl_a
|
||||
lt.l4 lt pc105 - terminate:ctrl_alt_bksp
|
||||
lt lt pc105 - terminate:ctrl_alt_bksp
|
||||
|
@ -1,35 +1,19 @@
|
||||
---
|
||||
Makefile.am | 4 ++++
|
||||
configure.ac | 4 ----
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
Index: systemd/Makefile.am
|
||||
Index: systemd-221/configure.ac
|
||||
===================================================================
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -4789,6 +4789,10 @@ systemd_cryptsetup_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
$(LIBCRYPTSETUP_CFLAGS)
|
||||
|
||||
+systemd_cryptsetup_LDFLAGS = \
|
||||
+ $(AM_LDFLAGS) \
|
||||
+ -Wl,-rpath-link=$(top_srcdir)/.libs
|
||||
+
|
||||
systemd_cryptsetup_LDADD = \
|
||||
libsystemd-label.la \
|
||||
libudev-internal.la \
|
||||
Index: systemd/configure.ac
|
||||
===================================================================
|
||||
--- systemd.orig/configure.ac
|
||||
+++ systemd/configure.ac
|
||||
@@ -206,10 +206,6 @@ AS_CASE([$CC], [*clang*],
|
||||
--- systemd-221.orig/configure.ac
|
||||
+++ systemd-221/configure.ac
|
||||
@@ -194,10 +194,6 @@ AS_CASE([$CC], [*clang*],
|
||||
-Wno-gnu-variable-sized-type-not-at-end \
|
||||
])])
|
||||
|
||||
-AS_CASE([$CFLAGS], [*-O[[12345\ ]]*],
|
||||
-AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
|
||||
- [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
|
||||
- -flto -ffat-lto-objects])],
|
||||
- [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
|
||||
AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
|
||||
|
||||
AS_CASE([$CFLAGS], [*-O[[12345\ ]]*],
|
||||
AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
|
||||
|
@ -11,10 +11,10 @@ Reference: bnc#852232
|
||||
units/emergency.service.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: systemd-218/units/emergency.service.in
|
||||
Index: systemd-221/units/emergency.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/emergency.service.in
|
||||
+++ systemd-218/units/emergency.service.in
|
||||
--- systemd-221.orig/units/emergency.service.in
|
||||
+++ systemd-221/units/emergency.service.in
|
||||
@@ -11,6 +11,7 @@ Documentation=man:sulogin(8)
|
||||
DefaultDependencies=no
|
||||
Conflicts=shutdown.target
|
||||
|
@ -2,11 +2,11 @@
|
||||
src/fstab-generator/fstab-generator.c | 45 +++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 44 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd/src/fstab-generator/fstab-generator.c
|
||||
Index: systemd-221/src/fstab-generator/fstab-generator.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/fstab-generator/fstab-generator.c
|
||||
+++ systemd/src/fstab-generator/fstab-generator.c
|
||||
@@ -48,6 +48,49 @@ static char *arg_usr_what = NULL;
|
||||
--- systemd-221.orig/src/fstab-generator/fstab-generator.c
|
||||
+++ systemd-221/src/fstab-generator/fstab-generator.c
|
||||
@@ -47,6 +47,49 @@ static char *arg_usr_what = NULL;
|
||||
static char *arg_usr_fstype = NULL;
|
||||
static char *arg_usr_options = NULL;
|
||||
|
||||
@ -56,7 +56,7 @@ Index: systemd/src/fstab-generator/fstab-generator.c
|
||||
static int add_swap(
|
||||
const char *what,
|
||||
struct mntent *me,
|
||||
@@ -118,7 +161,7 @@ static int add_swap(
|
||||
@@ -108,7 +151,7 @@ static int add_swap(
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -4,10 +4,10 @@
|
||||
units/rescue.service.in | 3 ++-
|
||||
3 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd/units/console-shell.service.m4.in
|
||||
Index: systemd-221/units/console-shell.service.m4.in
|
||||
===================================================================
|
||||
--- systemd.orig/units/console-shell.service.m4.in
|
||||
+++ systemd/units/console-shell.service.m4.in
|
||||
--- systemd-221.orig/units/console-shell.service.m4.in
|
||||
+++ systemd-221/units/console-shell.service.m4.in
|
||||
@@ -17,6 +17,8 @@ Before=getty.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
@ -17,10 +17,10 @@ Index: systemd/units/console-shell.service.m4.in
|
||||
ExecStart=-@SULOGIN@
|
||||
ExecStopPost=-@SYSTEMCTL@ poweroff
|
||||
Type=idle
|
||||
Index: systemd/units/emergency.service.in
|
||||
Index: systemd-221/units/emergency.service.in
|
||||
===================================================================
|
||||
--- systemd.orig/units/emergency.service.in
|
||||
+++ systemd/units/emergency.service.in
|
||||
--- systemd-221.orig/units/emergency.service.in
|
||||
+++ systemd-221/units/emergency.service.in
|
||||
@@ -17,7 +17,8 @@ Before=shutdown.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
@ -29,12 +29,12 @@ Index: systemd/units/emergency.service.in
|
||||
+ExecStartPre=-/usr/bin/plymouth quit
|
||||
+ExecStartPre=-/usr/bin/plymouth --wait
|
||||
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
|
||||
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
|
||||
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
|
||||
Type=idle
|
||||
Index: systemd/units/rescue.service.in
|
||||
Index: systemd-221/units/rescue.service.in
|
||||
===================================================================
|
||||
--- systemd.orig/units/rescue.service.in
|
||||
+++ systemd/units/rescue.service.in
|
||||
--- systemd-221.orig/units/rescue.service.in
|
||||
+++ systemd-221/units/rescue.service.in
|
||||
@@ -16,7 +16,8 @@ Before=shutdown.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
@ -43,5 +43,5 @@ Index: systemd/units/rescue.service.in
|
||||
+ExecStartPre=-/usr/bin/plymouth quit
|
||||
+ExecStartPre=-/usr/bin/plymouth --wait
|
||||
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
|
||||
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
|
||||
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
|
||||
Type=idle
|
||||
|
@ -1,5 +1,11 @@
|
||||
--- systemd-210/units/rpcbind.target
|
||||
+++ systemd-210/units/rpcbind.target 2014-04-08 07:21:55.438235838 +0000
|
||||
---
|
||||
units/rpcbind.target | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: systemd-221/units/rpcbind.target
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/rpcbind.target
|
||||
+++ systemd-221/units/rpcbind.target
|
||||
@@ -12,3 +12,4 @@
|
||||
Description=RPC Port Mapper
|
||||
Documentation=man:systemd.special(7)
|
||||
|
@ -1,13 +1,22 @@
|
||||
--- systemd-210/units/emergency.target
|
||||
+++ systemd-210/units/emergency.target 2014-04-15 11:11:18.618235831 +0000
|
||||
---
|
||||
units/emergency.target | 1 +
|
||||
units/rescue.target | 3 ++-
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-221/units/emergency.target
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/emergency.target
|
||||
+++ systemd-221/units/emergency.target
|
||||
@@ -10,4 +10,5 @@ Description=Emergency Mode
|
||||
Documentation=man:systemd.special(7)
|
||||
Requires=emergency.service
|
||||
After=emergency.service
|
||||
+Conflicts=getty.target rescue.target
|
||||
AllowIsolate=yes
|
||||
--- systemd-210/units/rescue.target
|
||||
+++ systemd-210/units/rescue.target 2014-04-15 11:14:40.606808928 +0000
|
||||
Index: systemd-221/units/rescue.target
|
||||
===================================================================
|
||||
--- systemd-221.orig/units/rescue.target
|
||||
+++ systemd-221/units/rescue.target
|
||||
@@ -10,7 +10,8 @@ Description=Rescue Mode
|
||||
Documentation=man:systemd.special(7)
|
||||
Requires=sysinit.target rescue.service
|
||||
|
@ -2,11 +2,11 @@
|
||||
src/fstab-generator/fstab-generator.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-218/src/fstab-generator/fstab-generator.c
|
||||
Index: systemd-221/src/fstab-generator/fstab-generator.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/fstab-generator/fstab-generator.c
|
||||
+++ systemd-218/src/fstab-generator/fstab-generator.c
|
||||
@@ -238,8 +238,11 @@ static int add_mount(
|
||||
--- systemd-221.orig/src/fstab-generator/fstab-generator.c
|
||||
+++ systemd-221/src/fstab-generator/fstab-generator.c
|
||||
@@ -289,8 +289,11 @@ static int add_mount(
|
||||
"Documentation=man:fstab(5) man:systemd-fstab-generator(8)\n",
|
||||
source);
|
||||
|
||||
@ -18,5 +18,5 @@ Index: systemd-218/src/fstab-generator/fstab-generator.c
|
||||
+ fprintf(f, "Before=%s\n", post);
|
||||
+ }
|
||||
|
||||
if (passno != 0) {
|
||||
r = generator_write_fsck_deps(f, arg_dest, what, where, fstype);
|
||||
if (!automount && opts) {
|
||||
r = write_requires_after(f, opts);
|
||||
|
@ -10,11 +10,11 @@ Subject: restore /var/run and /var/lock bind mount if they aren't symlink
|
||||
create mode 100644 units/var-lock.mount
|
||||
create mode 100644 units/var-run.mount
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
@@ -516,6 +516,12 @@ endif
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -526,6 +526,12 @@ dist_systemunit_DATA += \
|
||||
dist_systemunit_DATA_busnames += \
|
||||
units/busnames.target
|
||||
|
||||
@ -27,9 +27,9 @@ Index: systemd-218/Makefile.am
|
||||
nodist_systemunit_DATA = \
|
||||
units/getty@.service \
|
||||
units/serial-getty@.service \
|
||||
@@ -6086,6 +6092,9 @@ RUNLEVEL4_TARGET_WANTS += \
|
||||
@@ -6123,6 +6129,9 @@ GRAPHICAL_TARGET_WANTS += \
|
||||
systemd-update-utmp-runlevel.service
|
||||
RUNLEVEL5_TARGET_WANTS += \
|
||||
RESCUE_TARGET_WANTS += \
|
||||
systemd-update-utmp-runlevel.service
|
||||
+LOCAL_FS_TARGET_WANTS += \
|
||||
+ var-run.mount \
|
||||
@ -37,10 +37,10 @@ Index: systemd-218/Makefile.am
|
||||
endif
|
||||
|
||||
SYSINIT_TARGET_WANTS += \
|
||||
Index: systemd-218/units/var-lock.mount
|
||||
Index: systemd-221/units/var-lock.mount
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/units/var-lock.mount
|
||||
+++ systemd-221/units/var-lock.mount
|
||||
@@ -0,0 +1,19 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
@ -61,10 +61,10 @@ Index: systemd-218/units/var-lock.mount
|
||||
+Where=/var/lock
|
||||
+Type=bind
|
||||
+Options=bind
|
||||
Index: systemd-218/units/var-run.mount
|
||||
Index: systemd-221/units/var-run.mount
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/units/var-run.mount
|
||||
+++ systemd-221/units/var-run.mount
|
||||
@@ -0,0 +1,19 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
|
@ -1,16 +1,18 @@
|
||||
Use and set default logging console for both journald and kernel messages
|
||||
|
||||
---
|
||||
src/journal/journald-console.c | 96 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/journal/journald-console.h | 4 +
|
||||
src/journal/journald-server.c | 5 ++
|
||||
3 files changed, 105 insertions(+)
|
||||
src/journal/journald-console.c | 100 +++++++++++++++++++++++++++++++++++++++++
|
||||
src/journal/journald-console.h | 3 +
|
||||
src/journal/journald-server.c | 6 ++
|
||||
3 files changed, 109 insertions(+)
|
||||
|
||||
--- systemd-219.orig/src/journal/journald-console.c
|
||||
+++ systemd-219/src/journal/journald-console.c
|
||||
@@ -23,6 +23,14 @@
|
||||
Index: systemd-221/src/journal/journald-console.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/journal/journald-console.c
|
||||
+++ systemd-221/src/journal/journald-console.c
|
||||
@@ -22,6 +22,14 @@
|
||||
#include <time.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/socket.h>
|
||||
+#ifdef HAVE_SYSV_COMPAT
|
||||
+# include <linux/tiocl.h>
|
||||
@ -23,11 +25,11 @@ Use and set default logging console for both journald and kernel messages
|
||||
|
||||
#include "fileio.h"
|
||||
#include "journald-server.h"
|
||||
@@ -43,6 +51,76 @@ static bool prefix_timestamp(void) {
|
||||
@@ -45,6 +53,76 @@ static bool prefix_timestamp(void) {
|
||||
return cached_printk_time;
|
||||
}
|
||||
|
||||
+void defaul_tty_path(Server *s)
|
||||
+void default_tty_path(Server *s)
|
||||
+{
|
||||
+#ifdef HAVE_SYSV_COMPAT
|
||||
+ static const char list[] = "/dev/tty10\0" "/dev/console\0";
|
||||
@ -100,7 +102,7 @@ Use and set default logging console for both journald and kernel messages
|
||||
void server_forward_console(
|
||||
Server *s,
|
||||
int priority,
|
||||
@@ -64,6 +142,12 @@ void server_forward_console(
|
||||
@@ -66,6 +144,12 @@ void server_forward_console(
|
||||
if (LOG_PRI(priority) > s->max_level_console)
|
||||
return;
|
||||
|
||||
@ -113,7 +115,7 @@ Use and set default logging console for both journald and kernel messages
|
||||
/* First: timestamp */
|
||||
if (prefix_timestamp()) {
|
||||
assert_se(clock_gettime(CLOCK_MONOTONIC, &ts) == 0);
|
||||
@@ -100,7 +184,23 @@ void server_forward_console(
|
||||
@@ -102,7 +186,23 @@ void server_forward_console(
|
||||
fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC);
|
||||
if (fd < 0) {
|
||||
log_debug_errno(errno, "Failed to open %s for logging: %m", tty);
|
||||
@ -137,22 +139,34 @@ Use and set default logging console for both journald and kernel messages
|
||||
}
|
||||
|
||||
if (writev(fd, iovec, n) < 0)
|
||||
--- systemd-219.orig/src/journal/journald-console.h
|
||||
+++ systemd-219/src/journal/journald-console.h
|
||||
Index: systemd-221/src/journal/journald-console.h
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/journal/journald-console.h
|
||||
+++ systemd-221/src/journal/journald-console.h
|
||||
@@ -24,3 +24,6 @@
|
||||
#include "journald-server.h"
|
||||
|
||||
void server_forward_console(Server *s, int priority, const char *identifier, const char *message, const struct ucred *ucred);
|
||||
+
|
||||
+void klogconsole(Server *s);
|
||||
+void defaul_tty_path(Server *s);
|
||||
--- systemd-219.orig/src/journal/journald-server.c
|
||||
+++ systemd-219/src/journal/journald-server.c
|
||||
@@ -1520,6 +1520,11 @@ int server_init(Server *s) {
|
||||
+void default_tty_path(Server *s);
|
||||
Index: systemd-221/src/journal/journald-server.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/journal/journald-server.c
|
||||
+++ systemd-221/src/journal/journald-server.c
|
||||
@@ -52,6 +52,7 @@
|
||||
#include "journal-internal.h"
|
||||
#include "journal-vacuum.h"
|
||||
#include "journal-authenticate.h"
|
||||
+#include "journald-console.h"
|
||||
#include "journald-rate-limit.h"
|
||||
#include "journald-kmsg.h"
|
||||
#include "journald-syslog.h"
|
||||
@@ -1514,6 +1515,11 @@ int server_init(Server *s) {
|
||||
|
||||
server_parse_config_file(s);
|
||||
server_parse_proc_cmdline(s);
|
||||
+ defaul_tty_path(s);
|
||||
+ default_tty_path(s);
|
||||
+
|
||||
+ if (s->tty_path)
|
||||
+ klogconsole(s);
|
||||
|
@ -2,12 +2,12 @@
|
||||
Makefile.am | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
@@ -4209,11 +4209,11 @@ noinst_LTLIBRARIES += \
|
||||
libsystemd-journal-core.la
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -4129,11 +4129,11 @@ noinst_LTLIBRARIES += \
|
||||
libjournal-core.la
|
||||
|
||||
journal-install-hook:
|
||||
- -$(MKDIR_P) $(DESTDIR)/var/log/journal
|
||||
|
@ -7,12 +7,14 @@ This reverts commit 3cdebc217c42c8529086f2965319b6a48eaaeabe.
|
||||
[Implementation note: currently, the unit is generated, but not
|
||||
activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de]
|
||||
---
|
||||
src/sysv-generator/sysv-generator.c | 26 +++++++++++++++++++++-----
|
||||
1 file changed, 21 insertions(+), 5 deletions(-)
|
||||
src/sysv-generator/sysv-generator.c | 21 +++++++++++++++------
|
||||
1 file changed, 15 insertions(+), 6 deletions(-)
|
||||
|
||||
--- systemd-219.orig/src/sysv-generator/sysv-generator.c
|
||||
+++ systemd-219/src/sysv-generator/sysv-generator.c
|
||||
@@ -42,7 +42,8 @@
|
||||
Index: systemd-221/src/sysv-generator/sysv-generator.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/sysv-generator/sysv-generator.c
|
||||
+++ systemd-221/src/sysv-generator/sysv-generator.c
|
||||
@@ -39,7 +39,8 @@
|
||||
|
||||
typedef enum RunlevelType {
|
||||
RUNLEVEL_UP,
|
||||
@ -22,7 +24,7 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de]
|
||||
} RunlevelType;
|
||||
|
||||
static const struct {
|
||||
@@ -50,6 +51,9 @@ static const struct {
|
||||
@@ -47,6 +48,9 @@ static const struct {
|
||||
const char *target;
|
||||
const RunlevelType type;
|
||||
} rcnd_table[] = {
|
||||
@ -30,9 +32,9 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de]
|
||||
+ { "boot.d", SPECIAL_SYSINIT_TARGET, RUNLEVEL_SYSINIT },
|
||||
+
|
||||
/* Standard SysV runlevels for start-up */
|
||||
{ "rc1.d", SPECIAL_RESCUE_TARGET, RUNLEVEL_UP },
|
||||
{ "rc2.d", SPECIAL_RUNLEVEL2_TARGET, RUNLEVEL_UP },
|
||||
@@ -65,7 +69,7 @@ static const struct {
|
||||
{ "rc1.d", SPECIAL_RESCUE_TARGET, RUNLEVEL_UP },
|
||||
{ "rc2.d", SPECIAL_MULTI_USER_TARGET, RUNLEVEL_UP },
|
||||
@@ -62,10 +66,10 @@ static const struct {
|
||||
directories in this order, and we want to make sure that
|
||||
sysv_start_priority is known when we first load the
|
||||
unit. And that value we only know from S links. Hence
|
||||
@ -40,17 +42,12 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de]
|
||||
+ UP/SYSINIT must be read before DOWN */
|
||||
};
|
||||
|
||||
typedef struct SysvStub {
|
||||
@@ -83,7 +87,7 @@ typedef struct SysvStub {
|
||||
bool reload;
|
||||
} SysvStub;
|
||||
|
||||
-const char *arg_dest = "/tmp";
|
||||
+static const char *arg_dest = "/tmp";
|
||||
|
||||
static int add_symlink(const char *service, const char *where) {
|
||||
_cleanup_free_ char *from = NULL, *to = NULL;
|
||||
@@ -235,6 +239,10 @@ static bool usage_contains_reload(const
|
||||
typedef struct SysvStub {
|
||||
char *name;
|
||||
@@ -242,6 +246,10 @@ static bool usage_contains_reload(const
|
||||
static char *sysv_translate_name(const char *name) {
|
||||
char *r;
|
||||
|
||||
@ -61,7 +58,7 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de]
|
||||
r = new(char, strlen(name) + strlen(".service") + 1);
|
||||
if (!r)
|
||||
return NULL;
|
||||
@@ -864,10 +872,10 @@ static int set_dependencies_from_rcnd(Lo
|
||||
@@ -853,10 +861,10 @@ static int set_dependencies_from_rcnd(co
|
||||
|
||||
if (de->d_name[0] == 'S') {
|
||||
|
||||
@ -74,7 +71,7 @@ activated even if symlinks exist in boot.d. Hmmm... -jengelh@inai.de]
|
||||
|
||||
r = set_ensure_allocated(&runlevel_services[i], NULL);
|
||||
if (r < 0)
|
||||
@@ -878,7 +886,8 @@ static int set_dependencies_from_rcnd(Lo
|
||||
@@ -867,7 +875,8 @@ static int set_dependencies_from_rcnd(co
|
||||
goto finish;
|
||||
|
||||
} else if (de->d_name[0] == 'K' &&
|
||||
|
@ -10,10 +10,10 @@ configuration), needed by openSUSE (bnc#809420).
|
||||
units/systemd-sysctl.service.in | 2 ++
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
Index: systemd-218/src/sysctl/sysctl.c
|
||||
Index: systemd-221/src/sysctl/sysctl.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/sysctl/sysctl.c
|
||||
+++ systemd-218/src/sysctl/sysctl.c
|
||||
--- systemd-221.orig/src/sysctl/sysctl.c
|
||||
+++ systemd-221/src/sysctl/sysctl.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
@ -22,7 +22,7 @@ Index: systemd-218/src/sysctl/sysctl.c
|
||||
|
||||
#include "log.h"
|
||||
#include "strv.h"
|
||||
@@ -310,6 +311,13 @@ int main(int argc, char *argv[]) {
|
||||
@@ -264,6 +265,13 @@ int main(int argc, char *argv[]) {
|
||||
} else {
|
||||
_cleanup_strv_free_ char **files = NULL;
|
||||
char **f;
|
||||
@ -36,10 +36,10 @@ Index: systemd-218/src/sysctl/sysctl.c
|
||||
|
||||
r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
|
||||
if (r < 0) {
|
||||
Index: systemd-218/units/systemd-sysctl.service.in
|
||||
Index: systemd-221/units/systemd-sysctl.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/systemd-sysctl.service.in
|
||||
+++ systemd-218/units/systemd-sysctl.service.in
|
||||
--- systemd-221.orig/units/systemd-sysctl.service.in
|
||||
+++ systemd-221/units/systemd-sysctl.service.in
|
||||
@@ -13,6 +13,8 @@ Conflicts=shutdown.target
|
||||
After=systemd-modules-load.service
|
||||
Before=sysinit.target shutdown.target
|
||||
|
@ -6,11 +6,11 @@ This solves the bug bnc#868439
|
||||
man/systemctl.xml | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd/man/systemctl.xml
|
||||
Index: systemd-221/man/systemctl.xml
|
||||
===================================================================
|
||||
--- systemd.orig/man/systemctl.xml
|
||||
+++ systemd/man/systemctl.xml
|
||||
@@ -445,7 +445,7 @@ along with systemd; If not, see <http://
|
||||
--- systemd-221.orig/man/systemctl.xml
|
||||
+++ systemd-221/man/systemctl.xml
|
||||
@@ -439,7 +439,7 @@
|
||||
<term><option>--force</option></term>
|
||||
|
||||
<listitem>
|
||||
@ -19,7 +19,7 @@ Index: systemd/man/systemctl.xml
|
||||
any existing conflicting symlinks.</para>
|
||||
|
||||
<para>When used with <command>halt</command>,
|
||||
@@ -1215,6 +1215,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
|
||||
@@ -1237,6 +1237,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
|
||||
<para>Return the default target to boot into. This returns
|
||||
the target unit name <filename>default.target</filename>
|
||||
is aliased (symlinked) to.</para>
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5c57113454e37c040d0cb481bd960ae7cf3a3fe0a231ff4945259bc74503f2d9
|
||||
size 3938228
|
3
systemd-221.tar.xz
Normal file
3
systemd-221.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:085e088650afbfc688ccb13459aedb1fbc7c8810358605b076301f472d51cc4f
|
||||
size 4010048
|
@ -1,13 +1,13 @@
|
||||
---
|
||||
man/tmpfiles.d.xml | 3 +++
|
||||
src/tmpfiles/tmpfiles.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
|
||||
2 files changed, 43 insertions(+), 8 deletions(-)
|
||||
src/tmpfiles/tmpfiles.c | 47 ++++++++++++++++++++++++++++++++++++++++-------
|
||||
2 files changed, 43 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: systemd/man/tmpfiles.d.xml
|
||||
Index: systemd-221/man/tmpfiles.d.xml
|
||||
===================================================================
|
||||
--- systemd.orig/man/tmpfiles.d.xml
|
||||
+++ systemd/man/tmpfiles.d.xml
|
||||
@@ -489,6 +489,9 @@
|
||||
--- systemd-221.orig/man/tmpfiles.d.xml
|
||||
+++ systemd-221/man/tmpfiles.d.xml
|
||||
@@ -528,6 +528,9 @@
|
||||
<varname>f</varname>, <varname>F</varname>, and
|
||||
<varname>w</varname> may be used to specify a short string that
|
||||
is written to the file, suffixed by a newline. For
|
||||
@ -15,13 +15,21 @@ Index: systemd/man/tmpfiles.d.xml
|
||||
+ usernames. If given, only paths belonging to these users will be excluded
|
||||
+ during directory cleanup. Ignored for all other lines. For
|
||||
<varname>C</varname>, specifies the source file or
|
||||
directory. For <varname>t</varname> determines extended
|
||||
attributes to be set. For <varname>a</varname> determines
|
||||
Index: systemd/src/tmpfiles/tmpfiles.c
|
||||
directory. For <varname>t</varname>, <varname>T</varname>
|
||||
determines extended attributes to be set. For
|
||||
Index: systemd-221/src/tmpfiles/tmpfiles.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/tmpfiles/tmpfiles.c
|
||||
+++ systemd/src/tmpfiles/tmpfiles.c
|
||||
@@ -345,6 +345,7 @@ static int dir_cleanup(
|
||||
--- systemd-221.orig/src/tmpfiles/tmpfiles.c
|
||||
+++ systemd-221/src/tmpfiles/tmpfiles.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/xattr.h>
|
||||
#include <linux/fs.h>
|
||||
+#include <pwd.h>
|
||||
|
||||
#include "log.h"
|
||||
#include "util.h"
|
||||
@@ -358,6 +359,7 @@ static int dir_cleanup(
|
||||
struct timespec times[2];
|
||||
bool deleted = false;
|
||||
int r = 0;
|
||||
@ -29,24 +37,23 @@ Index: systemd/src/tmpfiles/tmpfiles.c
|
||||
|
||||
while ((dent = readdir(d))) {
|
||||
struct stat s;
|
||||
@@ -395,14 +396,45 @@ static int dir_cleanup(
|
||||
@@ -408,14 +410,45 @@ static int dir_cleanup(
|
||||
}
|
||||
|
||||
/* Is there an item configured for this path? */
|
||||
- if (hashmap_get(items, sub_path)) {
|
||||
- if (ordered_hashmap_get(items, sub_path)) {
|
||||
- log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
|
||||
- continue;
|
||||
- }
|
||||
+ bool found_glob = false;
|
||||
+ found = ordered_hashmap_get(items, sub_path);
|
||||
+ if (!found) {
|
||||
+ found_glob = true;
|
||||
+ found = find_glob(globs, sub_path);
|
||||
}
|
||||
-
|
||||
- if (find_glob(globs, sub_path)) {
|
||||
- log_debug("Ignoring \"%s\": a separate glob exists.", sub_path);
|
||||
- continue;
|
||||
+ bool found_glob = false;
|
||||
+ found = hashmap_get(items, sub_path);
|
||||
+ if (!found) {
|
||||
+ found_glob = true;
|
||||
+ found = find_glob(globs, sub_path);
|
||||
+ }
|
||||
+ if (found) {
|
||||
+ struct passwd *pw;
|
||||
+ char *userfound = NULL, *args;
|
||||
|
@ -1,13 +1,26 @@
|
||||
---
|
||||
src/basic/def.h | 2 +-
|
||||
src/libsystemd/sd-bus/sd-bus.c | 4 ++--
|
||||
src/shared/def.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: systemd/src/libsystemd/sd-bus/sd-bus.c
|
||||
Index: systemd-221/src/basic/def.h
|
||||
===================================================================
|
||||
--- systemd.orig/src/libsystemd/sd-bus/sd-bus.c
|
||||
+++ systemd/src/libsystemd/sd-bus/sd-bus.c
|
||||
@@ -809,8 +809,8 @@ static int parse_container_unix_address(
|
||||
--- systemd-221.orig/src/basic/def.h
|
||||
+++ systemd-221/src/basic/def.h
|
||||
@@ -61,7 +61,7 @@
|
||||
"/usr/lib/kbd/keymaps/\0"
|
||||
#endif
|
||||
|
||||
-#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/var/run/dbus/system_bus_socket"
|
||||
+#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/run/dbus/system_bus_socket"
|
||||
#define KERNEL_SYSTEM_BUS_ADDRESS "kernel:path=/sys/fs/kdbus/0-system/bus"
|
||||
#define DEFAULT_SYSTEM_BUS_ADDRESS KERNEL_SYSTEM_BUS_ADDRESS ";" UNIX_SYSTEM_BUS_ADDRESS
|
||||
#define UNIX_USER_BUS_ADDRESS_FMT "unix:path=%s/bus"
|
||||
Index: systemd-221/src/libsystemd/sd-bus/sd-bus.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/libsystemd/sd-bus/sd-bus.c
|
||||
+++ systemd-221/src/libsystemd/sd-bus/sd-bus.c
|
||||
@@ -837,8 +837,8 @@ static int parse_container_unix_address(
|
||||
b->nspid = 0;
|
||||
|
||||
b->sockaddr.un.sun_family = AF_UNIX;
|
||||
@ -18,16 +31,3 @@ Index: systemd/src/libsystemd/sd-bus/sd-bus.c
|
||||
|
||||
return 0;
|
||||
}
|
||||
Index: systemd/src/shared/def.h
|
||||
===================================================================
|
||||
--- systemd.orig/src/shared/def.h
|
||||
+++ systemd/src/shared/def.h
|
||||
@@ -61,7 +61,7 @@
|
||||
"/usr/lib/kbd/keymaps/\0"
|
||||
#endif
|
||||
|
||||
-#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/var/run/dbus/system_bus_socket"
|
||||
+#define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/run/dbus/system_bus_socket"
|
||||
#define KERNEL_SYSTEM_BUS_ADDRESS "kernel:path=/sys/fs/kdbus/0-system/bus"
|
||||
|
||||
#ifdef ENABLE_KDBUS
|
||||
|
@ -1,6 +1,12 @@
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -4560,12 +4560,6 @@ lib_LTLIBRARIES += \
|
||||
---
|
||||
Makefile.am | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: systemd-221/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-221.orig/Makefile.am
|
||||
+++ systemd-221/Makefile.am
|
||||
@@ -5876,12 +5876,6 @@ lib_LTLIBRARIES += \
|
||||
libsystemd-id128.la \
|
||||
libsystemd-daemon.la
|
||||
|
||||
@ -13,7 +19,7 @@
|
||||
# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
|
||||
compat-lib-install-hook:
|
||||
libname=libsystemd-login.so && $(move-to-rootlibdir)
|
||||
@@ -4583,6 +4577,12 @@ INSTALL_EXEC_HOOKS += compat-lib-install
|
||||
@@ -5899,6 +5893,12 @@ INSTALL_EXEC_HOOKS += compat-lib-install
|
||||
UNINSTALL_EXEC_HOOKS += compat-lib-uninstall-hook
|
||||
endif
|
||||
|
||||
@ -24,5 +30,5 @@
|
||||
+ src/compat-libs/libsystemd-daemon.pc
|
||||
+
|
||||
EXTRA_DIST += \
|
||||
src/compat-libs/linkwarning.h \
|
||||
src/compat-libs/libsystemd-journal.pc.in \
|
||||
src/compat-libs/libsystemd-login.pc.in \
|
||||
|
@ -1,3 +1,47 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 19 20:51:14 UTC 2015 - jengelh@inai.de
|
||||
|
||||
- Update to new upstream release 221
|
||||
* From 220:
|
||||
* libgudev was moved into a package of its own
|
||||
* Runlevels 2, 3 and 4 are no longer distinct, they all map to
|
||||
multi-user.target.
|
||||
* The EFI System Partition mounted to /boot will be unmounted
|
||||
2 minutes after boot.
|
||||
* systemd does not support direct live-upgrades (via `systemctl
|
||||
daemon-reexec`) from versions older than v44 anymore.
|
||||
* systemd-nspawn may now be called as part of a shell pipeline.
|
||||
* systemd-shutdownd has been removed. This service was
|
||||
previously responsible for implementing scheduled shutdowns
|
||||
as exposed in /usr/bin/shutdown's time parameter. This
|
||||
functionality has now been moved into systemd-logind and is
|
||||
accessible via a bus interface.
|
||||
* udev will no longer call blkid and create symlinks for all
|
||||
block devices, but merely those from a whitelist
|
||||
(cf. 60-persistent-storage.rules).
|
||||
* /usr/lib/os-release gained a new optional field VARIANT=
|
||||
* Details at
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2015-May/032147.html
|
||||
* From 221:
|
||||
* New sd-bus and sd-event APIs in libsystemd
|
||||
* If there is both a systemd unit and a SysV init script for the
|
||||
same service name, and `systemctl enable` or other operation is
|
||||
run, both will now be enabled (or execute the related operation
|
||||
on both), not just the unit.
|
||||
- Split libsystemd0 to support systemd-less nspawn containers
|
||||
- Redo manpage file lists without %exclude, tends to hide
|
||||
unpackaged files.
|
||||
- hwdb belongs to udev
|
||||
- Resolve memory leak and add missing _cleanup_free_ to
|
||||
0001-On_s390_con3270_disable_ANSI_colour_esc.patch
|
||||
- Remove systemd-powerd-initctl-support.patch
|
||||
(no longer builds because shutdownd is gone)
|
||||
- Remove quilt-patches/0001-core-rework-device-state-logic.patch,
|
||||
0001-Let-some-boolean-survive-a-daemon-reload.patch
|
||||
(merged upstream),
|
||||
0001-Let-some-boolean-survive-a-daemon-reload.patch
|
||||
(obsolete)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 11 14:48:03 UTC 2015 - werner@suse.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package systemd-mini
|
||||
#
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -46,7 +46,7 @@
|
||||
|
||||
Name: systemd-mini
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 219
|
||||
Version: 221
|
||||
Release: 0
|
||||
Summary: A System and Session Manager
|
||||
License: LGPL-2.1+
|
||||
@ -61,7 +61,6 @@ BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gperf
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: intltool
|
||||
BuildRequires: libacl-devel
|
||||
BuildRequires: libcap-devel
|
||||
@ -90,8 +89,6 @@ Conflicts: systemd
|
||||
Conflicts: kiwi
|
||||
%else
|
||||
BuildRequires: docbook-xsl-stylesheets
|
||||
BuildRequires: gobject-introspection-devel
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: libgcrypt-devel
|
||||
BuildRequires: libusb-devel
|
||||
BuildRequires: libxslt-tools
|
||||
@ -117,7 +114,7 @@ BuildRequires: pam-config >= 0.79-5
|
||||
Requires: pwdutils
|
||||
Requires: systemd-presets-branding
|
||||
Requires: sysvinit-tools
|
||||
Requires: util-linux >= 2.25
|
||||
Requires: util-linux >= 2.26
|
||||
Requires(post): coreutils
|
||||
Requires(post): findutils
|
||||
Requires(post): pam-config >= 0.79-5
|
||||
@ -206,8 +203,6 @@ Patch180: 0014-journald-with-journaling-FS.patch
|
||||
Patch182: 0019-make-completion-smart-to-be-able-to-redirect.patch
|
||||
# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com
|
||||
Patch183: 0001-add-network-device-after-NFS-mount-units.patch
|
||||
# PATCH-FIX-SUSE systemd-powerd-initctl-support.patch
|
||||
Patch185: systemd-powerd-initctl-support.patch
|
||||
# PATCH-FIX-SUSE systemctl-set-default-target.patch
|
||||
Patch186: systemctl-set-default-target.patch
|
||||
# PATCH-FIX-SUSE boot-local-start.patch (bnc #869142)
|
||||
@ -253,9 +248,6 @@ Patch490: watch_resolv.conf_for_become_changed.patch
|
||||
Patch520: systemd-add-user-keep.patch
|
||||
# PATCH-FIX-SUSE systemd-add-user-keep.patch (bnc#903009)
|
||||
Patch521: kbd-model-map.patch
|
||||
Patch522: 0001-core-rework-device-state-logic.patch
|
||||
# PATCH-FIX-SUSE/PATCH-FIX-UPSTREAM
|
||||
Patch523: 0001-Let-some-boolean-survive-a-daemon-reload.patch
|
||||
|
||||
# UDEV PATCHES
|
||||
# ============
|
||||
@ -330,7 +322,7 @@ Some systemd commands offer bash completion, but it's an optional dependency.
|
||||
Summary: Development headers for systemd
|
||||
License: LGPL-2.1+
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name} = %{version}
|
||||
Requires: libsystemd0 = %version
|
||||
Requires: systemd-rpm-macros
|
||||
%if 0%{?bootstrap}
|
||||
Conflicts: systemd-devel
|
||||
@ -351,6 +343,32 @@ Provides: sysvinit:/sbin/init
|
||||
%description sysvinit
|
||||
Drop-in replacement of System V init tools.
|
||||
|
||||
%package -n libsystemd0
|
||||
Summary: Component library for systemd
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libsystemd0
|
||||
This library provides several of the systemd C APIs:
|
||||
|
||||
* sd-bus implements an alternative D-Bus client library that is
|
||||
relatively easy to use, very efficient and supports both classic
|
||||
D-Bus as well as kdbus as transport backend.
|
||||
|
||||
* sd-daemon(3): for system services (daemons) to report their status
|
||||
to systemd and to make easy use of socket-based activation logic
|
||||
|
||||
* sd-event is a generic event loop abstraction that is built around
|
||||
Linux epoll, but adds features such as event prioritization or
|
||||
efficient timer handling.
|
||||
|
||||
* sd-id128(3): generation and processing of 128-bit IDs
|
||||
|
||||
* sd-journal(3): API to submit and query journal log entries
|
||||
|
||||
* sd-login(3): APIs to introspect and monitor seat, login session and
|
||||
user status information on the local system.
|
||||
|
||||
%package -n %{udevpkgname}
|
||||
Summary: A rule-based device node and kernel event manager
|
||||
License: GPL-2.0
|
||||
@ -432,38 +450,6 @@ This package contains the development files for the library libudev, a
|
||||
dynamic library, which provides access to udev device information.
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%package -n libgudev-1_0-0
|
||||
Summary: GObject library, to access udev device information
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
Requires: lib%{udevpkgname}%{udev_major} = %{version}-%{release}
|
||||
|
||||
%description -n libgudev-1_0-0
|
||||
This package contains the GObject library libgudev, which provides
|
||||
access to udev device information.
|
||||
|
||||
%package -n typelib-1_0-GUdev-1_0
|
||||
Summary: GObject library, to access udev device information -- Introspection bindings
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n typelib-1_0-GUdev-1_0
|
||||
This package provides the GObject Introspection bindings for libgudev, which
|
||||
provides access to udev device information.
|
||||
|
||||
%package -n libgudev-1_0-devel
|
||||
Summary: Devel package for libgudev
|
||||
License: LGPL-2.1+
|
||||
Group: Development/Libraries/Other
|
||||
Requires: glib2-devel
|
||||
Requires: libgudev-1_0-0 = %{version}-%{release}
|
||||
Requires: libudev-devel = %{version}-%{release}
|
||||
Requires: typelib-1_0-GUdev-1_0 = %{version}-%{release}
|
||||
|
||||
%description -n libgudev-1_0-devel
|
||||
This is the devel package for the GObject library libgudev, which
|
||||
provides GObject access to udev device information.
|
||||
|
||||
%package logger
|
||||
Summary: Journal only logging
|
||||
License: LGPL-2.1+
|
||||
@ -580,7 +566,6 @@ cp %{SOURCE7} m4/
|
||||
%patch180 -p1
|
||||
%patch182 -p1
|
||||
%patch183 -p1
|
||||
%patch185 -p1
|
||||
%patch186 -p1
|
||||
%patch188 -p1
|
||||
%patch189 -p1
|
||||
@ -607,8 +592,6 @@ cp %{SOURCE7} m4/
|
||||
%patch490 -p1
|
||||
%patch520 -p1
|
||||
%patch521 -p1
|
||||
%patch522 -p1
|
||||
%patch523 -p1
|
||||
|
||||
# udev patches
|
||||
%patch1001 -p1
|
||||
@ -713,7 +696,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS
|
||||
--with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \
|
||||
--with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \
|
||||
%if 0%{?bootstrap}
|
||||
--disable-gudev \
|
||||
--disable-myhostname \
|
||||
--disable-manpages \
|
||||
--disable-machined \
|
||||
@ -722,7 +704,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS
|
||||
%if %{with python}
|
||||
--with-python \
|
||||
%endif
|
||||
--enable-gtk-doc \
|
||||
--with-nss-my-hostname-warning \
|
||||
%endif
|
||||
--enable-selinux \
|
||||
@ -1079,16 +1060,13 @@ fi
|
||||
%regenerate_initrd_posttrans
|
||||
%endif
|
||||
|
||||
%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
|
||||
|
||||
%post -n libsystemd0 -p /sbin/ldconfig
|
||||
%postun -n libsystemd0 -p /sbin/ldconfig
|
||||
%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
|
||||
%postun -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
|
||||
%post -n libgudev-1_0-0 -p /sbin/ldconfig
|
||||
|
||||
%postun -n libgudev-1_0-0 -p /sbin/ldconfig
|
||||
|
||||
%if %{with permission}
|
||||
%verifyscript logger
|
||||
%verify_permissions -e %{_localstatedir}/log/journal/
|
||||
@ -1164,7 +1142,6 @@ exit 0
|
||||
%{_bindir}/systemd-path
|
||||
%{_bindir}/systemd-sysusers
|
||||
%{_bindir}/systemd-notify
|
||||
%{_bindir}/systemd-hwdb
|
||||
%{_bindir}/systemd-run
|
||||
%{_bindir}/systemd-journalctl
|
||||
%{_bindir}/journalctl
|
||||
@ -1180,13 +1157,6 @@ exit 0
|
||||
%{_bindir}/systemd-detect-virt
|
||||
%{_bindir}/timedatectl
|
||||
%{_sbindir}/systemd-sysv-convert
|
||||
%{_libdir}/libsystemd.so.*
|
||||
%if %{with compat_libs}
|
||||
%{_libdir}/libsystemd-daemon.so.*
|
||||
%{_libdir}/libsystemd-login.so.*
|
||||
%{_libdir}/libsystemd-id128.so.*
|
||||
%{_libdir}/libsystemd-journal.so.*
|
||||
%endif
|
||||
%{_bindir}/systemd-cgls
|
||||
%{_bindir}/systemd-cgtop
|
||||
%{_bindir}/systemd-cat
|
||||
@ -1217,6 +1187,7 @@ exit 0
|
||||
%{_prefix}/lib/systemd/system/*.path
|
||||
%{_prefix}/lib/systemd/user/*.target
|
||||
%{_prefix}/lib/systemd/user/*.service
|
||||
%{_prefix}/lib/systemd/user/*.socket
|
||||
%exclude %{_prefix}/lib/systemd/systemd-udevd
|
||||
%if ! 0%{?bootstrap}
|
||||
%exclude %{_prefix}/lib/systemd/systemd-journal-gatewayd
|
||||
@ -1231,6 +1202,7 @@ exit 0
|
||||
%dir %{_prefix}/lib/systemd/user-preset
|
||||
%dir %{_prefix}/lib/systemd/system-generators
|
||||
%dir %{_prefix}/lib/systemd/user-generators
|
||||
%{_prefix}/lib/systemd/user-generators/systemd-dbus1-generator
|
||||
%dir %{_prefix}/lib/systemd/ntp-units.d/
|
||||
%dir %{_prefix}/lib/systemd/system-shutdown/
|
||||
%dir %{_prefix}/lib/systemd/system-sleep/
|
||||
@ -1241,6 +1213,7 @@ exit 0
|
||||
%if ! 0%{?bootstrap}
|
||||
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
|
||||
%endif
|
||||
%{_prefix}/lib/systemd/system-generators/systemd-dbus1-generator
|
||||
%if 0%{has_efi}
|
||||
%{_bindir}/bootctl
|
||||
%{_prefix}/lib/systemd/system-generators/systemd-efi-boot-generator
|
||||
@ -1307,6 +1280,7 @@ exit 0
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
|
||||
|
||||
%{_sysconfdir}/X11/xinit/
|
||||
# Some files which may created by us
|
||||
%dir %{_sysconfdir}/X11/xorg.conf.d
|
||||
%ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf
|
||||
@ -1322,15 +1296,23 @@ exit 0
|
||||
%{_datadir}/factory/
|
||||
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
|
||||
%if %{with networkd}
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.network1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
|
||||
%endif
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.systemd1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.locale1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.login1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.hostname1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service
|
||||
%if !0%{?bootstrap}
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.machine1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service
|
||||
%endif
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.timedate1.busname
|
||||
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
|
||||
%dir %{_datadir}/polkit-1
|
||||
%dir %{_datadir}/polkit-1/actions
|
||||
@ -1348,20 +1330,20 @@ exit 0
|
||||
%{_datadir}/systemd
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
# Packaged in sysvinit subpackage
|
||||
%exclude %{_mandir}/man1/init.1*
|
||||
%exclude %{_mandir}/man8/halt.8*
|
||||
%exclude %{_mandir}/man8/reboot.8*
|
||||
%exclude %{_mandir}/man8/shutdown.8*
|
||||
%exclude %{_mandir}/man8/poweroff.8*
|
||||
%exclude %{_mandir}/man8/telinit.8*
|
||||
%exclude %{_mandir}/man8/runlevel.8*
|
||||
%exclude %{_mandir}/man*/*udev*.[0-9]*
|
||||
%exclude %{_mandir}/man8/systemd-journal-gatewayd.*
|
||||
%{_mandir}/man1/*.1*
|
||||
%{_mandir}/man5/*.5*
|
||||
%{_mandir}/man7/*.7*
|
||||
%{_mandir}/man8/*.8*
|
||||
%_mandir/man1/[a-rt-z]*ctl.1*
|
||||
%_mandir/man1/systemc*.1*
|
||||
%_mandir/man1/systemd*.1*
|
||||
%_mandir/man5/[a-tv-z]*
|
||||
%_mandir/man5/user*
|
||||
%_mandir/man7/[bdfks]*
|
||||
%_mandir/man8/kern*
|
||||
%_mandir/man8/pam_*
|
||||
%_mandir/man8/systemd-[a-gik-tv]*
|
||||
%_mandir/man8/systemd-h[aioy]*
|
||||
%_mandir/man8/systemd-journal-remote.*
|
||||
%_mandir/man8/systemd-journal-upload.*
|
||||
%_mandir/man8/systemd-journald*
|
||||
%_mandir/man8/systemd-u[ps]*
|
||||
%endif
|
||||
%{_docdir}/systemd
|
||||
%{_prefix}/lib/udev/rules.d/70-uaccess.rules
|
||||
@ -1408,21 +1390,16 @@ exit 0
|
||||
%{_libdir}/libsystemd-login.so
|
||||
%{_libdir}/libsystemd-id128.so
|
||||
%{_libdir}/libsystemd-journal.so
|
||||
%dir %{_includedir}/systemd
|
||||
%{_includedir}/systemd/sd-login.h
|
||||
%{_includedir}/systemd/sd-daemon.h
|
||||
%{_includedir}/systemd/sd-id128.h
|
||||
%{_includedir}/systemd/sd-journal.h
|
||||
%{_includedir}/systemd/sd-messages.h
|
||||
%{_includedir}/systemd/_sd-common.h
|
||||
%{_libdir}/pkgconfig/systemd.pc
|
||||
%{_includedir}/systemd/
|
||||
%{_datadir}/pkgconfig/systemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-daemon.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-login.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-id128.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-journal.pc
|
||||
%if ! 0%{?bootstrap}
|
||||
%{_mandir}/man3/*.3*
|
||||
%_mandir/man3/SD*.3*
|
||||
%_mandir/man3/sd*.3*
|
||||
%endif
|
||||
|
||||
%files sysvinit
|
||||
@ -1454,6 +1431,7 @@ exit 0
|
||||
%if 0%{?suse_version} <= 1310
|
||||
%{_prefix}/lib/firmware
|
||||
%endif
|
||||
%{_bindir}/systemd-hwdb
|
||||
%dir %{_prefix}/lib/udev/
|
||||
%{_prefix}/lib/udev/accelerometer
|
||||
%{_prefix}/lib/udev/ata_id
|
||||
@ -1472,14 +1450,18 @@ exit 0
|
||||
%exclude %{_prefix}/lib/udev/rules.d/73-seat-numlock.rules
|
||||
%exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules
|
||||
%{_prefix}/lib/udev/rules.d/*.rules
|
||||
%dir %{_prefix}/lib/udev/hwdb.d
|
||||
%{_prefix}/lib/udev/hwdb.d/*
|
||||
%{_prefix}/lib/udev/hwdb.d/
|
||||
%dir %{_sysconfdir}/udev/
|
||||
%dir %{_sysconfdir}/udev/rules.d/
|
||||
%ghost %{_sysconfdir}/udev/hwdb.bin
|
||||
%config(noreplace) %{_sysconfdir}/udev/udev.conf
|
||||
%if ! 0%{?bootstrap}
|
||||
%{_mandir}/man?/*udev*.[0-9]*
|
||||
%_mandir/man5/udev*
|
||||
%_mandir/man7/hwdb*
|
||||
%_mandir/man7/udev*
|
||||
%_mandir/man8/systemd-hwdb*
|
||||
%_mandir/man8/systemd-udev*
|
||||
%_mandir/man8/udev*
|
||||
%endif
|
||||
%dir %{_prefix}/lib/systemd/system
|
||||
%{_prefix}/lib/systemd/systemd-udevd
|
||||
@ -1496,6 +1478,16 @@ exit 0
|
||||
%{_datadir}/pkgconfig/udev.pc
|
||||
%endif
|
||||
|
||||
%files -n libsystemd0
|
||||
%defattr(-,root,root)
|
||||
%_libdir/libsystemd.so.*
|
||||
%if %{with compat_libs}
|
||||
%_libdir/libsystemd-daemon.so.*
|
||||
%_libdir/libsystemd-login.so.*
|
||||
%_libdir/libsystemd-id128.so.*
|
||||
%_libdir/libsystemd-journal.so.*
|
||||
%endif
|
||||
|
||||
%files -n lib%{udevpkgname}%{udev_major}
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/libudev.so.*
|
||||
@ -1505,35 +1497,9 @@ exit 0
|
||||
%{_includedir}/libudev.h
|
||||
%{_libdir}/libudev.so
|
||||
%{_libdir}/pkgconfig/libudev.pc
|
||||
%if ! 0%{?bootstrap}
|
||||
%dir %{_datadir}/gtk-doc
|
||||
%dir %{_datadir}/gtk-doc/html
|
||||
%dir %{_datadir}/gtk-doc/html/libudev
|
||||
%{_datadir}/gtk-doc/html/libudev/*
|
||||
%endif
|
||||
%{_mandir}/man3/*udev*.3*
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%files -n libgudev-1_0-0
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/libgudev-1.0.so.*
|
||||
|
||||
%files -n typelib-1_0-GUdev-1_0
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/girepository-1.0/GUdev-1.0.typelib
|
||||
|
||||
%files -n libgudev-1_0-devel
|
||||
%defattr(-,root,root)
|
||||
%dir %{_includedir}/gudev-1.0
|
||||
%dir %{_includedir}/gudev-1.0/gudev
|
||||
%{_includedir}/gudev-1.0/gudev/*.h
|
||||
%{_libdir}/libgudev-1.0.so
|
||||
%{_libdir}/pkgconfig/gudev-1.0.pc
|
||||
%dir %{_datadir}/gtk-doc
|
||||
%dir %{_datadir}/gtk-doc/html
|
||||
%dir %{_datadir}/gtk-doc/html/gudev
|
||||
%{_datadir}/gtk-doc/html/gudev/*
|
||||
%{_datadir}/gir-1.0/GUdev-1.0.gir
|
||||
|
||||
%files logger
|
||||
%defattr(-,root,root)
|
||||
%dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal/
|
||||
@ -1544,6 +1510,8 @@ exit 0
|
||||
%files -n nss-myhostname
|
||||
%defattr(-, root, root)
|
||||
%{_sbindir}/nss-myhostname-config
|
||||
%{_mandir}/man8/libnss_myhostname.*
|
||||
%{_mandir}/man8/nss-myhostname.*
|
||||
/%{_lib}/*nss_myhostname*
|
||||
|
||||
%files journal-gateway
|
||||
@ -1556,6 +1524,8 @@ exit 0
|
||||
%files -n nss-mymachines
|
||||
%defattr(-,root,root)
|
||||
%_libdir/libnss_mymachines.so*
|
||||
%_mandir/man8/libnss_mymachines.*
|
||||
%_mandir/man8/nss-mymachines.*
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
@ -2,10 +2,10 @@
|
||||
src/login/systemd-user | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-218/src/login/systemd-user
|
||||
Index: systemd-221/src/login/systemd-user
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/login/systemd-user
|
||||
+++ systemd-218/src/login/systemd-user
|
||||
--- systemd-221.orig/src/login/systemd-user
|
||||
+++ systemd-221/src/login/systemd-user
|
||||
@@ -2,5 +2,5 @@
|
||||
#
|
||||
# Used by systemd --user instances.
|
||||
|
@ -1,121 +0,0 @@
|
||||
From 7b8b1ca177a532a6673e5795af867b3631622391 Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Reinecke <hare@suse.de>
|
||||
Date: Fri, 7 Mar 2014 14:04:58 +0100
|
||||
Subject: [PATCH] systemd: powerd initctl support
|
||||
|
||||
Old versions of powerd will be using the initctl fifo to signal
|
||||
state changes. To maintain backward compability systemd should
|
||||
be interpreting these messages, too.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
---
|
||||
src/initctl/initctl.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 70 insertions(+), 1 deletion(-)
|
||||
|
||||
--- systemd-219.orig/src/initctl/initctl.c
|
||||
+++ systemd-219/src/initctl/initctl.c
|
||||
@@ -32,8 +32,11 @@
|
||||
#include <sys/un.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
+#include <sys/reboot.h>
|
||||
+#include <linux/reboot.h>
|
||||
|
||||
#include "sd-daemon.h"
|
||||
+#include "sd-shutdown.h"
|
||||
#include "sd-bus.h"
|
||||
|
||||
#include "util.h"
|
||||
@@ -44,6 +47,7 @@
|
||||
#include "bus-util.h"
|
||||
#include "bus-error.h"
|
||||
#include "def.h"
|
||||
+#include "socket-util.h"
|
||||
|
||||
#define SERVER_FD_MAX 16
|
||||
#define TIMEOUT_MSEC ((int) (DEFAULT_EXIT_USEC/USEC_PER_MSEC))
|
||||
@@ -141,7 +145,54 @@ static void change_runlevel(Server *s, i
|
||||
}
|
||||
}
|
||||
|
||||
+static int send_shutdownd(unsigned delay, char mode, const char *message) {
|
||||
+#ifdef HAVE_SYSV_COMPAT
|
||||
+ usec_t t = now(CLOCK_REALTIME) + delay * USEC_PER_MINUTE;
|
||||
+ struct sd_shutdown_command c = {
|
||||
+ .usec = t,
|
||||
+ .mode = mode,
|
||||
+ .dry_run = false,
|
||||
+ .warn_wall = true,
|
||||
+ };
|
||||
+
|
||||
+ union sockaddr_union sockaddr = {
|
||||
+ .un.sun_family = AF_UNIX,
|
||||
+ .un.sun_path = "/run/systemd/shutdownd",
|
||||
+ };
|
||||
+
|
||||
+ struct iovec iovec[2] = {{
|
||||
+ .iov_base = (char*) &c,
|
||||
+ .iov_len = offsetof(struct sd_shutdown_command, wall_message),
|
||||
+ }};
|
||||
+
|
||||
+ struct msghdr msghdr = {
|
||||
+ .msg_name = &sockaddr,
|
||||
+ .msg_namelen = offsetof(struct sockaddr_un, sun_path)
|
||||
+ + sizeof("/run/systemd/shutdownd") - 1,
|
||||
+ .msg_iov = iovec,
|
||||
+ .msg_iovlen = 1,
|
||||
+ };
|
||||
+
|
||||
+ _cleanup_close_ int fd;
|
||||
+
|
||||
+ fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
|
||||
+ if (fd < 0)
|
||||
+ return -errno;
|
||||
+
|
||||
+ if (!isempty(message)) {
|
||||
+ iovec[1].iov_base = (char*) message;
|
||||
+ iovec[1].iov_len = strlen(message);
|
||||
+ msghdr.msg_iovlen++;
|
||||
+ }
|
||||
+
|
||||
+ if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0)
|
||||
+ return -errno;
|
||||
+#endif
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void request_process(Server *s, const struct init_request *req) {
|
||||
+ int r;
|
||||
assert(s);
|
||||
assert(req);
|
||||
|
||||
@@ -184,9 +235,28 @@ static void request_process(Server *s, c
|
||||
return;
|
||||
|
||||
case INIT_CMD_POWERFAIL:
|
||||
+ r = send_shutdownd(2, SD_SHUTDOWN_POWEROFF,
|
||||
+ "THE POWER IS FAILED! SYSTEM GOING DOWN! PLEASE LOG OFF NOW!");
|
||||
+ if (r < 0) {
|
||||
+ log_warning("Failed to talk to shutdownd, shutdown cancelled: %s", strerror(-r));
|
||||
+ }
|
||||
+ return;
|
||||
case INIT_CMD_POWERFAILNOW:
|
||||
+ r = send_shutdownd(0, SD_SHUTDOWN_POWEROFF,
|
||||
+ "THE POWER IS FAILED! LOW BATTERY - EMERGENCY SYSTEM SHUTDOWN!");
|
||||
+ if (r < 0) {
|
||||
+ log_warning("Failed to talk to shutdownd, proceeding with immediate shutdown: %s", strerror(-r));
|
||||
+ reboot(RB_ENABLE_CAD);
|
||||
+ reboot(RB_POWER_OFF);
|
||||
+ }
|
||||
+ return;
|
||||
+
|
||||
case INIT_CMD_POWEROK:
|
||||
- log_warning("Received UPS/power initctl request. This is not implemented in systemd. Upgrade your UPS daemon!");
|
||||
+ r = send_shutdownd(0, SD_SHUTDOWN_NONE,
|
||||
+ "THE POWER IS BACK");
|
||||
+ if (r < 0) {
|
||||
+ log_warning("Failed to talk to shutdownd, proceeding with shutdown: %s", strerror(-r));
|
||||
+ }
|
||||
return;
|
||||
|
||||
case INIT_CMD_CHANGECONS:
|
@ -8,10 +8,10 @@ SUSE policy is to not clean /tmp by default.
|
||||
tmpfiles.d/tmp.conf | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd/tmpfiles.d/tmp.conf
|
||||
Index: systemd-221/tmpfiles.d/tmp.conf
|
||||
===================================================================
|
||||
--- systemd.orig/tmpfiles.d/tmp.conf
|
||||
+++ systemd/tmpfiles.d/tmp.conf
|
||||
--- systemd-221.orig/tmpfiles.d/tmp.conf
|
||||
+++ systemd-221/tmpfiles.d/tmp.conf
|
||||
@@ -8,8 +8,9 @@
|
||||
# See tmpfiles.d(5) for details
|
||||
|
||||
|
@ -1,3 +1,47 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 19 20:51:14 UTC 2015 - jengelh@inai.de
|
||||
|
||||
- Update to new upstream release 221
|
||||
* From 220:
|
||||
* libgudev was moved into a package of its own
|
||||
* Runlevels 2, 3 and 4 are no longer distinct, they all map to
|
||||
multi-user.target.
|
||||
* The EFI System Partition mounted to /boot will be unmounted
|
||||
2 minutes after boot.
|
||||
* systemd does not support direct live-upgrades (via `systemctl
|
||||
daemon-reexec`) from versions older than v44 anymore.
|
||||
* systemd-nspawn may now be called as part of a shell pipeline.
|
||||
* systemd-shutdownd has been removed. This service was
|
||||
previously responsible for implementing scheduled shutdowns
|
||||
as exposed in /usr/bin/shutdown's time parameter. This
|
||||
functionality has now been moved into systemd-logind and is
|
||||
accessible via a bus interface.
|
||||
* udev will no longer call blkid and create symlinks for all
|
||||
block devices, but merely those from a whitelist
|
||||
(cf. 60-persistent-storage.rules).
|
||||
* /usr/lib/os-release gained a new optional field VARIANT=
|
||||
* Details at
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2015-May/032147.html
|
||||
* From 221:
|
||||
* New sd-bus and sd-event APIs in libsystemd
|
||||
* If there is both a systemd unit and a SysV init script for the
|
||||
same service name, and `systemctl enable` or other operation is
|
||||
run, both will now be enabled (or execute the related operation
|
||||
on both), not just the unit.
|
||||
- Split libsystemd0 to support systemd-less nspawn containers
|
||||
- Redo manpage file lists without %exclude, tends to hide
|
||||
unpackaged files.
|
||||
- hwdb belongs to udev
|
||||
- Resolve memory leak and add missing _cleanup_free_ to
|
||||
0001-On_s390_con3270_disable_ANSI_colour_esc.patch
|
||||
- Remove systemd-powerd-initctl-support.patch
|
||||
(no longer builds because shutdownd is gone)
|
||||
- Remove quilt-patches/0001-core-rework-device-state-logic.patch,
|
||||
0001-Let-some-boolean-survive-a-daemon-reload.patch
|
||||
(merged upstream),
|
||||
0001-Let-some-boolean-survive-a-daemon-reload.patch
|
||||
(obsolete)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 11 14:48:03 UTC 2015 - werner@suse.de
|
||||
|
||||
|
202
systemd.spec
202
systemd.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package systemd
|
||||
#
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -44,7 +44,7 @@
|
||||
|
||||
Name: systemd
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 219
|
||||
Version: 221
|
||||
Release: 0
|
||||
Summary: A System and Session Manager
|
||||
License: LGPL-2.1+
|
||||
@ -56,7 +56,6 @@ BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gperf
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: intltool
|
||||
BuildRequires: libacl-devel
|
||||
BuildRequires: libcap-devel
|
||||
@ -85,8 +84,6 @@ Conflicts: systemd
|
||||
Conflicts: kiwi
|
||||
%else
|
||||
BuildRequires: docbook-xsl-stylesheets
|
||||
BuildRequires: gobject-introspection-devel
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: libgcrypt-devel
|
||||
BuildRequires: libusb-devel
|
||||
BuildRequires: libxslt-tools
|
||||
@ -112,7 +109,7 @@ BuildRequires: pam-config >= 0.79-5
|
||||
Requires: pwdutils
|
||||
Requires: systemd-presets-branding
|
||||
Requires: sysvinit-tools
|
||||
Requires: util-linux >= 2.25
|
||||
Requires: util-linux >= 2.26
|
||||
Requires(post): coreutils
|
||||
Requires(post): findutils
|
||||
Requires(post): pam-config >= 0.79-5
|
||||
@ -201,8 +198,6 @@ Patch180: 0014-journald-with-journaling-FS.patch
|
||||
Patch182: 0019-make-completion-smart-to-be-able-to-redirect.patch
|
||||
# PATCH-FIX-SUSE 0001-add-network-device-after-NFS-mount-units.patch werner@suse.com
|
||||
Patch183: 0001-add-network-device-after-NFS-mount-units.patch
|
||||
# PATCH-FIX-SUSE systemd-powerd-initctl-support.patch
|
||||
Patch185: systemd-powerd-initctl-support.patch
|
||||
# PATCH-FIX-SUSE systemctl-set-default-target.patch
|
||||
Patch186: systemctl-set-default-target.patch
|
||||
# PATCH-FIX-SUSE boot-local-start.patch (bnc #869142)
|
||||
@ -248,9 +243,6 @@ Patch490: watch_resolv.conf_for_become_changed.patch
|
||||
Patch520: systemd-add-user-keep.patch
|
||||
# PATCH-FIX-SUSE systemd-add-user-keep.patch (bnc#903009)
|
||||
Patch521: kbd-model-map.patch
|
||||
Patch522: 0001-core-rework-device-state-logic.patch
|
||||
# PATCH-FIX-SUSE/PATCH-FIX-UPSTREAM
|
||||
Patch523: 0001-Let-some-boolean-survive-a-daemon-reload.patch
|
||||
|
||||
# UDEV PATCHES
|
||||
# ============
|
||||
@ -325,7 +317,7 @@ Some systemd commands offer bash completion, but it's an optional dependency.
|
||||
Summary: Development headers for systemd
|
||||
License: LGPL-2.1+
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name} = %{version}
|
||||
Requires: libsystemd0 = %version
|
||||
Requires: systemd-rpm-macros
|
||||
%if 0%{?bootstrap}
|
||||
Conflicts: systemd-devel
|
||||
@ -346,6 +338,32 @@ Provides: sysvinit:/sbin/init
|
||||
%description sysvinit
|
||||
Drop-in replacement of System V init tools.
|
||||
|
||||
%package -n libsystemd0
|
||||
Summary: Component library for systemd
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libsystemd0
|
||||
This library provides several of the systemd C APIs:
|
||||
|
||||
* sd-bus implements an alternative D-Bus client library that is
|
||||
relatively easy to use, very efficient and supports both classic
|
||||
D-Bus as well as kdbus as transport backend.
|
||||
|
||||
* sd-daemon(3): for system services (daemons) to report their status
|
||||
to systemd and to make easy use of socket-based activation logic
|
||||
|
||||
* sd-event is a generic event loop abstraction that is built around
|
||||
Linux epoll, but adds features such as event prioritization or
|
||||
efficient timer handling.
|
||||
|
||||
* sd-id128(3): generation and processing of 128-bit IDs
|
||||
|
||||
* sd-journal(3): API to submit and query journal log entries
|
||||
|
||||
* sd-login(3): APIs to introspect and monitor seat, login session and
|
||||
user status information on the local system.
|
||||
|
||||
%package -n %{udevpkgname}
|
||||
Summary: A rule-based device node and kernel event manager
|
||||
License: GPL-2.0
|
||||
@ -427,38 +445,6 @@ This package contains the development files for the library libudev, a
|
||||
dynamic library, which provides access to udev device information.
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%package -n libgudev-1_0-0
|
||||
Summary: GObject library, to access udev device information
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
Requires: lib%{udevpkgname}%{udev_major} = %{version}-%{release}
|
||||
|
||||
%description -n libgudev-1_0-0
|
||||
This package contains the GObject library libgudev, which provides
|
||||
access to udev device information.
|
||||
|
||||
%package -n typelib-1_0-GUdev-1_0
|
||||
Summary: GObject library, to access udev device information -- Introspection bindings
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n typelib-1_0-GUdev-1_0
|
||||
This package provides the GObject Introspection bindings for libgudev, which
|
||||
provides access to udev device information.
|
||||
|
||||
%package -n libgudev-1_0-devel
|
||||
Summary: Devel package for libgudev
|
||||
License: LGPL-2.1+
|
||||
Group: Development/Libraries/Other
|
||||
Requires: glib2-devel
|
||||
Requires: libgudev-1_0-0 = %{version}-%{release}
|
||||
Requires: libudev-devel = %{version}-%{release}
|
||||
Requires: typelib-1_0-GUdev-1_0 = %{version}-%{release}
|
||||
|
||||
%description -n libgudev-1_0-devel
|
||||
This is the devel package for the GObject library libgudev, which
|
||||
provides GObject access to udev device information.
|
||||
|
||||
%package logger
|
||||
Summary: Journal only logging
|
||||
License: LGPL-2.1+
|
||||
@ -575,7 +561,6 @@ cp %{SOURCE7} m4/
|
||||
%patch180 -p1
|
||||
%patch182 -p1
|
||||
%patch183 -p1
|
||||
%patch185 -p1
|
||||
%patch186 -p1
|
||||
%patch188 -p1
|
||||
%patch189 -p1
|
||||
@ -602,8 +587,6 @@ cp %{SOURCE7} m4/
|
||||
%patch490 -p1
|
||||
%patch520 -p1
|
||||
%patch521 -p1
|
||||
%patch522 -p1
|
||||
%patch523 -p1
|
||||
|
||||
# udev patches
|
||||
%patch1001 -p1
|
||||
@ -708,7 +691,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS
|
||||
--with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \
|
||||
--with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \
|
||||
%if 0%{?bootstrap}
|
||||
--disable-gudev \
|
||||
--disable-myhostname \
|
||||
--disable-manpages \
|
||||
--disable-machined \
|
||||
@ -717,7 +699,6 @@ cflags -Wl,--hash-size=8599 LDFLAGS
|
||||
%if %{with python}
|
||||
--with-python \
|
||||
%endif
|
||||
--enable-gtk-doc \
|
||||
--with-nss-my-hostname-warning \
|
||||
%endif
|
||||
--enable-selinux \
|
||||
@ -1074,16 +1055,13 @@ fi
|
||||
%regenerate_initrd_posttrans
|
||||
%endif
|
||||
|
||||
%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
|
||||
|
||||
%post -n libsystemd0 -p /sbin/ldconfig
|
||||
%postun -n libsystemd0 -p /sbin/ldconfig
|
||||
%post -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
|
||||
%postun -n lib%{udevpkgname}%{udev_major} -p /sbin/ldconfig
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
|
||||
%post -n libgudev-1_0-0 -p /sbin/ldconfig
|
||||
|
||||
%postun -n libgudev-1_0-0 -p /sbin/ldconfig
|
||||
|
||||
%if %{with permission}
|
||||
%verifyscript logger
|
||||
%verify_permissions -e %{_localstatedir}/log/journal/
|
||||
@ -1159,7 +1137,6 @@ exit 0
|
||||
%{_bindir}/systemd-path
|
||||
%{_bindir}/systemd-sysusers
|
||||
%{_bindir}/systemd-notify
|
||||
%{_bindir}/systemd-hwdb
|
||||
%{_bindir}/systemd-run
|
||||
%{_bindir}/systemd-journalctl
|
||||
%{_bindir}/journalctl
|
||||
@ -1175,13 +1152,6 @@ exit 0
|
||||
%{_bindir}/systemd-detect-virt
|
||||
%{_bindir}/timedatectl
|
||||
%{_sbindir}/systemd-sysv-convert
|
||||
%{_libdir}/libsystemd.so.*
|
||||
%if %{with compat_libs}
|
||||
%{_libdir}/libsystemd-daemon.so.*
|
||||
%{_libdir}/libsystemd-login.so.*
|
||||
%{_libdir}/libsystemd-id128.so.*
|
||||
%{_libdir}/libsystemd-journal.so.*
|
||||
%endif
|
||||
%{_bindir}/systemd-cgls
|
||||
%{_bindir}/systemd-cgtop
|
||||
%{_bindir}/systemd-cat
|
||||
@ -1212,6 +1182,7 @@ exit 0
|
||||
%{_prefix}/lib/systemd/system/*.path
|
||||
%{_prefix}/lib/systemd/user/*.target
|
||||
%{_prefix}/lib/systemd/user/*.service
|
||||
%{_prefix}/lib/systemd/user/*.socket
|
||||
%exclude %{_prefix}/lib/systemd/systemd-udevd
|
||||
%if ! 0%{?bootstrap}
|
||||
%exclude %{_prefix}/lib/systemd/systemd-journal-gatewayd
|
||||
@ -1226,6 +1197,7 @@ exit 0
|
||||
%dir %{_prefix}/lib/systemd/user-preset
|
||||
%dir %{_prefix}/lib/systemd/system-generators
|
||||
%dir %{_prefix}/lib/systemd/user-generators
|
||||
%{_prefix}/lib/systemd/user-generators/systemd-dbus1-generator
|
||||
%dir %{_prefix}/lib/systemd/ntp-units.d/
|
||||
%dir %{_prefix}/lib/systemd/system-shutdown/
|
||||
%dir %{_prefix}/lib/systemd/system-sleep/
|
||||
@ -1236,6 +1208,7 @@ exit 0
|
||||
%if ! 0%{?bootstrap}
|
||||
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
|
||||
%endif
|
||||
%{_prefix}/lib/systemd/system-generators/systemd-dbus1-generator
|
||||
%if 0%{has_efi}
|
||||
%{_bindir}/bootctl
|
||||
%{_prefix}/lib/systemd/system-generators/systemd-efi-boot-generator
|
||||
@ -1302,6 +1275,7 @@ exit 0
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
|
||||
|
||||
%{_sysconfdir}/X11/xinit/
|
||||
# Some files which may created by us
|
||||
%dir %{_sysconfdir}/X11/xorg.conf.d
|
||||
%ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf
|
||||
@ -1317,15 +1291,23 @@ exit 0
|
||||
%{_datadir}/factory/
|
||||
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
|
||||
%if %{with networkd}
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.network1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
|
||||
%endif
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.systemd1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.locale1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.login1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.hostname1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service
|
||||
%if !0%{?bootstrap}
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.machine1.busname
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service
|
||||
%endif
|
||||
%{_prefix}/lib/systemd/system/org.freedesktop.timedate1.busname
|
||||
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
|
||||
%dir %{_datadir}/polkit-1
|
||||
%dir %{_datadir}/polkit-1/actions
|
||||
@ -1343,20 +1325,20 @@ exit 0
|
||||
%{_datadir}/systemd
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
# Packaged in sysvinit subpackage
|
||||
%exclude %{_mandir}/man1/init.1*
|
||||
%exclude %{_mandir}/man8/halt.8*
|
||||
%exclude %{_mandir}/man8/reboot.8*
|
||||
%exclude %{_mandir}/man8/shutdown.8*
|
||||
%exclude %{_mandir}/man8/poweroff.8*
|
||||
%exclude %{_mandir}/man8/telinit.8*
|
||||
%exclude %{_mandir}/man8/runlevel.8*
|
||||
%exclude %{_mandir}/man*/*udev*.[0-9]*
|
||||
%exclude %{_mandir}/man8/systemd-journal-gatewayd.*
|
||||
%{_mandir}/man1/*.1*
|
||||
%{_mandir}/man5/*.5*
|
||||
%{_mandir}/man7/*.7*
|
||||
%{_mandir}/man8/*.8*
|
||||
%_mandir/man1/[a-rt-z]*ctl.1*
|
||||
%_mandir/man1/systemc*.1*
|
||||
%_mandir/man1/systemd*.1*
|
||||
%_mandir/man5/[a-tv-z]*
|
||||
%_mandir/man5/user*
|
||||
%_mandir/man7/[bdfks]*
|
||||
%_mandir/man8/kern*
|
||||
%_mandir/man8/pam_*
|
||||
%_mandir/man8/systemd-[a-gik-tv]*
|
||||
%_mandir/man8/systemd-h[aioy]*
|
||||
%_mandir/man8/systemd-journal-remote.*
|
||||
%_mandir/man8/systemd-journal-upload.*
|
||||
%_mandir/man8/systemd-journald*
|
||||
%_mandir/man8/systemd-u[ps]*
|
||||
%endif
|
||||
%{_docdir}/systemd
|
||||
%{_prefix}/lib/udev/rules.d/70-uaccess.rules
|
||||
@ -1403,21 +1385,16 @@ exit 0
|
||||
%{_libdir}/libsystemd-login.so
|
||||
%{_libdir}/libsystemd-id128.so
|
||||
%{_libdir}/libsystemd-journal.so
|
||||
%dir %{_includedir}/systemd
|
||||
%{_includedir}/systemd/sd-login.h
|
||||
%{_includedir}/systemd/sd-daemon.h
|
||||
%{_includedir}/systemd/sd-id128.h
|
||||
%{_includedir}/systemd/sd-journal.h
|
||||
%{_includedir}/systemd/sd-messages.h
|
||||
%{_includedir}/systemd/_sd-common.h
|
||||
%{_libdir}/pkgconfig/systemd.pc
|
||||
%{_includedir}/systemd/
|
||||
%{_datadir}/pkgconfig/systemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-daemon.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-login.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-id128.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-journal.pc
|
||||
%if ! 0%{?bootstrap}
|
||||
%{_mandir}/man3/*.3*
|
||||
%_mandir/man3/SD*.3*
|
||||
%_mandir/man3/sd*.3*
|
||||
%endif
|
||||
|
||||
%files sysvinit
|
||||
@ -1449,6 +1426,7 @@ exit 0
|
||||
%if 0%{?suse_version} <= 1310
|
||||
%{_prefix}/lib/firmware
|
||||
%endif
|
||||
%{_bindir}/systemd-hwdb
|
||||
%dir %{_prefix}/lib/udev/
|
||||
%{_prefix}/lib/udev/accelerometer
|
||||
%{_prefix}/lib/udev/ata_id
|
||||
@ -1467,14 +1445,18 @@ exit 0
|
||||
%exclude %{_prefix}/lib/udev/rules.d/73-seat-numlock.rules
|
||||
%exclude %{_prefix}/lib/udev/rules.d/99-systemd.rules
|
||||
%{_prefix}/lib/udev/rules.d/*.rules
|
||||
%dir %{_prefix}/lib/udev/hwdb.d
|
||||
%{_prefix}/lib/udev/hwdb.d/*
|
||||
%{_prefix}/lib/udev/hwdb.d/
|
||||
%dir %{_sysconfdir}/udev/
|
||||
%dir %{_sysconfdir}/udev/rules.d/
|
||||
%ghost %{_sysconfdir}/udev/hwdb.bin
|
||||
%config(noreplace) %{_sysconfdir}/udev/udev.conf
|
||||
%if ! 0%{?bootstrap}
|
||||
%{_mandir}/man?/*udev*.[0-9]*
|
||||
%_mandir/man5/udev*
|
||||
%_mandir/man7/hwdb*
|
||||
%_mandir/man7/udev*
|
||||
%_mandir/man8/systemd-hwdb*
|
||||
%_mandir/man8/systemd-udev*
|
||||
%_mandir/man8/udev*
|
||||
%endif
|
||||
%dir %{_prefix}/lib/systemd/system
|
||||
%{_prefix}/lib/systemd/systemd-udevd
|
||||
@ -1491,6 +1473,16 @@ exit 0
|
||||
%{_datadir}/pkgconfig/udev.pc
|
||||
%endif
|
||||
|
||||
%files -n libsystemd0
|
||||
%defattr(-,root,root)
|
||||
%_libdir/libsystemd.so.*
|
||||
%if %{with compat_libs}
|
||||
%_libdir/libsystemd-daemon.so.*
|
||||
%_libdir/libsystemd-login.so.*
|
||||
%_libdir/libsystemd-id128.so.*
|
||||
%_libdir/libsystemd-journal.so.*
|
||||
%endif
|
||||
|
||||
%files -n lib%{udevpkgname}%{udev_major}
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/libudev.so.*
|
||||
@ -1500,35 +1492,9 @@ exit 0
|
||||
%{_includedir}/libudev.h
|
||||
%{_libdir}/libudev.so
|
||||
%{_libdir}/pkgconfig/libudev.pc
|
||||
%if ! 0%{?bootstrap}
|
||||
%dir %{_datadir}/gtk-doc
|
||||
%dir %{_datadir}/gtk-doc/html
|
||||
%dir %{_datadir}/gtk-doc/html/libudev
|
||||
%{_datadir}/gtk-doc/html/libudev/*
|
||||
%endif
|
||||
%{_mandir}/man3/*udev*.3*
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%files -n libgudev-1_0-0
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/libgudev-1.0.so.*
|
||||
|
||||
%files -n typelib-1_0-GUdev-1_0
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/girepository-1.0/GUdev-1.0.typelib
|
||||
|
||||
%files -n libgudev-1_0-devel
|
||||
%defattr(-,root,root)
|
||||
%dir %{_includedir}/gudev-1.0
|
||||
%dir %{_includedir}/gudev-1.0/gudev
|
||||
%{_includedir}/gudev-1.0/gudev/*.h
|
||||
%{_libdir}/libgudev-1.0.so
|
||||
%{_libdir}/pkgconfig/gudev-1.0.pc
|
||||
%dir %{_datadir}/gtk-doc
|
||||
%dir %{_datadir}/gtk-doc/html
|
||||
%dir %{_datadir}/gtk-doc/html/gudev
|
||||
%{_datadir}/gtk-doc/html/gudev/*
|
||||
%{_datadir}/gir-1.0/GUdev-1.0.gir
|
||||
|
||||
%files logger
|
||||
%defattr(-,root,root)
|
||||
%dir %attr(2755,root,systemd-journal) %{_localstatedir}/log/journal/
|
||||
@ -1539,6 +1505,8 @@ exit 0
|
||||
%files -n nss-myhostname
|
||||
%defattr(-, root, root)
|
||||
%{_sbindir}/nss-myhostname-config
|
||||
%{_mandir}/man8/libnss_myhostname.*
|
||||
%{_mandir}/man8/nss-myhostname.*
|
||||
/%{_lib}/*nss_myhostname*
|
||||
|
||||
%files journal-gateway
|
||||
@ -1551,6 +1519,8 @@ exit 0
|
||||
%files -n nss-mymachines
|
||||
%defattr(-,root,root)
|
||||
%_libdir/libnss_mymachines.so*
|
||||
%_mandir/man8/libnss_mymachines.*
|
||||
%_mandir/man8/nss-mymachines.*
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
@ -5,9 +5,11 @@ Provide /run/lock/subsys directory to be able to provide the
|
||||
tmpfiles.d/legacy.conf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- systemd-210/tmpfiles.d/legacy.conf
|
||||
+++ systemd-210/tmpfiles.d/legacy.conf 2014-07-30 12:36:36.862735670 +0000
|
||||
@@ -16,7 +16,7 @@ d /run/lock 0775 root lock -
|
||||
Index: systemd-221/tmpfiles.d/legacy.conf
|
||||
===================================================================
|
||||
--- systemd-221.orig/tmpfiles.d/legacy.conf
|
||||
+++ systemd-221/tmpfiles.d/legacy.conf
|
||||
@@ -17,7 +17,7 @@ L /var/lock - - - - ../run/lock
|
||||
# /run/lock/subsys is used for serializing SysV service execution, and
|
||||
# hence without use on SysV-less systems.
|
||||
|
||||
|
@ -2,10 +2,10 @@
|
||||
src/tty-ask-password-agent/tty-ask-password-agent.c | 171 +++++++++++++++++++-
|
||||
1 file changed, 166 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
Index: systemd-221/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
+++ systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
--- systemd-221.orig/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
+++ systemd-221/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
@@ -31,6 +31,10 @@
|
||||
#include <getopt.h>
|
||||
#include <sys/signalfd.h>
|
||||
@ -24,10 +24,10 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
+#include "fileio.h"
|
||||
+#include "macro.h"
|
||||
+#include "list.h"
|
||||
|
||||
static enum {
|
||||
ACTION_LIST,
|
||||
@@ -50,6 +57,22 @@ static enum {
|
||||
#include "process-util.h"
|
||||
#include "terminal-util.h"
|
||||
#include "signal-util.h"
|
||||
@@ -53,6 +60,22 @@ static enum {
|
||||
ACTION_WALL
|
||||
} arg_action = ACTION_QUERY;
|
||||
|
||||
@ -50,7 +50,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
static bool arg_plymouth = false;
|
||||
static bool arg_console = false;
|
||||
|
||||
@@ -208,6 +231,58 @@ static int ask_password_plymouth(
|
||||
@@ -211,6 +234,58 @@ static int ask_password_plymouth(
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
static int parse_password(const char *filename, char **wall) {
|
||||
_cleanup_free_ char *socket_name = NULL, *message = NULL, *packet = NULL;
|
||||
uint64_t not_after = 0;
|
||||
@@ -308,7 +383,7 @@ static int parse_password(const char *fi
|
||||
@@ -311,7 +386,7 @@ static int parse_password(const char *fi
|
||||
_cleanup_free_ char *password = NULL;
|
||||
|
||||
if (arg_console) {
|
||||
@ -118,7 +118,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
if (tty_fd < 0)
|
||||
return tty_fd;
|
||||
}
|
||||
@@ -612,9 +687,85 @@ static int parse_argv(int argc, char *ar
|
||||
@@ -615,9 +690,85 @@ static int parse_argv(int argc, char *ar
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -205,7 +205,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
log_set_target(LOG_TARGET_AUTO);
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
@@ -625,11 +776,19 @@ int main(int argc, char *argv[]) {
|
||||
@@ -628,11 +779,19 @@ int main(int argc, char *argv[]) {
|
||||
if (r <= 0)
|
||||
goto finish;
|
||||
|
||||
@ -228,7 +228,7 @@ Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
if (IN_SET(arg_action, ACTION_WATCH, ACTION_WALL))
|
||||
r = watch_passwords();
|
||||
else
|
||||
@@ -638,6 +797,8 @@ int main(int argc, char *argv[]) {
|
||||
@@ -641,6 +800,8 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Error: %m");
|
||||
|
||||
|
@ -5,11 +5,13 @@ write back the bytes and increase the entropy bit counter.
|
||||
Related to bnc#892096
|
||||
|
||||
---
|
||||
systemd-219/src/random-seed/random-seed.c | 71 +++++++++++++++++++++++++-----
|
||||
src/random-seed/random-seed.c | 71 ++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 61 insertions(+), 10 deletions(-)
|
||||
|
||||
--- systemd-219/src/random-seed/random-seed.c
|
||||
+++ systemd-219/src/random-seed/random-seed.c 2015-04-21 09:39:03.057518051 +0000
|
||||
Index: systemd-221/src/random-seed/random-seed.c
|
||||
===================================================================
|
||||
--- systemd-221.orig/src/random-seed/random-seed.c
|
||||
+++ systemd-221/src/random-seed/random-seed.c
|
||||
@@ -22,7 +22,9 @@
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
@ -37,7 +39,7 @@ Related to bnc#892096
|
||||
|
||||
- buf = malloc(buf_size);
|
||||
- if (!buf) {
|
||||
+ entropy = (struct rand_pool_info*) malloc(sizeof(struct rand_pool_info) + buf_size);
|
||||
+ entropy = malloc(sizeof(struct rand_pool_info) + buf_size);
|
||||
+ if (!entropy) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
@ -70,18 +72,18 @@ Related to bnc#892096
|
||||
seed_fd = open(RANDOM_SEED, O_RDWR|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
|
||||
if (seed_fd < 0) {
|
||||
seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY);
|
||||
@@ -104,7 +124,7 @@ int main(int argc, char *argv[]) {
|
||||
@@ -103,7 +123,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
- k = loop_read(seed_fd, buf, buf_size, false);
|
||||
+ k = loop_read(seed_fd, entropy->buf, entropy->buf_size, false);
|
||||
if (k <= 0) {
|
||||
|
||||
if (r != 0)
|
||||
@@ -115,13 +135,29 @@ int main(int argc, char *argv[]) {
|
||||
} else {
|
||||
lseek(seed_fd, 0, SEEK_SET);
|
||||
if (k < 0)
|
||||
r = log_error_errno(k, "Failed to read seed from " RANDOM_SEED ": %m");
|
||||
else if (k == 0)
|
||||
@@ -111,13 +131,29 @@ int main(int argc, char *argv[]) {
|
||||
else {
|
||||
(void) lseek(seed_fd, 0, SEEK_SET);
|
||||
|
||||
- r = loop_write(random_fd, buf, (size_t) k, false);
|
||||
- if (r < 0)
|
||||
@ -111,8 +113,8 @@ Related to bnc#892096
|
||||
+
|
||||
seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
|
||||
if (seed_fd < 0) {
|
||||
log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m");
|
||||
@@ -136,6 +172,21 @@ int main(int argc, char *argv[]) {
|
||||
r = log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m");
|
||||
@@ -130,6 +166,21 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
@ -132,20 +134,23 @@ Related to bnc#892096
|
||||
+ }
|
||||
+
|
||||
} else {
|
||||
log_error("Unknown verb %s.", argv[1]);
|
||||
log_error("Unknown verb '%s'.", argv[1]);
|
||||
r = -EINVAL;
|
||||
@@ -149,12 +200,12 @@ int main(int argc, char *argv[]) {
|
||||
fchmod(seed_fd, 0600);
|
||||
fchown(seed_fd, 0, 0);
|
||||
@@ -144,7 +195,7 @@ int main(int argc, char *argv[]) {
|
||||
(void) fchmod(seed_fd, 0600);
|
||||
(void) fchown(seed_fd, 0, 0);
|
||||
|
||||
- k = loop_read(random_fd, buf, buf_size, false);
|
||||
+ k = loop_read(random_fd, entropy->buf, entropy->buf_size, false);
|
||||
if (k <= 0) {
|
||||
log_error("Failed to read new seed from /dev/urandom: %s", r < 0 ? strerror(-r) : "EOF");
|
||||
r = k == 0 ? -EIO : (int) k;
|
||||
} else {
|
||||
- r = loop_write(seed_fd, buf, (size_t) k, false);
|
||||
+ r = loop_write(seed_fd, entropy->buf, (size_t) k, false);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to write new random seed file: %m");
|
||||
if (k < 0) {
|
||||
r = log_error_errno(k, "Failed to read new seed from /dev/urandom: %m");
|
||||
goto finish;
|
||||
@@ -155,7 +206,7 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
- r = loop_write(seed_fd, buf, (size_t) k, false);
|
||||
+ r = loop_write(seed_fd, entropy->buf, (size_t) k, false);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to write new random seed file: %m");
|
||||
}
|
||||
|
@ -14,10 +14,10 @@ track progress: https://bugzilla.redhat.com/show_bug.cgi?id=1141137
|
||||
units/getty@.service.m4 | 1 +
|
||||
units/serial-getty@.service.m4 | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
Index: systemd-218/units/getty@.service.m4
|
||||
Index: systemd-221/units/getty@.service.m4
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/getty@.service.m4
|
||||
+++ systemd-218/units/getty@.service.m4
|
||||
--- systemd-221.orig/units/getty@.service.m4
|
||||
+++ systemd-221/units/getty@.service.m4
|
||||
@@ -29,6 +29,7 @@ ConditionPathExists=/dev/tty0
|
||||
[Service]
|
||||
# the VT is cleared by TTYVTDisallocate
|
||||
@ -26,10 +26,10 @@ Index: systemd-218/units/getty@.service.m4
|
||||
Type=idle
|
||||
Restart=always
|
||||
RestartSec=0
|
||||
Index: systemd-218/units/serial-getty@.service.m4
|
||||
Index: systemd-221/units/serial-getty@.service.m4
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/serial-getty@.service.m4
|
||||
+++ systemd-218/units/serial-getty@.service.m4
|
||||
--- systemd-221.orig/units/serial-getty@.service.m4
|
||||
+++ systemd-221/units/serial-getty@.service.m4
|
||||
@@ -24,6 +24,7 @@ IgnoreOnIsolate=yes
|
||||
|
||||
[Service]
|
||||
|
@ -3,19 +3,19 @@
|
||||
src/core/manager.h | 5 ++
|
||||
2 files changed, 98 insertions(+)
|
||||
|
||||
Index: systemd-218/src/core/manager.c
|
||||
Index: systemd-221/src/core/manager.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/manager.c
|
||||
+++ systemd-218/src/core/manager.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <sys/stat.h>
|
||||
--- systemd-221.orig/src/core/manager.c
|
||||
+++ systemd-221/src/core/manager.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/timerfd.h>
|
||||
+#include <resolv.h>
|
||||
|
||||
#ifdef HAVE_AUDIT
|
||||
#include <libaudit.h>
|
||||
@@ -302,6 +303,91 @@ static int manager_check_ask_password(Ma
|
||||
@@ -308,6 +309,91 @@ static int manager_check_ask_password(Ma
|
||||
return m->have_ask_password;
|
||||
}
|
||||
|
||||
@ -107,7 +107,7 @@ Index: systemd-218/src/core/manager.c
|
||||
static int manager_watch_idle_pipe(Manager *m) {
|
||||
int r;
|
||||
|
||||
@@ -557,6 +643,7 @@ int manager_new(SystemdRunningAs running
|
||||
@@ -585,6 +671,7 @@ int manager_new(ManagerRunningAs running
|
||||
m->pin_cgroupfs_fd = m->notify_fd = m->signal_fd = m->time_change_fd = m->dev_autofs_fd = m->private_listen_fd = m->kdbus_fd = m->utab_inotify_fd = -1;
|
||||
m->current_job_id = 1; /* start as id #1, so that we can leave #0 around as "null-like" value */
|
||||
|
||||
@ -115,7 +115,7 @@ Index: systemd-218/src/core/manager.c
|
||||
m->ask_password_inotify_fd = -1;
|
||||
m->have_ask_password = -EINVAL; /* we don't know */
|
||||
|
||||
@@ -618,6 +705,10 @@ int manager_new(SystemdRunningAs running
|
||||
@@ -651,6 +738,10 @@ int manager_new(ManagerRunningAs running
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
@ -126,7 +126,7 @@ Index: systemd-218/src/core/manager.c
|
||||
m->udev = udev_new();
|
||||
if (!m->udev) {
|
||||
r = -ENOMEM;
|
||||
@@ -896,6 +987,8 @@ Manager* manager_free(Manager *m) {
|
||||
@@ -929,6 +1020,8 @@ Manager* manager_free(Manager *m) {
|
||||
if (!m)
|
||||
return NULL;
|
||||
|
||||
@ -135,11 +135,11 @@ Index: systemd-218/src/core/manager.c
|
||||
manager_clear_jobs_and_units(m);
|
||||
|
||||
for (c = 0; c < _UNIT_TYPE_MAX; c++)
|
||||
Index: systemd-218/src/core/manager.h
|
||||
Index: systemd-221/src/core/manager.h
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/manager.h
|
||||
+++ systemd-218/src/core/manager.h
|
||||
@@ -185,6 +185,11 @@ struct Manager {
|
||||
--- systemd-221.orig/src/core/manager.h
|
||||
+++ systemd-221/src/core/manager.h
|
||||
@@ -181,6 +181,11 @@ struct Manager {
|
||||
int utab_inotify_fd;
|
||||
sd_event_source *mount_utab_event_source;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user