SHA256
1
0
forked from pool/systemd

Accepting request 286310 from home:jengelh:systemd

- Reinstate and improve (remove huge indents from)
  tty-ask-password-agent-on-console.patch,
  0014-journald-with-journaling-FS.patch, rootsymlink_generator.

OBS-URL: https://build.opensuse.org/request/show/286310
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=847
This commit is contained in:
Dr. Werner Fink 2015-02-16 11:36:25 +00:00 committed by Git OBS Bridge
parent 2a176fe605
commit 8b6afdd7bf
26 changed files with 736 additions and 569 deletions

View File

@ -1,15 +1,15 @@
--- ---
rules/99-systemd.rules.in | 2 rules/99-systemd.rules.in | 2
src/core/manager.c | 24 ++++++++-- src/core/manager.c | 24 ++++++++---
src/shared/util.c | 101 ++++++++++++++++++++++++++++++++++++++++++++-- src/shared/util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++--
src/shared/util.h | 1 src/shared/util.h | 1
4 files changed, 118 insertions(+), 10 deletions(-) 4 files changed, 116 insertions(+), 10 deletions(-)
Index: systemd-218/rules/99-systemd.rules.in Index: systemd/rules/99-systemd.rules.in
=================================================================== ===================================================================
--- systemd-218.orig/rules/99-systemd.rules.in --- systemd.orig/rules/99-systemd.rules.in
+++ systemd-218/rules/99-systemd.rules.in +++ systemd/rules/99-systemd.rules.in
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
ACTION=="remove", GOTO="systemd_end" ACTION=="remove", GOTO="systemd_end"
@ -19,11 +19,11 @@ Index: systemd-218/rules/99-systemd.rules.in
KERNEL=="vport*", TAG+="systemd" KERNEL=="vport*", TAG+="systemd"
Index: systemd-218/src/core/manager.c Index: systemd/src/core/manager.c
=================================================================== ===================================================================
--- systemd-218.orig/src/core/manager.c --- systemd.orig/src/core/manager.c
+++ systemd-218/src/core/manager.c +++ systemd/src/core/manager.c
@@ -110,7 +110,7 @@ static int manager_watch_jobs_in_progres @@ -113,7 +113,7 @@ static int manager_watch_jobs_in_progres
#define CYLON_BUFFER_EXTRA (2*(sizeof(ANSI_RED_ON)-1) + sizeof(ANSI_HIGHLIGHT_RED_ON)-1 + 2*(sizeof(ANSI_HIGHLIGHT_OFF)-1)) #define CYLON_BUFFER_EXTRA (2*(sizeof(ANSI_RED_ON)-1) + sizeof(ANSI_HIGHLIGHT_RED_ON)-1 + 2*(sizeof(ANSI_HIGHLIGHT_OFF)-1))
@ -32,7 +32,7 @@ Index: systemd-218/src/core/manager.c
char *p = buffer; char *p = buffer;
assert(buflen >= CYLON_BUFFER_EXTRA + width + 1); assert(buflen >= CYLON_BUFFER_EXTRA + width + 1);
@@ -119,12 +119,14 @@ static void draw_cylon(char buffer[], si @@ -122,12 +122,14 @@ static void draw_cylon(char buffer[], si
if (pos > 1) { if (pos > 1) {
if (pos > 2) if (pos > 2)
p = mempset(p, ' ', pos-2); p = mempset(p, ' ', pos-2);
@ -49,7 +49,7 @@ Index: systemd-218/src/core/manager.c
*p++ = '*'; *p++ = '*';
} }
@@ -135,7 +137,8 @@ static void draw_cylon(char buffer[], si @@ -138,7 +140,8 @@ static void draw_cylon(char buffer[], si
*p++ = '*'; *p++ = '*';
if (pos < width-1) if (pos < width-1)
p = mempset(p, ' ', width-1-pos); p = mempset(p, ' ', width-1-pos);
@ -59,7 +59,7 @@ Index: systemd-218/src/core/manager.c
} }
} }
@@ -152,6 +155,7 @@ void manager_flip_auto_status(Manager *m @@ -155,6 +158,7 @@ void manager_flip_auto_status(Manager *m
} }
static void manager_print_jobs_in_progress(Manager *m) { static void manager_print_jobs_in_progress(Manager *m) {
@ -67,7 +67,7 @@ Index: systemd-218/src/core/manager.c
_cleanup_free_ char *job_of_n = NULL; _cleanup_free_ char *job_of_n = NULL;
Iterator i; Iterator i;
Job *j; Job *j;
@@ -176,10 +180,20 @@ static void manager_print_jobs_in_progre @@ -180,10 +184,20 @@ static void manager_print_jobs_in_progre
assert(counter == print_nr + 1); assert(counter == print_nr + 1);
assert(j); assert(j);
@ -89,11 +89,11 @@ Index: systemd-218/src/core/manager.c
m->jobs_in_progress_iteration++; m->jobs_in_progress_iteration++;
Index: systemd-218/src/shared/util.c Index: systemd/src/shared/util.c
=================================================================== ===================================================================
--- systemd-218.orig/src/shared/util.c --- systemd.orig/src/shared/util.c
+++ systemd-218/src/shared/util.c +++ systemd/src/shared/util.c
@@ -3182,6 +3182,7 @@ int status_vprintf(const char *status, b @@ -3212,6 +3212,7 @@ int status_vprintf(const char *status, b
struct iovec iovec[6] = {}; struct iovec iovec[6] = {};
int n = 0; int n = 0;
static bool prev_ephemeral; static bool prev_ephemeral;
@ -101,7 +101,7 @@ Index: systemd-218/src/shared/util.c
assert(format); assert(format);
@@ -3195,6 +3196,41 @@ int status_vprintf(const char *status, b @@ -3225,6 +3226,41 @@ int status_vprintf(const char *status, b
if (fd < 0) if (fd < 0)
return fd; return fd;
@ -143,7 +143,7 @@ Index: systemd-218/src/shared/util.c
if (ellipse) { if (ellipse) {
char *e; char *e;
size_t emax, sl; size_t emax, sl;
@@ -3217,8 +3253,12 @@ int status_vprintf(const char *status, b @@ -3247,8 +3283,12 @@ int status_vprintf(const char *status, b
} }
} }
@ -158,7 +158,7 @@ Index: systemd-218/src/shared/util.c
prev_ephemeral = ephemeral; prev_ephemeral = ephemeral;
if (status) { if (status) {
@@ -3474,8 +3514,22 @@ void columns_lines_cache_reset(int signu @@ -3504,8 +3544,22 @@ void columns_lines_cache_reset(int signu
bool on_tty(void) { bool on_tty(void) {
static int cached_on_tty = -1; static int cached_on_tty = -1;
@ -182,7 +182,7 @@ Index: systemd-218/src/shared/util.c
return cached_on_tty; return cached_on_tty;
} }
@@ -3493,6 +3547,27 @@ int files_same(const char *filea, const @@ -3523,6 +3577,27 @@ int files_same(const char *filea, const
a.st_ino == b.st_ino; a.st_ino == b.st_ino;
} }
@ -210,11 +210,11 @@ Index: systemd-218/src/shared/util.c
int running_in_chroot(void) { int running_in_chroot(void) {
int ret; int ret;
@@ -3976,7 +4051,25 @@ bool tty_is_vc_resolve(const char *tty) @@ -4006,7 +4081,23 @@ bool tty_is_vc_resolve(const char *tty)
const char *default_term_for_tty(const char *tty) { const char *default_term_for_tty(const char *tty) {
assert(tty); assert(tty);
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt102"; - return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220";
+ if (tty_is_vc_resolve(tty)) + if (tty_is_vc_resolve(tty))
+ return "TERM=linux"; + return "TERM=linux";
+ +
@ -230,18 +230,16 @@ Index: systemd-218/src/shared/util.c
+ if (streq(mode, "3270")) + if (streq(mode, "3270"))
+ return "TERM=ibm327x"; + return "TERM=ibm327x";
+ } + }
+ if (streq(tty, "ttyS1"))
+ return "TERM=vt220";
+#endif +#endif
+ return "TERM=vt102"; + return "TERM=vt220";
} }
bool dirent_is_file(const struct dirent *de) { bool dirent_is_file(const struct dirent *de) {
Index: systemd-218/src/shared/util.h Index: systemd/src/shared/util.h
=================================================================== ===================================================================
--- systemd-218.orig/src/shared/util.h --- systemd.orig/src/shared/util.h
+++ systemd-218/src/shared/util.h +++ systemd/src/shared/util.h
@@ -474,6 +474,7 @@ unsigned lines(void); @@ -475,6 +475,7 @@ unsigned lines(void);
void columns_lines_cache_reset(int _unused_ signum); void columns_lines_cache_reset(int _unused_ signum);
bool on_tty(void); bool on_tty(void);

View File

@ -1,11 +1,22 @@
--- From: werner@suse.de
src/journal/journald-server.c | 29 +++++++++++++++++++++++++++-- Upstream: marked as openSUSE-specific fix originally, but may well
1 file changed, 27 insertions(+), 2 deletions(-) worth be to be sent upstream.
Index: systemd-218/src/journal/journald-server.c Original description:
(none)
Augmented description [jengelh@inai.de]:
Disable COW on journal files, as that is naturally leading to a lot
of unwanted fragmentation on btrfs.
No word on compression…
---
src/journal/journald-server.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
Index: systemd/src/journal/journald-server.c
=================================================================== ===================================================================
--- systemd-218.orig/src/journal/journald-server.c --- systemd.orig/src/journal/journald-server.c
+++ systemd-218/src/journal/journald-server.c +++ systemd/src/journal/journald-server.c
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
#include <sys/signalfd.h> #include <sys/signalfd.h>
@ -14,45 +25,50 @@ Index: systemd-218/src/journal/journald-server.c
#include <linux/sockios.h> #include <linux/sockios.h>
#include <sys/statvfs.h> #include <sys/statvfs.h>
#include <sys/mman.h> #include <sys/mman.h>
@@ -921,7 +922,7 @@ finish: @@ -917,6 +918,38 @@ finish:
dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid);
}
+/*
+ * On journaling and/or compressing file systems, avoid doubling the efforts
+ * for the system, that is, set NOCOW and NOCOMP inode flags. Check for every
+ * single flag, as otherwise, some of the file systems may return EOPNOTSUPP on
+ * a single unkown flag (like BtrFS does).
+ *
+ * …but src/journal/journal-file.c already sets NOCOW too…⸘
+ */
+static void disable_cow(const char *dir, const Server *serv)
+{
+ unsigned long flags;
+ int fd = open(dir, O_DIRECTORY);
+
+ if (fd < 0)
+ return;
+ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) {
+ unsigned long old = flags;
+ if (!(flags & FS_NOATIME_FL) &&
+ ioctl(fd, FS_IOC_SETFLAGS, flags | FS_NOATIME_FL) == 0)
+ flags |= FS_NOATIME_FL;
+ if (!(flags & FS_NOCOW_FL) &&
+ ioctl(fd, FS_IOC_SETFLAGS, flags | FS_NOCOW_FL) == 0)
+ flags |= FS_NOCOW_FL;
+ if (!(flags & FS_NOCOMP_FL) && serv->compress) {
+ flags &= ~FS_COMPR_FL;
+ flags |= FS_NOCOMP_FL;
+ }
+ if (old != flags)
+ ioctl(fd, FS_IOC_SETFLAGS, flags);
+ }
+ close(fd);
+}
static int system_journal_open(Server *s, bool flush_requested) { static int system_journal_open(Server *s, bool flush_requested) {
- int r; int r;
+ int r, fd; @@ -946,6 +979,7 @@ static int system_journal_open(Server *s
char *fn;
sd_id128_t machine;
char ids[33];
@@ -947,7 +948,31 @@ static int system_journal_open(Server *s
(void) mkdir("/var/log/journal/", 0755);
fn = strappenda("/var/log/journal/", ids); fn = strjoina("/var/log/journal/", ids);
- (void) mkdir(fn, 0755); (void) mkdir(fn, 0755);
+ (void)mkdir(fn, 0755); + disable_cow(fn, s);
+
+ /*
+ * On journaling and/or compressing file systems avoid doubling the
+ * efforts for the system, that is set NOCOW and NOCOMP inode flags.
+ * Check for every single flag as otherwise some of the file systems
+ * may return EOPNOTSUPP on one unkown flag (like BtrFS does).
+ */
+ if ((fd = open(fn, O_DIRECTORY)) >= 0) {
+ long flags;
+ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) {
+ int old = flags;
+ if (!(flags&FS_NOATIME_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOATIME_FL) == 0)
+ flags |= FS_NOATIME_FL;
+ if (!(flags&FS_NOCOW_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOCOW_FL) == 0)
+ flags |= FS_NOCOW_FL;
+ if (!(flags&FS_NOCOMP_FL) && s->compress) {
+ flags &= ~FS_COMPR_FL;
+ flags |= FS_NOCOMP_FL;
+ }
+ if (old != flags)
+ ioctl(fd, FS_IOC_SETFLAGS, flags);
+ }
+ close(fd);
+ }
fn = strappenda(fn, "/system.journal"); fn = strjoina(fn, "/system.journal");
r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, s->compress, s->seal, &s->system_metrics, s->mmap, NULL, &s->system_journal); r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, s->compress, s->seal, &s->system_metrics, s->mmap, NULL, &s->system_journal);

View File

@ -12,10 +12,10 @@
shell-completion/bash/udevadm | 6 +++++- shell-completion/bash/udevadm | 6 +++++-
11 files changed, 70 insertions(+), 11 deletions(-) 11 files changed, 70 insertions(+), 11 deletions(-)
Index: systemd-218/shell-completion/bash/coredumpctl Index: systemd/shell-completion/bash/coredumpctl
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/coredumpctl --- systemd.orig/shell-completion/bash/coredumpctl
+++ systemd-218/shell-completion/bash/coredumpctl +++ systemd/shell-completion/bash/coredumpctl
@@ -44,6 +44,10 @@ _coredumpctl() { @@ -44,6 +44,10 @@ _coredumpctl() {
[DUMP]='dump gdb' [DUMP]='dump gdb'
) )
@ -33,13 +33,13 @@ Index: systemd-218/shell-completion/bash/coredumpctl
-complete -F _coredumpctl coredumpctl -complete -F _coredumpctl coredumpctl
+complete -o default -o bashdefault -F _coredumpctl coredumpctl +complete -o default -o bashdefault -F _coredumpctl coredumpctl
Index: systemd-218/shell-completion/bash/hostnamectl Index: systemd/shell-completion/bash/hostnamectl
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/hostnamectl --- systemd.orig/shell-completion/bash/hostnamectl
+++ systemd-218/shell-completion/bash/hostnamectl +++ systemd/shell-completion/bash/hostnamectl
@@ -30,6 +30,10 @@ _hostnamectl() { @@ -30,6 +30,10 @@ _hostnamectl() {
local OPTS='-h --help --version --transient --static --pretty local OPTS='-h --help --version --transient --static --pretty
--no-ask-password -H --host' --no-ask-password -H --host --machine'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then + if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0 + return 0
@ -54,12 +54,12 @@ Index: systemd-218/shell-completion/bash/hostnamectl
-complete -F _hostnamectl hostnamectl -complete -F _hostnamectl hostnamectl
+complete -o default -o bashdefault -F _hostnamectl hostnamectl +complete -o default -o bashdefault -F _hostnamectl hostnamectl
Index: systemd-218/shell-completion/bash/journalctl Index: systemd/shell-completion/bash/journalctl
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/journalctl --- systemd.orig/shell-completion/bash/journalctl
+++ systemd-218/shell-completion/bash/journalctl +++ systemd/shell-completion/bash/journalctl
@@ -51,6 +51,10 @@ _journalctl() { @@ -55,6 +55,10 @@ _journalctl() {
--verify-key' --root --machine'
) )
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then + if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
@ -69,16 +69,16 @@ Index: systemd-218/shell-completion/bash/journalctl
if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then
case $prev in case $prev in
--boot|--this-boot|-b) --boot|--this-boot|-b)
@@ -116,4 +120,4 @@ _journalctl() { @@ -120,4 +124,4 @@ _journalctl() {
fi fi
} }
-complete -F _journalctl journalctl -complete -F _journalctl journalctl
+complete -o default -o bashdefault -F _journalctl journalctl +complete -o default -o bashdefault -F _journalctl journalctl
Index: systemd-218/shell-completion/bash/kernel-install Index: systemd/shell-completion/bash/kernel-install
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/kernel-install --- systemd.orig/shell-completion/bash/kernel-install
+++ systemd-218/shell-completion/bash/kernel-install +++ systemd/shell-completion/bash/kernel-install
@@ -18,11 +18,22 @@ @@ -18,11 +18,22 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>. # along with systemd; If not, see <http://www.gnu.org/licenses/>.
@ -108,13 +108,13 @@ Index: systemd-218/shell-completion/bash/kernel-install
-complete -F _kernel_install kernel-install -complete -F _kernel_install kernel-install
+complete -o default -o bashdefault -F _kernel_install kernel-install +complete -o default -o bashdefault -F _kernel_install kernel-install
Index: systemd-218/shell-completion/bash/localectl Index: systemd/shell-completion/bash/localectl
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/localectl --- systemd.orig/shell-completion/bash/localectl
+++ systemd-218/shell-completion/bash/localectl +++ systemd/shell-completion/bash/localectl
@@ -36,6 +36,10 @@ _localectl() { @@ -36,6 +36,10 @@ _localectl() {
local OPTS='-h --help --version --no-convert --no-pager --no-ask-password local OPTS='-h --help --version --no-convert --no-pager --no-ask-password
-H --host' -H --host --machine'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then + if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0 + return 0
@ -129,13 +129,13 @@ Index: systemd-218/shell-completion/bash/localectl
-complete -F _localectl localectl -complete -F _localectl localectl
+complete -o default -o bashdefault -F _localectl localectl +complete -o default -o bashdefault -F _localectl localectl
Index: systemd-218/shell-completion/bash/loginctl Index: systemd/shell-completion/bash/loginctl
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/loginctl --- systemd.orig/shell-completion/bash/loginctl
+++ systemd-218/shell-completion/bash/loginctl +++ systemd/shell-completion/bash/loginctl
@@ -37,6 +37,10 @@ _loginctl () { @@ -38,6 +38,10 @@ _loginctl () {
[ARG]='--host -H --kill-who --property -p --signal -s' [ARG]='--host -H --kill-who --property -p --signal -s --machine'
) )
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then + if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0 + return 0
@ -144,16 +144,16 @@ Index: systemd-218/shell-completion/bash/loginctl
if __contains_word "$prev" ${OPTS[ARG]}; then if __contains_word "$prev" ${OPTS[ARG]}; then
case $prev in case $prev in
--signal|-s) --signal|-s)
@@ -106,4 +110,4 @@ _loginctl () { @@ -107,4 +111,4 @@ _loginctl () {
return 0 return 0
} }
-complete -F _loginctl loginctl -complete -F _loginctl loginctl
+complete -o default -o bashdefault -F _loginctl loginctl +complete -o default -o bashdefault -F _loginctl loginctl
Index: systemd-218/shell-completion/bash/systemctl.in Index: systemd/shell-completion/bash/systemctl.in
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/systemctl.in --- systemd.orig/shell-completion/bash/systemctl.in
+++ systemd-218/shell-completion/bash/systemctl.in +++ systemd/shell-completion/bash/systemctl.in
@@ -96,6 +96,10 @@ _systemctl () { @@ -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 --root'
) )
@ -171,10 +171,10 @@ Index: systemd-218/shell-completion/bash/systemctl.in
-complete -F _systemctl systemctl -complete -F _systemctl systemctl
+complete -o default -o bashdefault -F _systemctl systemctl +complete -o default -o bashdefault -F _systemctl systemctl
Index: systemd-218/shell-completion/bash/systemd-analyze Index: systemd/shell-completion/bash/systemd-analyze
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/systemd-analyze --- systemd.orig/shell-completion/bash/systemd-analyze
+++ systemd-218/shell-completion/bash/systemd-analyze +++ systemd/shell-completion/bash/systemd-analyze
@@ -47,6 +47,10 @@ _systemd_analyze() { @@ -47,6 +47,10 @@ _systemd_analyze() {
[VERIFY]='verify' [VERIFY]='verify'
) )
@ -192,10 +192,10 @@ Index: systemd-218/shell-completion/bash/systemd-analyze
-complete -F _systemd_analyze systemd-analyze -complete -F _systemd_analyze systemd-analyze
+complete -o default -o bashdefault -F _systemd_analyze systemd-analyze +complete -o default -o bashdefault -F _systemd_analyze systemd-analyze
Index: systemd-218/shell-completion/bash/systemd-run Index: systemd/shell-completion/bash/systemd-run
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/systemd-run --- systemd.orig/shell-completion/bash/systemd-run
+++ systemd-218/shell-completion/bash/systemd-run +++ systemd/shell-completion/bash/systemd-run
@@ -17,6 +17,13 @@ @@ -17,6 +17,13 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>. # along with systemd; If not, see <http://www.gnu.org/licenses/>.
@ -228,13 +228,13 @@ Index: systemd-218/shell-completion/bash/systemd-run
-complete -F _systemd_run systemd-run -complete -F _systemd_run systemd-run
+complete -o default -o bashdefault -F _systemd_run systemd-run +complete -o default -o bashdefault -F _systemd_run systemd-run
Index: systemd-218/shell-completion/bash/timedatectl Index: systemd/shell-completion/bash/timedatectl
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/timedatectl --- systemd.orig/shell-completion/bash/timedatectl
+++ systemd-218/shell-completion/bash/timedatectl +++ systemd/shell-completion/bash/timedatectl
@@ -30,6 +30,10 @@ _timedatectl() { @@ -30,6 +30,10 @@ _timedatectl() {
local OPTS='-h --help --version --adjust-system-clock --no-pager local OPTS='-h --help --version --adjust-system-clock --no-pager
--no-ask-password -H --host' --no-ask-password -H --host --machine'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then + if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0 + return 0
@ -249,10 +249,10 @@ Index: systemd-218/shell-completion/bash/timedatectl
-complete -F _timedatectl timedatectl -complete -F _timedatectl timedatectl
+complete -o default -o bashdefault -F _timedatectl timedatectl +complete -o default -o bashdefault -F _timedatectl timedatectl
Index: systemd-218/shell-completion/bash/udevadm Index: systemd/shell-completion/bash/udevadm
=================================================================== ===================================================================
--- systemd-218.orig/shell-completion/bash/udevadm --- systemd.orig/shell-completion/bash/udevadm
+++ systemd-218/shell-completion/bash/udevadm +++ systemd/shell-completion/bash/udevadm
@@ -36,6 +36,10 @@ _udevadm() { @@ -36,6 +36,10 @@ _udevadm() {
local verbs=(info trigger settle control monitor hwdb test-builtin test) local verbs=(info trigger settle control monitor hwdb test-builtin test)

View File

@ -4,14 +4,16 @@ Subject: create default links for primary cd_dvd drive
cdrom_id: created links for the default cd/dvd drive (bnc#783054). cdrom_id: created links for the default cd/dvd drive (bnc#783054).
--- ---
rules/60-cdrom_id.rules | 5 ++++- rules/60-cdrom_id.rules | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-) 1 file changed, 4 insertions(+), 1 deletion(-)
--- systemd-206.orig/rules/60-cdrom_id.rules Index: systemd/rules/60-cdrom_id.rules
+++ systemd-206/rules/60-cdrom_id.rules ===================================================================
@@ -15,6 +15,9 @@ ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdr --- systemd.orig/rules/60-cdrom_id.rules
# enable the receiving of media eject button events +++ systemd/rules/60-cdrom_id.rules
IMPORT{program}="cdrom_id --lock-media $devnode" @@ -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"
-KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100" -KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+KERNEL=="sr0", ENV{ID_CDROM}=="1", SYMLINK+="cdrom", OPTIONS+="link_priority=-100" +KERNEL=="sr0", ENV{ID_CDROM}=="1", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"

View File

@ -18,10 +18,10 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
src/udev/scsi_id/scsi_serial.c | 19 +++++++++++++------ src/udev/scsi_id/scsi_serial.c | 19 +++++++++++++------
4 files changed, 32 insertions(+), 7 deletions(-) 4 files changed, 32 insertions(+), 7 deletions(-)
Index: systemd-218/rules/60-persistent-storage.rules Index: systemd/rules/60-persistent-storage.rules
=================================================================== ===================================================================
--- systemd-218.orig/rules/60-persistent-storage.rules --- systemd.orig/rules/60-persistent-storage.rules
+++ systemd-218/rules/60-persistent-storage.rules +++ systemd/rules/60-persistent-storage.rules
@@ -46,6 +46,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par @@ -46,6 +46,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_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" KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"
@ -33,10 +33,10 @@ Index: systemd-218/rules/60-persistent-storage.rules
# firewire # firewire
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" 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" KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
Index: systemd-218/src/udev/scsi_id/scsi_id.c Index: systemd/src/udev/scsi_id/scsi_id.c
=================================================================== ===================================================================
--- systemd-218.orig/src/udev/scsi_id/scsi_id.c --- systemd.orig/src/udev/scsi_id/scsi_id.c
+++ systemd-218/src/udev/scsi_id/scsi_id.c +++ systemd/src/udev/scsi_id/scsi_id.c
@@ -43,6 +43,7 @@ static const struct option options[] = { @@ -43,6 +43,7 @@ static const struct option options[] = {
{ "replace-whitespace", no_argument, NULL, 'u' }, { "replace-whitespace", no_argument, NULL, 'u' },
{ "sg-version", required_argument, NULL, 's' }, { "sg-version", required_argument, NULL, 's' },
@ -53,15 +53,15 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
static bool reformat_serial = false; static bool reformat_serial = false;
static bool export = false; static bool export = false;
static char vendor_str[64]; static char vendor_str[64];
@@ -313,6 +315,7 @@ static void help(void) { @@ -316,6 +318,7 @@ static void help(void) {
" -g,--whitelisted treat device as whitelisted\n" " -g --whitelisted Treat device as whitelisted\n"
" -u,--replace-whitespace replace all whitespace by underscores\n" " -u --replace-whitespace Replace all whitespace by underscores\n"
" -v,--verbose verbose logging\n" " -v --verbose Verbose logging\n"
+ " --truncated-serial truncated serial for compatibility with systems configured with by-id links created by udev < 184\n" + " --truncated-serial truncated serial for compatibility with systems configured with by-id links created by udev < 184\n"
" --version print version\n" " -x --export Print values as environment keys\n"
" -x,--export print values as environment keys\n" , program_invocation_short_name);
" -h,--help print this help text\n\n");
@@ -385,6 +388,10 @@ static int set_options(struct udev *udev @@ -387,6 +390,10 @@ static int set_options(struct udev *udev
log_open(); log_open();
break; break;
@ -72,7 +72,7 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
case 'V': case 'V':
printf("%s\n", VERSION); printf("%s\n", VERSION);
exit(0); exit(0);
@@ -526,6 +533,9 @@ static int scsi_id(struct udev *udev, ch @@ -528,6 +535,9 @@ static int scsi_id(struct udev *udev, ch
util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str)); util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
util_replace_chars(serial_str, NULL); util_replace_chars(serial_str, NULL);
printf("ID_SERIAL=%s\n", serial_str); printf("ID_SERIAL=%s\n", serial_str);
@ -82,7 +82,7 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
util_replace_whitespace(dev_scsi.serial_short, serial_str, sizeof(serial_str)); util_replace_whitespace(dev_scsi.serial_short, serial_str, sizeof(serial_str));
util_replace_chars(serial_str, NULL); util_replace_chars(serial_str, NULL);
printf("ID_SERIAL_SHORT=%s\n", serial_str); printf("ID_SERIAL_SHORT=%s\n", serial_str);
@@ -556,7 +566,10 @@ static int scsi_id(struct udev *udev, ch @@ -558,7 +568,10 @@ static int scsi_id(struct udev *udev, ch
if (reformat_serial) { if (reformat_serial) {
char serial_str[MAX_SERIAL_LEN]; char serial_str[MAX_SERIAL_LEN];
@ -94,10 +94,10 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
util_replace_chars(serial_str, NULL); util_replace_chars(serial_str, NULL);
printf("%s\n", serial_str); printf("%s\n", serial_str);
goto out; goto out;
Index: systemd-218/src/udev/scsi_id/scsi_id.h Index: systemd/src/udev/scsi_id/scsi_id.h
=================================================================== ===================================================================
--- systemd-218.orig/src/udev/scsi_id/scsi_id.h --- systemd.orig/src/udev/scsi_id/scsi_id.h
+++ systemd-218/src/udev/scsi_id/scsi_id.h +++ systemd/src/udev/scsi_id/scsi_id.h
@@ -43,6 +43,7 @@ struct scsi_id_device { @@ -43,6 +43,7 @@ struct scsi_id_device {
char kernel[64]; char kernel[64];
char serial[MAX_SERIAL_LEN]; char serial[MAX_SERIAL_LEN];
@ -106,10 +106,10 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.h
int use_sg; int use_sg;
/* Always from page 0x80 e.g. 'B3G1P8500RWT' - may not be unique */ /* Always from page 0x80 e.g. 'B3G1P8500RWT' - may not be unique */
Index: systemd-218/src/udev/scsi_id/scsi_serial.c Index: systemd/src/udev/scsi_id/scsi_serial.c
=================================================================== ===================================================================
--- systemd-218.orig/src/udev/scsi_id/scsi_serial.c --- systemd.orig/src/udev/scsi_id/scsi_serial.c
+++ systemd-218/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 @@ -96,7 +96,8 @@ static const char hex_str[]="0123456789a
static int do_scsi_page80_inquiry(struct udev *udev, static int do_scsi_page80_inquiry(struct udev *udev,

View File

@ -1,19 +1,24 @@
Index: systemd-210/Makefile.am ---
Makefile.am | 1 +
rules/60-ssd-scheduler.rules | 11 +++++++++++
2 files changed, 12 insertions(+)
Index: systemd/Makefile.am
=================================================================== ===================================================================
--- systemd-210.orig/Makefile.am --- systemd.orig/Makefile.am
+++ systemd-210/Makefile.am +++ systemd/Makefile.am
@@ -2546,6 +2546,7 @@ dist_udevrules_DATA += \ @@ -3576,6 +3576,7 @@ dist_udevrules_DATA += \
rules/60-persistent-input.rules \ rules/60-persistent-input.rules \
rules/60-persistent-alsa.rules \ rules/60-persistent-alsa.rules \
rules/60-persistent-storage.rules \ rules/60-persistent-storage.rules \
+ rules/60-ssd-scheduler.rules \ + rules/60-ssd-scheduler.rules \
rules/64-btrfs.rules \ rules/64-btrfs.rules \
rules/75-net-description.rules \ rules/70-mouse.rules \
rules/75-tty-description.rules \ rules/70-touchpad.rules \
Index: systemd-210/rules/60-ssd-scheduler.rules Index: systemd/rules/60-ssd-scheduler.rules
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ systemd-210/rules/60-ssd-scheduler.rules +++ systemd/rules/60-ssd-scheduler.rules
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
+# do not edit this file, it will be overwritten on update +# do not edit this file, it will be overwritten on update
+ +

View File

@ -1,16 +1,16 @@
--- ---
Makefile.am | 19 ++++ Makefile.am | 19 +++++
src/udev/rootsymlink_generator/rootsymlink_generator.c | 65 +++++++++++++++++ src/udev/rootsymlink_generator/rootsymlink_generator.c | 57 +++++++++++++++++
units/systemd-udev-root-symlink.service | 10 ++ units/systemd-udev-root-symlink.service | 10 ++
units/systemd-udev-root-symlink.service.in | 10 ++ units/systemd-udev-root-symlink.service.in | 10 ++
4 files changed, 104 insertions(+) 4 files changed, 96 insertions(+)
Index: systemd-218/Makefile.am Index: systemd/Makefile.am
=================================================================== ===================================================================
--- systemd-218.orig/Makefile.am --- systemd.orig/Makefile.am
+++ systemd-218/Makefile.am +++ systemd/Makefile.am
@@ -3660,6 +3660,25 @@ EXTRA_DIST += \ @@ -3862,6 +3862,25 @@ EXTRA_DIST += \
test/rule-syntax-check.py
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
+rootsymlink_generator_SOURCES = \ +rootsymlink_generator_SOURCES = \
@ -35,11 +35,11 @@ Index: systemd-218/Makefile.am
ata_id_SOURCES = \ ata_id_SOURCES = \
src/udev/ata_id/ata_id.c src/udev/ata_id/ata_id.c
Index: systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c +++ systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
@@ -0,0 +1,65 @@ @@ -0,0 +1,57 @@
+/* +/*
+ * Copyright (C) 2014-2015 Robert Milasan <rmilasan@suse.com> + * Copyright (C) 2014-2015 Robert Milasan <rmilasan@suse.com>
+ * + *
@ -73,42 +73,34 @@ Index: systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
+ +
+int main(void) +int main(void)
+{ +{
+ char filename[BUFFER_SIZE], buf[BUFFER_SIZE];
+ struct stat statbuf; + struct stat statbuf;
+ int fd;
+ +
+ if (stat(_ROOTDEV_, &statbuf) != 0) + if (stat(_ROOTDEV_, &statbuf) < 0)
+ return 1; + return 1;
+ + if (major(statbuf.st_dev) <= 0)
+ if (major(statbuf.st_dev) > 0) { + return 0;
+ int fd = -1; + if (mkdir(_PATH_, 0755) < 0 && errno != EEXIST)
+ char filename[BUFFER_SIZE]; + return errno;
+ + snprintf(filename, BUFFER_SIZE, "%s/%s", _PATH_, _FILE_);
+ if (mkdir(_PATH_, 0755) != 0 && errno != EEXIST) + fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0644);
+ return errno; + if (fd < 0)
+ + return errno;
+ snprintf(filename, BUFFER_SIZE, "%s/%s", _PATH_, _FILE_); + snprintf(buf, BUFFER_SIZE,
+ + "ACTION==\"add|change\", SUBSYSTEM==\"block\", "
+ if ((fd = open(filename, O_CREAT|O_WRONLY|O_TRUNC, 0644)) == -1) + "ENV{MAJOR}==\"%d\", ENV{MINOR}==\"%d\", SYMLINK+=\"root\"\n",
+ return errno; + major(statbuf.st_dev), minor(statbuf.st_dev));
+ else { + if (write(fd, buf, strlen(buf)) < 0)
+ char buf[BUFFER_SIZE]; + return errno;
+ + if (close(fd) < 0)
+ snprintf(buf, BUFFER_SIZE, "ACTION==\"add|change\", SUBSYSTEM==\"block\", ENV{MAJOR}==\"%d\", ENV{MINOR}==\"%d\", SYMLINK+=\"root\"\n", + return errno;
+ major(statbuf.st_dev), minor(statbuf.st_dev));
+
+ if (write(fd, buf, strlen(buf)) == -1)
+ return errno;
+
+ if (close(fd) == -1)
+ return errno;
+ }
+ }
+
+ return 0; + return 0;
+} +}
Index: systemd-218/units/systemd-udev-root-symlink.service Index: systemd/units/systemd-udev-root-symlink.service
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ systemd-218/units/systemd-udev-root-symlink.service +++ systemd/units/systemd-udev-root-symlink.service
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
+[Unit] +[Unit]
+Description=Rule generator for /dev/root symlink +Description=Rule generator for /dev/root symlink
@ -120,10 +112,10 @@ Index: systemd-218/units/systemd-udev-root-symlink.service
+Type=oneshot +Type=oneshot
+RemainAfterExit=yes +RemainAfterExit=yes
+ExecStart=/usr/lib/udev/rootsymlink-generator +ExecStart=/usr/lib/udev/rootsymlink-generator
Index: systemd-218/units/systemd-udev-root-symlink.service.in Index: systemd/units/systemd-udev-root-symlink.service.in
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ systemd-218/units/systemd-udev-root-symlink.service.in +++ systemd/units/systemd-udev-root-symlink.service.in
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
+[Unit] +[Unit]
+Description=Rule generator for /dev/root symlink +Description=Rule generator for /dev/root symlink

View File

@ -7,10 +7,10 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157)
src/sleep/sleep.c | 27 ++++++++++++++++++++++----- src/sleep/sleep.c | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-) 1 file changed, 22 insertions(+), 5 deletions(-)
Index: systemd-218/src/sleep/sleep.c Index: systemd/src/sleep/sleep.c
=================================================================== ===================================================================
--- systemd-218.orig/src/sleep/sleep.c --- systemd.orig/src/sleep/sleep.c
+++ systemd-218/src/sleep/sleep.c +++ systemd/src/sleep/sleep.c
@@ -24,6 +24,7 @@ @@ -24,6 +24,7 @@
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
@ -39,7 +39,7 @@ Index: systemd-218/src/sleep/sleep.c
return r; return r;
} }
@@ -96,6 +95,8 @@ static int execute(char **modes, char ** @@ -97,6 +96,8 @@ static int execute(char **modes, char **
int r; int r;
_cleanup_fclose_ FILE *f = NULL; _cleanup_fclose_ FILE *f = NULL;
@ -48,15 +48,15 @@ Index: systemd-218/src/sleep/sleep.c
/* This file is opened first, so that if we hit an error, /* This file is opened first, so that if we hit an error,
* we can abort before modifying any state. */ * we can abort before modifying any state. */
f = fopen("/sys/power/state", "we"); f = fopen("/sys/power/state", "we");
@@ -106,6 +107,7 @@ static int execute(char **modes, char ** @@ -107,6 +108,7 @@ static int execute(char **modes, char **
r = write_mode(modes); r = write_mode(modes);
if (r < 0) if (r < 0)
return r; return r;
+ } + }
execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments); execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments);
@@ -114,8 +116,10 @@ static int execute(char **modes, char ** @@ -115,8 +117,10 @@ static int execute(char **modes, char **
LOG_MESSAGE("Suspending system..."), LOG_MESSAGE("Suspending system..."),
"SLEEP=%s", arg_verb, "SLEEP=%s", arg_verb,
NULL); NULL);
@ -68,7 +68,7 @@ Index: systemd-218/src/sleep/sleep.c
if (r < 0) if (r < 0)
return r; return r;
@@ -155,6 +159,7 @@ static int parse_argv(int argc, char *ar @@ -156,6 +160,7 @@ static int parse_argv(int argc, char *ar
}; };
int c; int c;
@ -76,7 +76,7 @@ Index: systemd-218/src/sleep/sleep.c
assert(argc >= 0); assert(argc >= 0);
assert(argv); assert(argv);
@@ -192,6 +197,18 @@ static int parse_argv(int argc, char *ar @@ -193,6 +198,18 @@ static int parse_argv(int argc, char *ar
return -EINVAL; return -EINVAL;
} }

View File

@ -13,10 +13,10 @@ systemd unit drop-in files to add dependencies
create mode 100644 src/insserv-generator/Makefile create mode 100644 src/insserv-generator/Makefile
create mode 100644 src/insserv-generator/insserv-generator.c create mode 100644 src/insserv-generator/insserv-generator.c
Index: systemd-218/Makefile.am Index: systemd/Makefile.am
=================================================================== ===================================================================
--- systemd-218.orig/Makefile.am --- systemd.orig/Makefile.am
+++ systemd-218/Makefile.am +++ systemd/Makefile.am
@@ -399,6 +399,7 @@ rootlibexec_PROGRAMS += \ @@ -399,6 +399,7 @@ rootlibexec_PROGRAMS += \
endif endif
@ -25,7 +25,7 @@ Index: systemd-218/Makefile.am
systemd-getty-generator \ systemd-getty-generator \
systemd-fstab-generator \ systemd-fstab-generator \
systemd-system-update-generator \ systemd-system-update-generator \
@@ -2286,6 +2287,14 @@ systemd_delta_LDADD = \ @@ -2328,6 +2329,14 @@ systemd_delta_LDADD = \
libsystemd-shared.la libsystemd-shared.la
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@ -40,10 +40,10 @@ Index: systemd-218/Makefile.am
systemd_getty_generator_SOURCES = \ systemd_getty_generator_SOURCES = \
src/getty-generator/getty-generator.c src/getty-generator/getty-generator.c
Index: systemd-218/src/insserv-generator/Makefile Index: systemd/src/insserv-generator/Makefile
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ systemd-218/src/insserv-generator/Makefile +++ systemd/src/insserv-generator/Makefile
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
+# This file is part of systemd. +# This file is part of systemd.
+# +#
@ -73,10 +73,10 @@ Index: systemd-218/src/insserv-generator/Makefile
+ $(MAKE) -C .. clean + $(MAKE) -C .. clean
+ +
+.PHONY: all clean +.PHONY: all clean
Index: systemd-218/src/insserv-generator/insserv-generator.c Index: systemd/src/insserv-generator/insserv-generator.c
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ systemd-218/src/insserv-generator/insserv-generator.c +++ systemd/src/insserv-generator/insserv-generator.c
@@ -0,0 +1,312 @@ @@ -0,0 +1,312 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+ +
@ -354,7 +354,7 @@ Index: systemd-218/src/insserv-generator/insserv-generator.c
+ +
+ while ((de = readdir(d))) { + while ((de = readdir(d))) {
+ char *path = NULL; + char *path = NULL;
+ if (ignore_file(de->d_name)) + if (hidden_file(de->d_name))
+ continue; + continue;
+ +
+ path = strjoin("/etc/insserv.conf.d/", de->d_name, NULL); + path = strjoin("/etc/insserv.conf.d/", de->d_name, NULL);

View File

@ -1,143 +1,135 @@
--- From: werner@suse.de
src/journal/catalog.c | 18 +++++++++++++++++- Upstream: marked as openSUSE-specific fix originally, but may well
src/journal/journal-authenticate.c | 4 ++-- worth be to be sent upstream.
src/journal/journal-file.c | 2 +-
src/journal/journald-kmsg.c | 2 +-
src/journal/mmap-cache.c | 22 +++++++++++++++++++++-
5 files changed, 42 insertions(+), 6 deletions(-)
Index: systemd-218/src/journal/catalog.c Original description:
(none)
Notes [jengelh@inai.de]:
MAP_NONBLOCK is documented (mmap(2) in man-pages-3.69+) to render
MAP_POPULATE ineffective. Why do we have it?
What is the rationale for MAP_STACK?
---
src/journal/catalog.c | 12 +++++++++++-
src/journal/journal-authenticate.c | 7 +++++--
src/journal/journald-kmsg.c | 3 ++-
src/journal/mmap-cache.c | 16 +++++++++++++++-
4 files changed, 33 insertions(+), 5 deletions(-)
Index: systemd/src/journal/catalog.c
=================================================================== ===================================================================
--- systemd-218.orig/src/journal/catalog.c --- systemd.orig/src/journal/catalog.c
+++ systemd-218/src/journal/catalog.c +++ systemd/src/journal/catalog.c
@@ -471,9 +471,19 @@ finish: @@ -470,6 +470,10 @@ finish:
static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) { static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) {
const CatalogHeader *h; const CatalogHeader *h;
+ static const struct { + static const unsigned int advice[] =
+ const int index; + {MADV_WILLNEED, MADV_SEQUENTIAL, MADV_DONTDUMP, MADV_DONTFORK};
+ int advise; + unsigned int n;
+ } advises[] = { + size_t psize;
+ {0,MADV_WILLNEED},
+ {1,MADV_SEQUENTIAL},
+ {2,MADV_DONTDUMP},
+ {3,MADV_DONTFORK}
+ };
int fd; int fd;
void *p; void *p;
struct stat st; struct stat st;
+ size_t psize; @@ -492,12 +496,18 @@ static int open_mmap(const char *databas
assert(_fd);
assert(_st);
@@ -493,11 +503,17 @@ static int open_mmap(const char *databas
return -EINVAL; return -EINVAL;
} }
- p = mmap(NULL, PAGE_ALIGN(st.st_size), PROT_READ, MAP_SHARED, fd, 0); - p = mmap(NULL, PAGE_ALIGN(st.st_size), PROT_READ, MAP_SHARED, fd, 0);
+ psize = PAGE_ALIGN(st.st_size); + psize = PAGE_ALIGN(st.st_size);
+ p = mmap(NULL, psize, PROT_READ, MAP_SHARED|MAP_POPULATE|MAP_NONBLOCK, fd, 0); + p = mmap(NULL, psize, PROT_READ, MAP_SHARED | MAP_POPULATE |
+ MAP_NONBLOCK, fd, 0);
if (p == MAP_FAILED) { if (p == MAP_FAILED) {
safe_close(fd); safe_close(fd);
return -errno; return -errno;
} }
+ for (size_t n = 0; n < sizeof(advises) / sizeof(*advises); ++n) {
+ int r = madvise(p, psize, advises[n].advise);
+ if (r < 0)
+ log_warning("Failed to give advice about use of memory: %m");
+ }
+ for (n = 0; n < sizeof(advice) / sizeof(*advice); ++n)
+ if (madvise(p, psize, advice[n]) < 0)
+ log_warning("Failed to give advice about use of memory: %m");
+
h = p; h = p;
if (memcmp(h->signature, CATALOG_SIGNATURE, sizeof(h->signature)) != 0 || if (memcmp(h->signature, CATALOG_SIGNATURE, sizeof(h->signature)) != 0 ||
Index: systemd-218/src/journal/journal-authenticate.c le64toh(h->header_size) < sizeof(CatalogHeader) ||
Index: systemd/src/journal/journal-authenticate.c
=================================================================== ===================================================================
--- systemd-218.orig/src/journal/journal-authenticate.c --- systemd.orig/src/journal/journal-authenticate.c
+++ systemd-218/src/journal/journal-authenticate.c +++ systemd/src/journal/journal-authenticate.c
@@ -355,7 +355,7 @@ int journal_file_fss_load(JournalFile *f @@ -355,7 +355,8 @@ int journal_file_fss_load(JournalFile *f
goto finish; goto finish;
} }
- m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED, fd, 0); - m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED, fd, 0);
+ m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED|MAP_STACK, fd, 0); + m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ,
+ MAP_SHARED | MAP_STACK, fd, 0);
if (m == MAP_FAILED) { if (m == MAP_FAILED) {
m = NULL; m = NULL;
r = -errno; r = -errno;
@@ -399,7 +399,7 @@ int journal_file_fss_load(JournalFile *f @@ -399,7 +400,9 @@ int journal_file_fss_load(JournalFile *f
goto finish; goto finish;
} }
- f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_STACK, fd, 0); + f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size),
+ PROT_READ | PROT_WRITE, MAP_SHARED | MAP_STACK,
+ fd, 0);
if (f->fss_file == MAP_FAILED) { if (f->fss_file == MAP_FAILED) {
f->fss_file = NULL; f->fss_file = NULL;
r = -errno; r = -errno;
Index: systemd-218/src/journal/journal-file.c Index: systemd/src/journal/journald-kmsg.c
=================================================================== ===================================================================
--- systemd-218.orig/src/journal/journal-file.c --- systemd.orig/src/journal/journald-kmsg.c
+++ systemd-218/src/journal/journal-file.c +++ systemd/src/journal/journald-kmsg.c
@@ -2559,7 +2559,7 @@ int journal_file_open( @@ -454,7 +454,8 @@ int server_open_kernel_seqnum(Server *s)
goto fail;
}
- f->header = mmap(NULL, PAGE_ALIGN(sizeof(Header)), prot_from_flags(flags), MAP_SHARED, f->fd, 0);
+ f->header = mmap(NULL, PAGE_ALIGN(sizeof(Header)), prot_from_flags(flags), MAP_SHARED|MAP_STACK, f->fd, 0);
if (f->header == MAP_FAILED) {
f->header = NULL;
r = -errno;
Index: systemd-218/src/journal/journald-kmsg.c
===================================================================
--- systemd-218.orig/src/journal/journald-kmsg.c
+++ systemd-218/src/journal/journald-kmsg.c
@@ -455,7 +455,7 @@ int server_open_kernel_seqnum(Server *s)
return 0; return 0;
} }
- p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_STACK, fd, 0); + p = mmap(NULL, sizeof(uint64_t), PROT_READ | PROT_WRITE,
+ MAP_SHARED | MAP_STACK, fd, 0);
if (p == MAP_FAILED) { if (p == MAP_FAILED) {
log_error_errno(errno, "Failed to map sequential number file, ignoring: %m"); log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
return 0; return 0;
Index: systemd-218/src/journal/mmap-cache.c Index: systemd/src/journal/mmap-cache.c
=================================================================== ===================================================================
--- systemd-218.orig/src/journal/mmap-cache.c --- systemd.orig/src/journal/mmap-cache.c
+++ systemd-218/src/journal/mmap-cache.c +++ systemd/src/journal/mmap-cache.c
@@ -446,6 +446,15 @@ static int add_mmap( @@ -467,11 +467,14 @@ static int add_mmap(
void **ret, struct stat *st,
void **release_cookie) { void **ret) {
+ static const struct { + static const unsigned int advice[] =
+ const int index; + {MADV_WILLNEED, MADV_SEQUENTIAL, MADV_DONTDUMP, MADV_DONTFORK};
+ int vise;
+ } ad[] = {
+ {0, MADV_WILLNEED},
+ {1, MADV_SEQUENTIAL},
+ {2, MADV_DONTDUMP},
+ {3, MADV_DONTFORK}
+ };
uint64_t woffset, wsize; uint64_t woffset, wsize;
Context *c; Context *c;
FileDescriptor *f; FileDescriptor *f;
@@ -488,7 +497,7 @@ static int add_mmap( Window *w;
void *d;
+ unsigned int n;
int r;
assert(m);
@@ -510,7 +513,8 @@ static int add_mmap(
} }
for (;;) { for (;;) {
- d = mmap(NULL, wsize, prot, MAP_SHARED, fd, woffset); - d = mmap(NULL, wsize, prot, MAP_SHARED, fd, woffset);
+ d = mmap(NULL, wsize, prot, MAP_SHARED|MAP_POPULATE|MAP_NONBLOCK, fd, woffset); + d = mmap(NULL, wsize, prot, MAP_SHARED | MAP_POPULATE |
+ MAP_NONBLOCK, fd, woffset);
if (d != MAP_FAILED) if (d != MAP_FAILED)
break; break;
if (errno != ENOMEM) if (errno != ENOMEM)
@@ -501,6 +510,17 @@ static int add_mmap( @@ -523,6 +527,16 @@ static int add_mmap(
return -ENOMEM; return -ENOMEM;
} }
+ for (size_t n = 0; n < sizeof(ad) / sizeof(*ad); ++n) { + for (n = 0; n < sizeof(advice) / sizeof(*advice); ++n) {
+ if (ad[n].vise == MADV_DONTFORK) { + if (advice[n] == MADV_DONTFORK) {
+ int flags = fcntl(fd, F_GETFD); + int flags = fcntl(fd, F_GETFD);
+ if (flags < 0 || !(flags & FD_CLOEXEC)) + if (flags < 0 || !(flags & FD_CLOEXEC))
+ continue; + continue;
+ } + }
+ r = madvise(d, wsize, ad[n].vise); + if (madvise(d, wsize, advice[n]) < 0)
+ if (r < 0)
+ log_warning("Failed to give advice about use of memory: %m"); + log_warning("Failed to give advice about use of memory: %m");
+ } + }
+ +

View File

@ -1,13 +1,18 @@
From: werner@suse.de
Date: Tue Jan 20 11:33:59 UTC 2015
--- ---
src/locale/kbd-model-map | 13 +++++++++++++ src/locale/kbd-model-map | 13 +++++++++++++
1 file changed, 13 insertions(+) 1 file changed, 13 insertions(+)
--- src/locale/kbd-model-map Index: systemd/src/locale/kbd-model-map
+++ src/locale/kbd-model-map 2015-01-20 11:31:38.357518811 +0000 ===================================================================
@@ -63,3 +63,16 @@ by by,us pc105 - terminate:ctrl_alt_ --- systemd.orig/src/locale/kbd-model-map
il il pc105 - terminate:ctrl_alt_bksp +++ systemd/src/locale/kbd-model-map
kazakh kz,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll @@ -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 lt lt pc105 - terminate:ctrl_alt_bksp
khmer kh,us pc105 - terminate:ctrl_alt_bksp
+# Additional layouts offered by YaST +# Additional layouts offered by YaST
+Pl02 pl pc105 - terminate:ctrl_alt_bksp +Pl02 pl pc105 - terminate:ctrl_alt_bksp
+arabic ara,us pc105 - terminate:ctrl_alt_bksp,grp:shift_toggle +arabic ara,us pc105 - terminate:ctrl_alt_bksp,grp:shift_toggle

View File

@ -1,14 +1,13 @@
--- ---
Makefile.am | 4 ++++ Makefile.am | 4 ++++
Makefile.in | 2 +-
configure.ac | 4 ---- configure.ac | 4 ----
3 files changed, 5 insertions(+), 5 deletions(-) 2 files changed, 4 insertions(+), 4 deletions(-)
Index: systemd-218/Makefile.am Index: systemd/Makefile.am
=================================================================== ===================================================================
--- systemd-218.orig/Makefile.am --- systemd.orig/Makefile.am
+++ systemd-218/Makefile.am +++ systemd/Makefile.am
@@ -4695,6 +4695,10 @@ systemd_cryptsetup_CFLAGS = \ @@ -4789,6 +4789,10 @@ systemd_cryptsetup_CFLAGS = \
$(AM_CFLAGS) \ $(AM_CFLAGS) \
$(LIBCRYPTSETUP_CFLAGS) $(LIBCRYPTSETUP_CFLAGS)
@ -19,23 +18,10 @@ Index: systemd-218/Makefile.am
systemd_cryptsetup_LDADD = \ systemd_cryptsetup_LDADD = \
libsystemd-label.la \ libsystemd-label.la \
libudev-internal.la \ libudev-internal.la \
Index: systemd-218/Makefile.in Index: systemd/configure.ac
=================================================================== ===================================================================
--- systemd-218.orig/Makefile.in --- systemd.orig/configure.ac
+++ systemd-218/Makefile.in +++ systemd/configure.ac
@@ -11109,7 +11109,7 @@ src/cryptsetup/systemd_cryptsetup-crypts
systemd-cryptsetup$(EXEEXT): $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_DEPENDENCIES) $(EXTRA_systemd_cryptsetup_DEPENDENCIES)
@rm -f systemd-cryptsetup$(EXEEXT)
- $(AM_V_CCLD)$(systemd_cryptsetup_LINK) $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(systemd_cryptsetup_LINK) $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_LDFLAGS) $(systemd_cryptsetup_LDADD) $(LIBS)
src/cryptsetup/cryptsetup-generator.$(OBJEXT): \
src/cryptsetup/$(am__dirstamp) \
src/cryptsetup/$(DEPDIR)/$(am__dirstamp)
Index: systemd-218/configure.ac
===================================================================
--- systemd-218.orig/configure.ac
+++ systemd-218/configure.ac
@@ -206,10 +206,6 @@ AS_CASE([$CC], [*clang*], @@ -206,10 +206,6 @@ AS_CASE([$CC], [*clang*],
-Wno-gnu-variable-sized-type-not-at-end \ -Wno-gnu-variable-sized-type-not-at-end \
])]) ])])

View File

@ -1,12 +1,12 @@
--- ---
src/fstab-generator/fstab-generator.c | 46 +++++++++++++++++++++++++++++++++- src/fstab-generator/fstab-generator.c | 45 +++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-) 1 file changed, 44 insertions(+), 1 deletion(-)
Index: systemd-218/src/fstab-generator/fstab-generator.c Index: systemd/src/fstab-generator/fstab-generator.c
=================================================================== ===================================================================
--- systemd-218.orig/src/fstab-generator/fstab-generator.c --- systemd.orig/src/fstab-generator/fstab-generator.c
+++ systemd-218/src/fstab-generator/fstab-generator.c +++ systemd/src/fstab-generator/fstab-generator.c
@@ -47,6 +47,50 @@ static char *arg_usr_what = NULL; @@ -48,6 +48,49 @@ static char *arg_usr_what = NULL;
static char *arg_usr_fstype = NULL; static char *arg_usr_fstype = NULL;
static char *arg_usr_options = NULL; static char *arg_usr_options = NULL;
@ -53,11 +53,10 @@ Index: systemd-218/src/fstab-generator/fstab-generator.c
+ return 1; + return 1;
+} +}
+ +
+ static int add_swap(
static int mount_find_pri(struct mntent *me, int *ret) { const char *what,
char *end, *opt; struct mntent *me,
unsigned long r; @@ -118,7 +161,7 @@ static int add_swap(
@@ -141,7 +185,7 @@ static int add_swap(
if (r < 0) if (r < 0)
return r; return r;

View File

@ -4,23 +4,23 @@
units/rescue.service.in | 3 ++- units/rescue.service.in | 3 ++-
3 files changed, 6 insertions(+), 2 deletions(-) 3 files changed, 6 insertions(+), 2 deletions(-)
Index: systemd-218/units/console-shell.service.m4.in Index: systemd/units/console-shell.service.m4.in
=================================================================== ===================================================================
--- systemd-218.orig/units/console-shell.service.m4.in --- systemd.orig/units/console-shell.service.m4.in
+++ systemd-218/units/console-shell.service.m4.in +++ systemd/units/console-shell.service.m4.in
@@ -17,6 +17,8 @@ Before=getty.target @@ -17,6 +17,8 @@ Before=getty.target
[Service] [Service]
Environment=HOME=/root Environment=HOME=/root
WorkingDirectory=/root WorkingDirectory=/root
+ExecStartPre=-/usr/bin/plymouth quit +ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait +ExecStartPre=-/usr/bin/plymouth --wait
ExecStart=-/usr/sbin/sulogin ExecStart=-@SULOGIN@
ExecStopPost=-@SYSTEMCTL@ poweroff ExecStopPost=-@SYSTEMCTL@ poweroff
Type=idle Type=idle
Index: systemd-218/units/emergency.service.in Index: systemd/units/emergency.service.in
=================================================================== ===================================================================
--- systemd-218.orig/units/emergency.service.in --- systemd.orig/units/emergency.service.in
+++ systemd-218/units/emergency.service.in +++ systemd/units/emergency.service.in
@@ -17,7 +17,8 @@ Before=shutdown.target @@ -17,7 +17,8 @@ Before=shutdown.target
[Service] [Service]
Environment=HOME=/root Environment=HOME=/root
@ -29,12 +29,12 @@ Index: systemd-218/units/emergency.service.in
+ExecStartPre=-/usr/bin/plymouth quit +ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait +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.' 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 "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default" ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
Type=idle Type=idle
Index: systemd-218/units/rescue.service.in Index: systemd/units/rescue.service.in
=================================================================== ===================================================================
--- systemd-218.orig/units/rescue.service.in --- systemd.orig/units/rescue.service.in
+++ systemd-218/units/rescue.service.in +++ systemd/units/rescue.service.in
@@ -16,7 +16,8 @@ Before=shutdown.target @@ -16,7 +16,8 @@ Before=shutdown.target
[Service] [Service]
Environment=HOME=/root Environment=HOME=/root
@ -43,5 +43,5 @@ Index: systemd-218/units/rescue.service.in
+ExecStartPre=-/usr/bin/plymouth quit +ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait +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.' 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 "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default" ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
Type=idle Type=idle

View File

@ -6,11 +6,11 @@ This solves the bug bnc#868439
man/systemctl.xml | 4 +++- man/systemctl.xml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-) 1 file changed, 3 insertions(+), 1 deletion(-)
Index: systemd-218/man/systemctl.xml Index: systemd/man/systemctl.xml
=================================================================== ===================================================================
--- systemd-218.orig/man/systemctl.xml --- systemd.orig/man/systemctl.xml
+++ systemd-218/man/systemctl.xml +++ systemd/man/systemctl.xml
@@ -446,7 +446,7 @@ along with systemd; If not, see <http:// @@ -445,7 +445,7 @@ along with systemd; If not, see <http://
<term><option>--force</option></term> <term><option>--force</option></term>
<listitem> <listitem>
@ -19,10 +19,10 @@ Index: systemd-218/man/systemctl.xml
any existing conflicting symlinks.</para> any existing conflicting symlinks.</para>
<para>When used with <command>halt</command>, <para>When used with <command>halt</command>,
@@ -1187,6 +1187,8 @@ kobject-uevent 1 systemd-udevd-kernel.so @@ -1215,6 +1215,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
<listitem> <para>Return the default target to boot into. This returns
<para>Set the default target to boot into. Command links the target unit name <filename>default.target</filename>
<filename>default.target</filename> to the given unit.</para> is aliased (symlinked) to.</para>
+ <para>If combined with <option>--force</option>, override + <para>If combined with <option>--force</option>, override
+ an already existing symlink for the default target.</para> + an already existing symlink for the default target.</para>
</listitem> </listitem>

3
systemd-218.g1050.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b1bccbdd9b6832dafaed409ad0c8c076a7aaaf706615ecbb905d9def291b1cb0
size 3358908

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1b0768b53b6c6d813a93a4b8fe1f80cf53561b09075010a97c7aa08eee3fd59b
size 3782276

View File

@ -1,29 +1,27 @@
--- ---
man/tmpfiles.d.xml | 5 +++++ man/tmpfiles.d.xml | 3 +++
src/tmpfiles/tmpfiles.c | 42 ++++++++++++++++++++++++++++++++++++++---- src/tmpfiles/tmpfiles.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 43 insertions(+), 4 deletions(-) 2 files changed, 43 insertions(+), 8 deletions(-)
Index: systemd-218/man/tmpfiles.d.xml Index: systemd/man/tmpfiles.d.xml
=================================================================== ===================================================================
--- systemd-218.orig/man/tmpfiles.d.xml --- systemd.orig/man/tmpfiles.d.xml
+++ systemd-218/man/tmpfiles.d.xml +++ systemd/man/tmpfiles.d.xml
@@ -545,6 +545,11 @@ r! /tmp/.X[0-9]*-lock</programlisting> @@ -489,6 +489,9 @@
and <varname>w</varname> may be used to <varname>f</varname>, <varname>F</varname>, and
specify a short string that is written to the <varname>w</varname> may be used to specify a short string that
file, suffixed by a newline. For is written to the file, suffixed by a newline. For
+ <varname>x</varname>, <varname>X</varname>, + <varname>x</varname>, <varname>X</varname>, a comma separated list of
+ a comma separated list of usernames. If given, + usernames. If given, only paths belonging to these users will be excluded
+ only paths belonging to these users will be + during directory cleanup. Ignored for all other lines. For
+ excluded during directory cleanup. <varname>C</varname>, specifies the source file or
+ Ignored for all other lines. For directory. For <varname>t</varname> determines extended
<varname>C</varname>, specifies the source file attributes to be set. For <varname>a</varname> determines
or directory. For <varname>t</varname> determines Index: systemd/src/tmpfiles/tmpfiles.c
extended attributes to be set. Ignored for all other lines.</para>
Index: systemd-218/src/tmpfiles/tmpfiles.c
=================================================================== ===================================================================
--- systemd-218.orig/src/tmpfiles/tmpfiles.c --- systemd.orig/src/tmpfiles/tmpfiles.c
+++ systemd-218/src/tmpfiles/tmpfiles.c +++ systemd/src/tmpfiles/tmpfiles.c
@@ -278,6 +278,7 @@ static int dir_cleanup( @@ -345,6 +345,7 @@ static int dir_cleanup(
struct timespec times[2]; struct timespec times[2];
bool deleted = false; bool deleted = false;
int r = 0; int r = 0;
@ -31,52 +29,57 @@ Index: systemd-218/src/tmpfiles/tmpfiles.c
while ((dent = readdir(d))) { while ((dent = readdir(d))) {
struct stat s; struct stat s;
@@ -322,11 +323,44 @@ static int dir_cleanup( @@ -395,14 +396,45 @@ static int dir_cleanup(
} }
/* Is there an item configured for this path? */ /* Is there an item configured for this path? */
- if (hashmap_get(items, sub_path)) - if (hashmap_get(items, sub_path)) {
- log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
- continue; - continue;
- }
-
- 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); + found = hashmap_get(items, sub_path);
+ if (!found) {
- if (find_glob(globs, sub_path)) + found_glob = true;
- continue; + found = find_glob(globs, sub_path);
+ if (!found)
+ found = find_glob(globs, sub_path);
+
+ if (found) {
+ /* evaluate username arguments in ignore statements */
+ if (found->type == IGNORE_PATH || found->type == IGNORE_DIRECTORY_PATH) {
+ if (!found->argument) {
+ continue;
+ } else {
+ struct passwd *pw;
+ char *userfound = NULL, *args = strdup(found->argument);
+ bool match = false;
+ uid_t uid = -1;
+
+ while ((userfound = strsep(&args, ","))) {
+ pw = getpwnam(userfound);
+
+ if (!pw)
+ log_error("Unknown user '%s' in ignore statement.", userfound);
+ else {
+ uid = pw->pw_uid;
+ if (s.st_uid == uid) {
+ match = true;
+ break;
+ }
+ }
+ }
+ if (match) {
+ found = NULL;
+ continue;
+ }
+ }
+ } else {
+ continue;
+ }
+ } + }
+ if (found) {
+ struct passwd *pw;
+ char *userfound = NULL, *args;
+ bool match = false;
+ uid_t uid = -1;
+
+ /* evaluate username arguments in ignore statements */
+ if ((found->type != IGNORE_PATH && found->type != IGNORE_DIRECTORY_PATH) ||
+ !found->argument) {
+ if (found_glob)
+ log_debug("Ignoring \"%s\": a separate glob exists.", sub_path);
+ else
+ log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
+ continue;
+ }
+ args = strdup(found->argument);
+ assert_se(args != NULL);
+ while ((userfound = strsep(&args, ",")) != NULL) {
+ pw = getpwnam(userfound);
+ if (pw == NULL) {
+ log_error("Unknown user '%s' in ignore statement.", userfound);
+ continue;
+ }
+ uid = pw->pw_uid;
+ if (s.st_uid == uid) {
+ match = true;
+ break;
+ }
+ }
+ if (match) {
+ found = NULL;
+ continue;
+ }
}
if (S_ISDIR(s.st_mode)) { if (S_ISDIR(s.st_mode)) {

View File

@ -3,12 +3,12 @@
src/shared/def.h | 2 +- src/shared/def.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-) 2 files changed, 3 insertions(+), 3 deletions(-)
Index: systemd-218/src/libsystemd/sd-bus/sd-bus.c Index: systemd/src/libsystemd/sd-bus/sd-bus.c
=================================================================== ===================================================================
--- systemd-218.orig/src/libsystemd/sd-bus/sd-bus.c --- systemd.orig/src/libsystemd/sd-bus/sd-bus.c
+++ systemd-218/src/libsystemd/sd-bus/sd-bus.c +++ systemd/src/libsystemd/sd-bus/sd-bus.c
@@ -791,8 +791,8 @@ static int parse_container_unix_address( @@ -809,8 +809,8 @@ static int parse_container_unix_address(
machine = NULL; b->nspid = 0;
b->sockaddr.un.sun_family = AF_UNIX; b->sockaddr.un.sun_family = AF_UNIX;
- strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); - strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path));
@ -18,10 +18,10 @@ Index: systemd-218/src/libsystemd/sd-bus/sd-bus.c
return 0; return 0;
} }
Index: systemd-218/src/shared/def.h Index: systemd/src/shared/def.h
=================================================================== ===================================================================
--- systemd-218.orig/src/shared/def.h --- systemd.orig/src/shared/def.h
+++ systemd-218/src/shared/def.h +++ systemd/src/shared/def.h
@@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
"/usr/lib/kbd/keymaps/\0" "/usr/lib/kbd/keymaps/\0"
#endif #endif

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Mon Feb 16 10:18:18 UTC 2015 - jengelh@inai.de
- Update to systemd v218-1050-g38ab096
- Remove patches
use-usr-sbin-sulogin-for-emergency-service.patch (upstream fixed it)
- Reinstate and improve (remove huge indents from)
tty-ask-password-agent-on-console.patch,
0014-journald-with-journaling-FS.patch, rootsymlink_generator.
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com
@ -27,8 +37,6 @@ Fri Jan 9 18:48:28 UTC 2015 - jengelh@inai.de
N=no longer applies to source nor is it deemed needed; N=no longer applies to source nor is it deemed needed;
K=killed: no longer applicable and too complex to resolve: K=killed: no longer applicable and too complex to resolve:
---- ----
G 0002-rfkill-rework-how-we-generate-file-names-from-rfkill.patch
G avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch
K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch
K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch
K handle-SYSTEMCTL_OPTIONS-environment-variable.patch K handle-SYSTEMCTL_OPTIONS-environment-variable.patch

View File

@ -1,7 +1,7 @@
# #
# spec file for package systemd-mini # spec file for package systemd-mini
# #
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -44,7 +44,7 @@
Name: systemd-mini Name: systemd-mini
Url: http://www.freedesktop.org/wiki/Software/systemd Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 218 Version: 218.g1050
Release: 0 Release: 0
Summary: A System and Session Manager Summary: A System and Session Manager
License: LGPL-2.1+ License: LGPL-2.1+
@ -55,14 +55,18 @@ Provides: %{real} = %{version}-%{release}
BuildRequires: acl BuildRequires: acl
BuildRequires: audit-devel BuildRequires: audit-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: gperf BuildRequires: gperf
BuildRequires: gtk-doc
BuildRequires: intltool BuildRequires: intltool
BuildRequires: libacl-devel BuildRequires: libacl-devel
BuildRequires: libcap-devel BuildRequires: libcap-devel
BuildRequires: libkmod-devel BuildRequires: libkmod-devel
BuildRequires: libsepol-devel BuildRequires: libsepol-devel
BuildRequires: libtool BuildRequires: libtool
BuildRequires: libtool
BuildRequires: pam-devel BuildRequires: pam-devel
BuildRequires: config(suse-module-tools) BuildRequires: config(suse-module-tools)
%if 0%{?suse_version} > 1310 %if 0%{?suse_version} > 1310
@ -139,7 +143,10 @@ Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0 Conflicts: mkinitrd < 2.7.0
Obsoletes: systemd-analyze < 201 Obsoletes: systemd-analyze < 201
Provides: systemd-analyze = %{version} Provides: systemd-analyze = %{version}
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
#Snapshot: v218-1050-g38ab096
Source0: systemd-%{version}.tar.xz
%if ! 0%{?bootstrap} %if ! 0%{?bootstrap}
Source1: systemd-rpmlintrc Source1: systemd-rpmlintrc
%else %else
@ -196,8 +203,6 @@ Patch24: handle-etc-HOSTNAME.patch
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind # PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232) # PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84: make-emergency.service-conflict-with-syslog.socket.patch Patch84: make-emergency.service-conflict-with-syslog.socket.patch
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch # PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
@ -252,6 +257,7 @@ Patch338: vhangup-on-all-consoles.patch
Patch345: shut-up-rpmlint-on-var-log-journal.patch Patch345: shut-up-rpmlint-on-var-log-journal.patch
# PATCH-FIX-SUSE # PATCH-FIX-SUSE
Patch352: set-and-use-default-logconsole.patch Patch352: set-and-use-default-logconsole.patch
Patch362: tty-ask-password-agent-on-console.patch
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357) # PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
Patch366: tomcat6-var-lock-subsys-legacy.patch Patch366: tomcat6-var-lock-subsys-legacy.patch
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162) # PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
@ -260,7 +266,6 @@ Patch368: 0001-let-systemctl-completion-ignore-at-names.patch
Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612) # PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
Patch430: 0001-bnc888612-logind-polkit-acpi.patch Patch430: 0001-bnc888612-logind-polkit-acpi.patch
# PATCH-FIX-SUSE added at 2014/10/24
Patch475: journald-advice-about-use-of-memory.patch Patch475: journald-advice-about-use-of-memory.patch
# PATCH-FIX-SUSE added at 2014/11/05 # PATCH-FIX-SUSE added at 2014/11/05
Patch490: watch_resolv.conf_for_become_changed.patch Patch490: watch_resolv.conf_for_become_changed.patch
@ -569,7 +574,7 @@ Requires(postun): systemd
systemd-journal-gatewayd serves journal events over the network using HTTP. systemd-journal-gatewayd serves journal events over the network using HTTP.
%prep %prep
%setup -q -n systemd-%{version} %setup -q -n systemd
echo "Checking whether upstream rpm macros changed..." echo "Checking whether upstream rpm macros changed..."
diff -au "%{S:10}" src/core/macros.systemd.in diff -au "%{S:10}" src/core/macros.systemd.in
@ -599,7 +604,6 @@ cp %{SOURCE7} m4/
%patch40 -p1 %patch40 -p1
%patch41 -p1 %patch41 -p1
%patch42 -p1 %patch42 -p1
%patch46 -p1
%patch84 -p1 %patch84 -p1
%patch86 -p1 %patch86 -p1
%patch90 -p1 %patch90 -p1
@ -627,17 +631,18 @@ cp %{SOURCE7} m4/
%patch338 -p1 %patch338 -p1
%patch345 -p1 %patch345 -p1
%patch352 -p1 %patch352 -p1
%patch362 -p1
%patch366 -p1 %patch366 -p1
%patch368 -p1 %patch368 -p1
%patch386 -p1 %patch386 -p1
%patch430 -p1 %patch430 -p1
%patch475 -p1
%ifarch %arm %ifarch %arm
%patch38 -p1 %patch38 -p1
%endif %endif
%patch475 -p1
%patch490 -p1 %patch490 -p1
%patch520 -p1 %patch520 -p1
%patch521 -p0 %patch521 -p1
# udev patches # udev patches
%patch1001 -p1 %patch1001 -p1
@ -744,7 +749,7 @@ cflags ()
esac esac
set +o noclobber set +o noclobber
} }
autoreconf -fiv ./autogen.sh
# prevent pre-generated and distributed files from re-building # prevent pre-generated and distributed files from re-building
find . -name "*.[1-8]" -exec touch '{}' '+'; find . -name "*.[1-8]" -exec touch '{}' '+';
export V=e export V=e
@ -810,19 +815,9 @@ make %{?_smp_mflags} update-man-list man
%endif %endif
%install %install
# Use refreshed manual pages %if !0%{?bootstrap}
for man in man/*.[0-9] cp man/man[0-9]/*.[0-9] man/
do %endif
section=${man##*.}
test -d man/man${section} || continue
new=man/man${section}/${man##*/}
if test -s $new -a $new -nt $man
then
cp -p $new $man
else
sed -ri 's@"(systemd) 209"@"\1 %{version}"@' $man
fi
done
make install DESTDIR="%buildroot" make install DESTDIR="%buildroot"
# move to %{_lib} # move to %{_lib}
@ -963,15 +958,6 @@ EOF
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/ install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/ ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
%if ! 0%{?bootstrap}
%if %{without python}
for man in systemd.directives.7 systemd.index.7
do
install -m 0644 man/$man %{buildroot}%{_mandir}/man7/
done
%endif
%endif
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed
@ -1295,6 +1281,7 @@ exit 0
%{_bindir}/systemd-path %{_bindir}/systemd-path
%{_bindir}/systemd-sysusers %{_bindir}/systemd-sysusers
%{_bindir}/systemd-notify %{_bindir}/systemd-notify
%{_bindir}/systemd-hwdb
%{_bindir}/systemd-run %{_bindir}/systemd-run
%{_bindir}/systemd-journalctl %{_bindir}/systemd-journalctl
%{_bindir}/journalctl %{_bindir}/journalctl
@ -1388,7 +1375,6 @@ exit 0
%{_prefix}/lib/sysusers.d/ %{_prefix}/lib/sysusers.d/
/%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so
%config /etc/pam.d/systemd-user %config /etc/pam.d/systemd-user
%_libdir/libnss_resolve.so.2
%dir %{_libexecdir}/modules-load.d %dir %{_libexecdir}/modules-load.d
%dir %{_sysconfdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d
@ -1419,7 +1405,6 @@ exit 0
%if !0%{?bootstrap} %if !0%{?bootstrap}
%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf %config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
%endif %endif
%config(noreplace) %{_sysconfdir}/systemd/resolved.conf
%config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf %config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf
%config(noreplace) %{_sysconfdir}/systemd/system.conf %config(noreplace) %{_sysconfdir}/systemd/system.conf
%config(noreplace) %{_sysconfdir}/systemd/logind.conf %config(noreplace) %{_sysconfdir}/systemd/logind.conf
@ -1428,7 +1413,7 @@ exit 0
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
@ -1447,7 +1432,7 @@ exit 0
%{_datadir}/factory/ %{_datadir}/factory/
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service %{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
@ -1456,6 +1441,7 @@ exit 0
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
%dir %{_datadir}/polkit-1 %dir %{_datadir}/polkit-1
%dir %{_datadir}/polkit-1/actions %dir %{_datadir}/polkit-1/actions
%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy %{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
@ -1505,9 +1491,6 @@ exit 0
%{_datadir}/zsh/site-functions/* %{_datadir}/zsh/site-functions/*
%ghost %{_localstatedir}/lib/systemd/backlight %ghost %{_localstatedir}/lib/systemd/backlight
%ghost %{_localstatedir}/lib/systemd/random-seed %ghost %{_localstatedir}/lib/systemd/random-seed
%if 0%{?suse_version} > 1310
%{_datadir}/pkgconfig/systemd.pc
%endif
%if ! 0%{?bootstrap} %if ! 0%{?bootstrap}
%files bash-completion -f files.completion %files bash-completion -f files.completion
@ -1531,9 +1514,7 @@ exit 0
%{_includedir}/systemd/sd-journal.h %{_includedir}/systemd/sd-journal.h
%{_includedir}/systemd/sd-messages.h %{_includedir}/systemd/sd-messages.h
%{_includedir}/systemd/_sd-common.h %{_includedir}/systemd/_sd-common.h
%if 0%{?suse_version} <= 1310 %{_libdir}/pkgconfig/systemd.pc
%{_datadir}/pkgconfig/systemd.pc
%endif
%{_libdir}/pkgconfig/libsystemd.pc %{_libdir}/pkgconfig/libsystemd.pc
%{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-daemon.pc
%{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-login.pc

View File

@ -5,20 +5,22 @@ Subject: systemd tmp safe defaults
Fix regression in the default for tmp auto-deletion (FATE#314974). Fix regression in the default for tmp auto-deletion (FATE#314974).
SUSE policy is to not clean /tmp by default. SUSE policy is to not clean /tmp by default.
--- ---
tmpfiles.d/tmp.conf | 5 +++-- tmpfiles.d/tmp.conf | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-) 1 file changed, 3 insertions(+), 2 deletions(-)
--- systemd-206.orig/tmpfiles.d/tmp.conf Index: systemd/tmpfiles.d/tmp.conf
+++ systemd-206/tmpfiles.d/tmp.conf ===================================================================
--- systemd.orig/tmpfiles.d/tmp.conf
+++ systemd/tmpfiles.d/tmp.conf
@@ -8,8 +8,9 @@ @@ -8,8 +8,9 @@
# See tmpfiles.d(5) for details # See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override # Clear tmp directories separately, to make them easier to override
-d /tmp 1777 root root 10d -v /tmp 1777 root root 10d
-d /var/tmp 1777 root root 30d -v /var/tmp 1777 root root 30d
+# SUSE policy: we don't clean those directories +# SUSE policy: we don't clean those directories
+d /tmp 1777 root root - +v /tmp 1777 root root -
+d /var/tmp 1777 root root - +v /var/tmp 1777 root root -
# Exclude namespace mountpoints created with PrivateTmp=yes # Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-%b-* x /tmp/systemd-private-%b-*

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Mon Feb 16 10:18:18 UTC 2015 - jengelh@inai.de
- Update to systemd v218-1050-g38ab096
- Remove patches
use-usr-sbin-sulogin-for-emergency-service.patch (upstream fixed it)
- Reinstate and improve (remove huge indents from)
tty-ask-password-agent-on-console.patch,
0014-journald-with-journaling-FS.patch, rootsymlink_generator.
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com
@ -27,8 +37,6 @@ Fri Jan 9 18:48:28 UTC 2015 - jengelh@inai.de
N=no longer applies to source nor is it deemed needed; N=no longer applies to source nor is it deemed needed;
K=killed: no longer applicable and too complex to resolve: K=killed: no longer applicable and too complex to resolve:
---- ----
G 0002-rfkill-rework-how-we-generate-file-names-from-rfkill.patch
G avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch
K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch
K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch
K handle-SYSTEMCTL_OPTIONS-environment-variable.patch K handle-SYSTEMCTL_OPTIONS-environment-variable.patch

View File

@ -1,7 +1,7 @@
# #
# spec file for package systemd # spec file for package systemd
# #
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -42,7 +42,7 @@
Name: systemd Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 218 Version: 218.g1050
Release: 0 Release: 0
Summary: A System and Session Manager Summary: A System and Session Manager
License: LGPL-2.1+ License: LGPL-2.1+
@ -50,14 +50,18 @@ Group: System/Base
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: acl BuildRequires: acl
BuildRequires: audit-devel BuildRequires: audit-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: gperf BuildRequires: gperf
BuildRequires: gtk-doc
BuildRequires: intltool BuildRequires: intltool
BuildRequires: libacl-devel BuildRequires: libacl-devel
BuildRequires: libcap-devel BuildRequires: libcap-devel
BuildRequires: libkmod-devel BuildRequires: libkmod-devel
BuildRequires: libsepol-devel BuildRequires: libsepol-devel
BuildRequires: libtool BuildRequires: libtool
BuildRequires: libtool
BuildRequires: pam-devel BuildRequires: pam-devel
BuildRequires: config(suse-module-tools) BuildRequires: config(suse-module-tools)
%if 0%{?suse_version} > 1310 %if 0%{?suse_version} > 1310
@ -134,7 +138,10 @@ Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0 Conflicts: mkinitrd < 2.7.0
Obsoletes: systemd-analyze < 201 Obsoletes: systemd-analyze < 201
Provides: systemd-analyze = %{version} Provides: systemd-analyze = %{version}
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
#Snapshot: v218-1050-g38ab096
Source0: systemd-%{version}.tar.xz
%if ! 0%{?bootstrap} %if ! 0%{?bootstrap}
Source1: systemd-rpmlintrc Source1: systemd-rpmlintrc
%else %else
@ -191,8 +198,6 @@ Patch24: handle-etc-HOSTNAME.patch
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind # PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232) # PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84: make-emergency.service-conflict-with-syslog.socket.patch Patch84: make-emergency.service-conflict-with-syslog.socket.patch
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch # PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
@ -247,6 +252,7 @@ Patch338: vhangup-on-all-consoles.patch
Patch345: shut-up-rpmlint-on-var-log-journal.patch Patch345: shut-up-rpmlint-on-var-log-journal.patch
# PATCH-FIX-SUSE # PATCH-FIX-SUSE
Patch352: set-and-use-default-logconsole.patch Patch352: set-and-use-default-logconsole.patch
Patch362: tty-ask-password-agent-on-console.patch
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357) # PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
Patch366: tomcat6-var-lock-subsys-legacy.patch Patch366: tomcat6-var-lock-subsys-legacy.patch
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162) # PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
@ -255,7 +261,6 @@ Patch368: 0001-let-systemctl-completion-ignore-at-names.patch
Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612) # PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
Patch430: 0001-bnc888612-logind-polkit-acpi.patch Patch430: 0001-bnc888612-logind-polkit-acpi.patch
# PATCH-FIX-SUSE added at 2014/10/24
Patch475: journald-advice-about-use-of-memory.patch Patch475: journald-advice-about-use-of-memory.patch
# PATCH-FIX-SUSE added at 2014/11/05 # PATCH-FIX-SUSE added at 2014/11/05
Patch490: watch_resolv.conf_for_become_changed.patch Patch490: watch_resolv.conf_for_become_changed.patch
@ -564,7 +569,7 @@ Requires(postun): systemd
systemd-journal-gatewayd serves journal events over the network using HTTP. systemd-journal-gatewayd serves journal events over the network using HTTP.
%prep %prep
%setup -q -n systemd-%{version} %setup -q -n systemd
echo "Checking whether upstream rpm macros changed..." echo "Checking whether upstream rpm macros changed..."
diff -au "%{S:10}" src/core/macros.systemd.in diff -au "%{S:10}" src/core/macros.systemd.in
@ -594,7 +599,6 @@ cp %{SOURCE7} m4/
%patch40 -p1 %patch40 -p1
%patch41 -p1 %patch41 -p1
%patch42 -p1 %patch42 -p1
%patch46 -p1
%patch84 -p1 %patch84 -p1
%patch86 -p1 %patch86 -p1
%patch90 -p1 %patch90 -p1
@ -622,17 +626,18 @@ cp %{SOURCE7} m4/
%patch338 -p1 %patch338 -p1
%patch345 -p1 %patch345 -p1
%patch352 -p1 %patch352 -p1
%patch362 -p1
%patch366 -p1 %patch366 -p1
%patch368 -p1 %patch368 -p1
%patch386 -p1 %patch386 -p1
%patch430 -p1 %patch430 -p1
%patch475 -p1
%ifarch %arm %ifarch %arm
%patch38 -p1 %patch38 -p1
%endif %endif
%patch475 -p1
%patch490 -p1 %patch490 -p1
%patch520 -p1 %patch520 -p1
%patch521 -p0 %patch521 -p1
# udev patches # udev patches
%patch1001 -p1 %patch1001 -p1
@ -739,7 +744,7 @@ cflags ()
esac esac
set +o noclobber set +o noclobber
} }
autoreconf -fiv ./autogen.sh
# prevent pre-generated and distributed files from re-building # prevent pre-generated and distributed files from re-building
find . -name "*.[1-8]" -exec touch '{}' '+'; find . -name "*.[1-8]" -exec touch '{}' '+';
export V=e export V=e
@ -805,19 +810,9 @@ make %{?_smp_mflags} update-man-list man
%endif %endif
%install %install
# Use refreshed manual pages %if !0%{?bootstrap}
for man in man/*.[0-9] cp man/man[0-9]/*.[0-9] man/
do %endif
section=${man##*.}
test -d man/man${section} || continue
new=man/man${section}/${man##*/}
if test -s $new -a $new -nt $man
then
cp -p $new $man
else
sed -ri 's@"(systemd) 209"@"\1 %{version}"@' $man
fi
done
make install DESTDIR="%buildroot" make install DESTDIR="%buildroot"
# move to %{_lib} # move to %{_lib}
@ -958,15 +953,6 @@ EOF
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/ install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/ ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
%if ! 0%{?bootstrap}
%if %{without python}
for man in systemd.directives.7 systemd.index.7
do
install -m 0644 man/$man %{buildroot}%{_mandir}/man7/
done
%endif
%endif
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed
@ -1290,6 +1276,7 @@ exit 0
%{_bindir}/systemd-path %{_bindir}/systemd-path
%{_bindir}/systemd-sysusers %{_bindir}/systemd-sysusers
%{_bindir}/systemd-notify %{_bindir}/systemd-notify
%{_bindir}/systemd-hwdb
%{_bindir}/systemd-run %{_bindir}/systemd-run
%{_bindir}/systemd-journalctl %{_bindir}/systemd-journalctl
%{_bindir}/journalctl %{_bindir}/journalctl
@ -1383,7 +1370,6 @@ exit 0
%{_prefix}/lib/sysusers.d/ %{_prefix}/lib/sysusers.d/
/%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so
%config /etc/pam.d/systemd-user %config /etc/pam.d/systemd-user
%_libdir/libnss_resolve.so.2
%dir %{_libexecdir}/modules-load.d %dir %{_libexecdir}/modules-load.d
%dir %{_sysconfdir}/modules-load.d %dir %{_sysconfdir}/modules-load.d
@ -1414,7 +1400,6 @@ exit 0
%if !0%{?bootstrap} %if !0%{?bootstrap}
%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf %config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
%endif %endif
%config(noreplace) %{_sysconfdir}/systemd/resolved.conf
%config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf %config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf
%config(noreplace) %{_sysconfdir}/systemd/system.conf %config(noreplace) %{_sysconfdir}/systemd/system.conf
%config(noreplace) %{_sysconfdir}/systemd/logind.conf %config(noreplace) %{_sysconfdir}/systemd/logind.conf
@ -1423,7 +1408,7 @@ exit 0
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
@ -1442,7 +1427,7 @@ exit 0
%{_datadir}/factory/ %{_datadir}/factory/
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service %{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
@ -1451,6 +1436,7 @@ exit 0
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
%dir %{_datadir}/polkit-1 %dir %{_datadir}/polkit-1
%dir %{_datadir}/polkit-1/actions %dir %{_datadir}/polkit-1/actions
%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy %{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
@ -1500,9 +1486,6 @@ exit 0
%{_datadir}/zsh/site-functions/* %{_datadir}/zsh/site-functions/*
%ghost %{_localstatedir}/lib/systemd/backlight %ghost %{_localstatedir}/lib/systemd/backlight
%ghost %{_localstatedir}/lib/systemd/random-seed %ghost %{_localstatedir}/lib/systemd/random-seed
%if 0%{?suse_version} > 1310
%{_datadir}/pkgconfig/systemd.pc
%endif
%if ! 0%{?bootstrap} %if ! 0%{?bootstrap}
%files bash-completion -f files.completion %files bash-completion -f files.completion
@ -1526,9 +1509,7 @@ exit 0
%{_includedir}/systemd/sd-journal.h %{_includedir}/systemd/sd-journal.h
%{_includedir}/systemd/sd-messages.h %{_includedir}/systemd/sd-messages.h
%{_includedir}/systemd/_sd-common.h %{_includedir}/systemd/_sd-common.h
%if 0%{?suse_version} <= 1310 %{_libdir}/pkgconfig/systemd.pc
%{_datadir}/pkgconfig/systemd.pc
%endif
%{_libdir}/pkgconfig/libsystemd.pc %{_libdir}/pkgconfig/libsystemd.pc
%{_libdir}/pkgconfig/libsystemd-daemon.pc %{_libdir}/pkgconfig/libsystemd-daemon.pc
%{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-login.pc

View File

@ -0,0 +1,239 @@
---
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
===================================================================
--- systemd.orig/src/tty-ask-password-agent/tty-ask-password-agent.c
+++ systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
@@ -31,6 +31,10 @@
#include <getopt.h>
#include <sys/signalfd.h>
#include <fcntl.h>
+#include <sys/prctl.h>
+#include <signal.h>
+#include <sys/wait.h>
+#include <sys/mman.h>
#include "util.h"
#include "mkdir.h"
@@ -42,6 +46,9 @@
#include "strv.h"
#include "build.h"
#include "def.h"
+#include "fileio.h"
+#include "macro.h"
+#include "list.h"
static enum {
ACTION_LIST,
@@ -50,6 +57,22 @@ static enum {
ACTION_WALL
} arg_action = ACTION_QUERY;
+struct console {
+ LIST_FIELDS(struct console, handle);
+ const char *tty;
+ pid_t pid;
+ int id;
+ char dev[];
+};
+
+static volatile unsigned long *usemask;
+static volatile sig_atomic_t sigchild;
+static void chld_handler(int sig)
+{
+ (void)sig;
+ ++sigchild;
+}
+
static bool arg_plymouth = false;
static bool arg_console = false;
@@ -208,6 +231,58 @@ static int ask_password_plymouth(
return 0;
}
+static const char *current_dev = "/dev/console";
+static LIST_HEAD(struct console, consoles);
+static int collect_consoles(void) {
+ _cleanup_free_ char *active = NULL;
+ const char *word, *state;
+ struct console *con;
+ size_t len;
+ int ret, id = 0;
+
+ ret = read_one_line_file("/sys/class/tty/console/active", &active);
+ if (ret < 0)
+ return ret;
+ FOREACH_WORD(word, len, active, state) {
+ _cleanup_free_ char *tty = NULL;
+
+ if (strneq(word, "tty0", len) &&
+ read_one_line_file("/sys/class/tty/tty0/active", &tty) >= 0) {
+ word = tty;
+ len = strlen(tty);
+ }
+ con = malloc0(sizeof(*con) + strlen("/dev/") + len + 1);
+ if (con == NULL) {
+ log_oom();
+ continue;
+ }
+ sprintf(con->dev, "/dev/%.*s", (int)len, word);
+ con->tty = con->dev;
+ con->id = id++;
+ LIST_PREPEND(handle, consoles, con);
+ }
+ if (consoles == NULL) {
+ con = malloc0(sizeof(*con));
+ if (con == NULL) {
+ log_oom();
+ return -ENOMEM;
+ }
+ con->tty = current_dev;
+ con->id = id++;
+ LIST_PREPEND(handle, consoles, con);
+ }
+ return 0;
+}
+
+static void free_consoles(void) {
+ struct console *c;
+ LIST_FOREACH(handle, c, consoles) {
+ LIST_REMOVE(handle, consoles, c);
+ free(c);
+ }
+ LIST_HEAD_INIT(consoles);
+}
+
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
_cleanup_free_ char *password = NULL;
if (arg_console) {
- tty_fd = acquire_terminal("/dev/console", false, false, false, USEC_INFINITY);
+ tty_fd = acquire_terminal(current_dev, false, false, false, USEC_INFINITY);
if (tty_fd < 0)
return tty_fd;
}
@@ -612,9 +687,85 @@ static int parse_argv(int argc, char *ar
return 1;
}
+static int zzz(void)
+{
+ struct console *con;
+ struct sigaction sig = {
+ .sa_handler = chld_handler,
+ .sa_flags = SA_NOCLDSTOP | SA_RESTART,
+ };
+ struct sigaction oldsig;
+ sigset_t set, oldset;
+ int status = 0, ret;
+ pid_t job;
+
+ collect_consoles();
+ if (!consoles->handle_next) {
+ consoles->pid = 0;
+ con = consoles;
+ goto nofork;
+ }
+
+ assert_se(sigemptyset(&set) == 0);
+ assert_se(sigaddset(&set, SIGHUP) == 0);
+ assert_se(sigaddset(&set, SIGCHLD) == 0);
+ assert_se(sigemptyset(&sig.sa_mask) == 0);
+ assert_se(sigprocmask(SIG_UNBLOCK, &set, &oldset) == 0);
+ assert_se(sigaction(SIGCHLD, &sig, &oldsig) == 0);
+ sig.sa_handler = SIG_DFL;
+ assert_se(sigaction(SIGHUP, &sig, NULL) == 0);
+
+ LIST_FOREACH(handle, con, consoles) {
+ switch ((con->pid = fork())) {
+ case 0:
+ if (prctl(PR_SET_PDEATHSIG, SIGHUP) < 0)
+ _exit(EXIT_FAILURE);
+ zero(sig);
+ assert_se(sigprocmask(SIG_UNBLOCK, &oldset, NULL) == 0);
+ assert_se(sigaction(SIGCHLD, &oldsig, NULL) == 0);
+ nofork:
+ setsid();
+ release_terminal();
+ *usemask |= 1 << con->id;
+ current_dev = con->tty;
+ return con->id; /* child */
+ case -1:
+ log_error("Failed to query password: %s", strerror(errno));
+ exit(EXIT_FAILURE);
+ default:
+ break;
+ }
+ }
+
+ ret = 0;
+ while ((job = wait(&status)) != 0) {
+ if (job < 0) {
+ if (errno != EINTR)
+ break;
+ continue;
+ }
+ LIST_FOREACH(handle, con, consoles) {
+ if (con->pid == job || kill(con->pid, 0) < 0) {
+ *usemask &= ~(1 << con->id);
+ continue;
+ }
+ if (*usemask & (1 << con->id))
+ continue;
+ kill(con->pid, SIGHUP);
+ usleep(50000);
+ kill(con->pid, SIGKILL);
+ }
+ if (WIFEXITED(status) && ret == 0)
+ ret = WEXITSTATUS(status);
+ }
+ free_consoles();
+ exit(ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS); /* parent */
+}
+
int main(int argc, char *argv[]) {
- int r;
+ int r, id = 0;
+ LIST_HEAD_INIT(consoles);
log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
log_open();
@@ -625,11 +776,19 @@ int main(int argc, char *argv[]) {
if (r <= 0)
goto finish;
+ usemask = mmap(NULL, sizeof(*usemask), PROT_READ | PROT_WRITE,
+ MAP_ANONYMOUS | MAP_SHARED, -1, 0);
+ assert_se(usemask != NULL);
+
if (arg_console) {
- setsid();
- release_terminal();
+ if (!arg_plymouth && arg_action != ACTION_WALL &&
+ arg_action != ACTION_LIST) {
+ id = zzz();
+ } else {
+ setsid();
+ release_terminal();
+ }
}
-
if (IN_SET(arg_action, ACTION_WATCH, ACTION_WALL))
r = watch_passwords();
else
@@ -638,6 +797,8 @@ int main(int argc, char *argv[]) {
if (r < 0)
log_error_errno(r, "Error: %m");
+ free_consoles();
+ *usemask &= ~(1 << id);
finish:
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}

View File

@ -1,50 +0,0 @@
From: Andrey Borzenkov <arvidjaar@gmail.com>
Subject: use /usr/sbin/sulogin in emergency service
In current Factory sulogin is in /usr/sbin which makes it impossible
to enter emergency service.
---
units/console-shell.service.m4.in | 2 +-
units/emergency.service.in | 2 +-
units/rescue.service.in | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
Index: systemd-218/units/console-shell.service.m4.in
===================================================================
--- systemd-218.orig/units/console-shell.service.m4.in
+++ systemd-218/units/console-shell.service.m4.in
@@ -17,7 +17,7 @@ Before=getty.target
[Service]
Environment=HOME=/root
WorkingDirectory=/root
-ExecStart=-/sbin/sulogin
+ExecStart=-/usr/sbin/sulogin
ExecStopPost=-@SYSTEMCTL@ poweroff
Type=idle
StandardInput=tty-force
Index: systemd-218/units/emergency.service.in
===================================================================
--- systemd-218.orig/units/emergency.service.in
+++ systemd-218/units/emergency.service.in
@@ -18,7 +18,7 @@ Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
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 "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
Type=idle
StandardInput=tty-force
StandardOutput=inherit
Index: systemd-218/units/rescue.service.in
===================================================================
--- systemd-218.orig/units/rescue.service.in
+++ systemd-218/units/rescue.service.in
@@ -18,7 +18,7 @@ Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
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 "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
Type=idle
StandardInput=tty-force
StandardOutput=inherit