3
0
Stephan Kulow 2014-02-07 13:56:41 +00:00 committed by Git OBS Bridge
parent 4fc530766b
commit 12dd43bb94
82 changed files with 5697 additions and 518 deletions

View File

@ -0,0 +1,35 @@
From a0551d26ab5c6e0d5089b42a6319baef0e28ad92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Mon, 14 Oct 2013 19:15:24 -0400
Subject: [PATCH] Fix bad assert in show_pid_array
This function should get the same treatment as other qsort uses
did in 7ff7394 "Never call qsort on potentially NULL arrays".
Reported-by: Oleksii Shevchuk <alxchk@gmail.com>
---
src/shared/cgroup-show.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
Index: systemd-208/src/shared/cgroup-show.c
===================================================================
--- systemd-208.orig/src/shared/cgroup-show.c
+++ systemd-208/src/shared/cgroup-show.c
@@ -44,8 +44,6 @@ static void show_pid_array(int pids[], u
unsigned i, m, pid_width;
pid_t biggest = 0;
- assert(n_pids > 0);
-
/* Filter duplicates */
m = 0;
for (i = 0; i < n_pids; i++) {
@@ -65,7 +63,7 @@ static void show_pid_array(int pids[], u
pid_width = DECIMAL_STR_WIDTH(biggest);
/* And sort */
- qsort(pids, n_pids, sizeof(pid_t), compare);
+ qsort_safe(pids, n_pids, sizeof(pid_t), compare);
if(flags & OUTPUT_FULL_WIDTH)
n_columns = 0;

View File

@ -0,0 +1,385 @@
From 7ff7394d9e4e9189c30fd018235e6b1728c6f2d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 11 Oct 2013 19:33:13 -0400
Subject: [PATCH] Never call qsort on potentially NULL arrays
This extends 62678ded 'efi: never call qsort on potentially
NULL arrays' to all other places where qsort is used and it
is not obvious that the count is non-zero.
---
src/analyze/systemd-analyze.c | 2 +-
src/cgtop/cgtop.c | 2 +-
src/core/namespace.c | 38 ++++++++++++++++++++------------------
src/journal/catalog.c | 2 +-
src/journal/journal-file.c | 2 +-
src/journal/journal-vacuum.c | 3 +--
src/journal/journalctl.c | 2 +-
src/libsystemd-bus/bus-match.c | 2 +-
src/libudev/libudev-enumerate.c | 2 +-
src/nss-myhostname/netlink.c | 3 ++-
src/readahead/readahead-collect.c | 39 ++++++++++++++++++++++-----------------
src/shared/cgroup-show.c | 2 ++
src/shared/conf-files.c | 2 +-
src/shared/efivars.c | 3 +--
src/shared/fileio.c | 1 +
src/shared/util.h | 12 ++++++++++++
src/systemctl/systemctl.c | 10 +++++-----
17 files changed, 74 insertions(+), 53 deletions(-)
diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
index 27d063c..a4f15eb 100644
--- a/src/analyze/systemd-analyze.c
+++ b/src/analyze/systemd-analyze.c
@@ -768,7 +768,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned
if (r < 0)
return r;
- qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
+ qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
r = acquire_boot_times(bus, &boot);
if (r < 0)
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
index cacf705..293a211 100644
--- a/src/cgtop/cgtop.c
+++ b/src/cgtop/cgtop.c
@@ -461,7 +461,7 @@ static int display(Hashmap *a) {
if (g->n_tasks_valid || g->cpu_valid || g->memory_valid || g->io_valid)
array[n++] = g;
- qsort(array, n, sizeof(Group*), group_compare);
+ qsort_safe(array, n, sizeof(Group*), group_compare);
/* Find the longest names in one run */
for (j = 0; j < n; j++) {
diff --git a/src/core/namespace.c b/src/core/namespace.c
index 16b132b..936f368 100644
--- a/src/core/namespace.c
+++ b/src/core/namespace.c
@@ -222,7 +222,7 @@ int setup_namespace(char** read_write_dirs,
strv_length(read_only_dirs) +
strv_length(inaccessible_dirs) +
(private_tmp ? 2 : 0);
- BindMount *m, *mounts;
+ BindMount *m, *mounts = NULL;
int r = 0;
if (!mount_flags)
@@ -231,27 +231,29 @@ int setup_namespace(char** read_write_dirs,
if (unshare(CLONE_NEWNS) < 0)
return -errno;
- m = mounts = (BindMount *) alloca(n * sizeof(BindMount));
- if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 ||
- (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 ||
- (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0)
- return r;
+ if (n) {
+ m = mounts = (BindMount *) alloca(n * sizeof(BindMount));
+ if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 ||
+ (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 ||
+ (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0)
+ return r;
+
+ if (private_tmp) {
+ m->path = "/tmp";
+ m->mode = PRIVATE_TMP;
+ m++;
+
+ m->path = "/var/tmp";
+ m->mode = PRIVATE_VAR_TMP;
+ m++;
+ }
- if (private_tmp) {
- m->path = "/tmp";
- m->mode = PRIVATE_TMP;
- m++;
+ assert(mounts + n == m);
- m->path = "/var/tmp";
- m->mode = PRIVATE_VAR_TMP;
- m++;
+ qsort(mounts, n, sizeof(BindMount), mount_path_compare);
+ drop_duplicates(mounts, &n);
}
- assert(mounts + n == m);
-
- qsort(mounts, n, sizeof(BindMount), mount_path_compare);
- drop_duplicates(mounts, &n);
-
/* Remount / as SLAVE so that nothing now mounted in the namespace
shows up in the parent */
if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0)
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index 7738d24..90ca008 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -399,7 +399,7 @@ int catalog_update(const char* database, const char* root, const char* const* di
}
assert(n == hashmap_size(h));
- qsort(items, n, sizeof(CatalogItem), catalog_compare_func);
+ qsort_safe(items, n, sizeof(CatalogItem), catalog_compare_func);
r = write_catalog(database, h, sb, items, n);
if (r < 0)
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 78b937b..901e71b 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -1344,7 +1344,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
/* Order by the position on disk, in order to improve seek
* times for rotating media. */
- qsort(items, n_iovec, sizeof(EntryItem), entry_item_cmp);
+ qsort_safe(items, n_iovec, sizeof(EntryItem), entry_item_cmp);
r = journal_file_append_entry_internal(f, ts, xor_hash, items, n_iovec, seqnum, ret, offset);
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index 8d5effb..d4a1c6c 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -299,8 +299,7 @@ int journal_directory_vacuum(
n_list ++;
}
- if (n_list > 0)
- qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
+ qsort_safe(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
for (i = 0; i < n_list; i++) {
struct statvfs ss;
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 2f8be1b..275458c 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -761,7 +761,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative
sd_journal_flush_matches(j);
}
- qsort(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
+ qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
if (sd_id128_equal(*boot_id, SD_ID128_NULL)) {
if (relative > (int) count || relative <= -(int)count)
diff --git a/src/libsystemd-bus/bus-match.c b/src/libsystemd-bus/bus-match.c
index 1411167..916682a 100644
--- a/src/libsystemd-bus/bus-match.c
+++ b/src/libsystemd-bus/bus-match.c
@@ -768,7 +768,7 @@ int bus_match_parse(
}
/* Order the whole thing, so that we always generate the same tree */
- qsort(components, n_components, sizeof(struct bus_match_component), match_component_compare);
+ qsort_safe(components, n_components, sizeof(struct bus_match_component), match_component_compare);
/* Check for duplicates */
for (i = 0; i+1 < n_components; i++)
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
index 8146f27..e71d766 100644
--- a/src/libudev/libudev-enumerate.c
+++ b/src/libudev/libudev-enumerate.c
@@ -276,7 +276,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume
size_t move_later_prefix = 0;
udev_list_cleanup(&udev_enumerate->devices_list);
- qsort(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp);
+ qsort_safe(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp);
max = udev_enumerate->devices_cur;
for (i = 0; i < max; i++) {
diff --git a/src/nss-myhostname/netlink.c b/src/nss-myhostname/netlink.c
index b1ef912..47a41f5 100644
--- a/src/nss-myhostname/netlink.c
+++ b/src/nss-myhostname/netlink.c
@@ -197,7 +197,8 @@ finish:
return r;
}
- qsort(list, n_list, sizeof(struct address), address_compare);
+ if (n_list)
+ qsort(list, n_list, sizeof(struct address), address_compare);
*_list = list;
*_n_list = n_list;
diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
index 32888ad..6b74866 100644
--- a/src/readahead/readahead-collect.c
+++ b/src/readahead/readahead-collect.c
@@ -536,8 +536,7 @@ done:
HASHMAP_FOREACH_KEY(q, p, files, i)
pack_file(pack, p, on_btrfs);
} else {
- struct item *ordered, *j;
- unsigned k, n;
+ unsigned n;
/* On rotating media, order things by the block
* numbers */
@@ -545,25 +544,31 @@ done:
log_debug("Ordering...");
n = hashmap_size(files);
- if (!(ordered = new(struct item, n))) {
- r = log_oom();
- goto finish;
- }
-
- j = ordered;
- HASHMAP_FOREACH_KEY(q, p, files, i) {
- memcpy(j, q, sizeof(struct item));
- j++;
- }
+ if (n) {
+ _cleanup_free_ struct item *ordered;
+ struct item *j;
+ unsigned k;
+
+ ordered = new(struct item, n);
+ if (!ordered) {
+ r = log_oom();
+ goto finish;
+ }
- assert(ordered + n == j);
+ j = ordered;
+ HASHMAP_FOREACH_KEY(q, p, files, i) {
+ memcpy(j, q, sizeof(struct item));
+ j++;
+ }
- qsort(ordered, n, sizeof(struct item), qsort_compare);
+ assert(ordered + n == j);
- for (k = 0; k < n; k++)
- pack_file(pack, ordered[k].path, on_btrfs);
+ qsort(ordered, n, sizeof(struct item), qsort_compare);
- free(ordered);
+ for (k = 0; k < n; k++)
+ pack_file(pack, ordered[k].path, on_btrfs);
+ } else
+ log_warning("No pack files");
}
log_debug("Finalizing...");
diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
index e971f36..cc44ab4 100644
--- a/src/shared/cgroup-show.c
+++ b/src/shared/cgroup-show.c
@@ -44,6 +44,8 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
unsigned i, m, pid_width;
pid_t biggest = 0;
+ assert(n_pids > 0);
+
/* Filter duplicates */
m = 0;
for (i = 0; i < n_pids; i++) {
diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
index 6d99739..ed4070c 100644
--- a/src/shared/conf-files.c
+++ b/src/shared/conf-files.c
@@ -127,7 +127,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
return -ENOMEM;
}
- qsort(files, hashmap_size(fh), sizeof(char *), base_cmp);
+ qsort_safe(files, hashmap_size(fh), sizeof(char *), base_cmp);
*strv = files;
hashmap_free(fh);
diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index c015b16..f3eb6a6 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -384,8 +384,7 @@ int efi_get_boot_options(uint16_t **options) {
list[count ++] = id;
}
- if (list)
- qsort(list, count, sizeof(uint16_t), cmp_uint16);
+ qsort_safe(list, count, sizeof(uint16_t), cmp_uint16);
*options = list;
return count;
diff --git a/src/shared/fileio.c b/src/shared/fileio.c
index 603a1c7..733b320 100644
--- a/src/shared/fileio.c
+++ b/src/shared/fileio.c
@@ -662,6 +662,7 @@ int get_status_field(const char *filename, const char *pattern, char **field) {
int r;
assert(filename);
+ assert(pattern);
assert(field);
r = read_full_file(filename, &status, NULL);
diff --git a/src/shared/util.h b/src/shared/util.h
index 26af5b3..09e556d 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -772,3 +772,15 @@ bool id128_is_valid(const char *s) _pure_;
void parse_user_at_host(char *arg, char **user, char **host);
int split_pair(const char *s, const char *sep, char **l, char **r);
+
+/**
+ * Normal qsort requires base to be nonnull. Here were require
+ * that only if nmemb > 0.
+ */
+static inline void qsort_safe(void *base, size_t nmemb, size_t size,
+ int (*compar)(const void *, const void *)) {
+ if (nmemb) {
+ assert(base);
+ qsort(base, nmemb, size, compar);
+ }
+}
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index d75281f..036828b 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -471,7 +471,7 @@ static int list_units(DBusConnection *bus, char **args) {
if (r < 0)
return r;
- qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
+ qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
output_units_list(unit_infos, c);
@@ -733,8 +733,8 @@ static int list_sockets(DBusConnection *bus, char **args) {
listen = triggered = NULL; /* avoid cleanup */
}
- qsort(socket_infos, cs, sizeof(struct socket_info),
- (__compar_fn_t) socket_info_compare);
+ qsort_safe(socket_infos, cs, sizeof(struct socket_info),
+ (__compar_fn_t) socket_info_compare);
output_sockets_list(socket_infos, cs);
@@ -1108,7 +1108,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve
if (r < 0)
return r;
- qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
+ qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
STRV_FOREACH(c, deps) {
if (strv_contains(u, *c)) {
@@ -3532,7 +3532,7 @@ static int show_all(const char* verb,
if (r < 0)
return r;
- qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
+ qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
for (u = unit_infos; u < unit_infos + c; u++) {
_cleanup_free_ char *p = NULL;
--
1.8.4

View File

@ -0,0 +1,123 @@
---
rules/99-systemd.rules.in | 2 -
src/getty-generator/getty-generator.c | 2 -
src/shared/util.c | 62 ++++++++++++++++++++++++++++++++--
3 files changed, 61 insertions(+), 5 deletions(-)
--- systemd-208/rules/99-systemd.rules.in
+++ systemd-208/rules/99-systemd.rules.in 2014-02-05 10:34:17.346235540 +0000
@@ -7,7 +7,7 @@
ACTION=="remove", GOTO="systemd_end"
-SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd"
+SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty*", TAG+="systemd"
KERNEL=="vport*", TAG+="systemd"
--- systemd-208/src/shared/util.c
+++ systemd-208/src/shared/util.c 2014-01-31 11:54:07.222235280 +0000
@@ -2967,6 +2967,7 @@ int status_vprintf(const char *status, b
struct iovec iovec[6] = {};
int n = 0;
static bool prev_ephemeral;
+ static int cached_on_tty = -1;
assert(format);
@@ -2980,6 +2981,51 @@ int status_vprintf(const char *status, b
if (fd < 0)
return fd;
+ if (_unlikely_(cached_on_tty < 0)) {
+ cached_on_tty = isatty(fd) > 0;
+ if (cached_on_tty) {
+ const char *e = getenv("TERM");
+ if (e && (strcmp(e, "dumb") == 0 || strcmp(e, "ibm327x") == 0)) {
+ char *mode = NULL;
+ int r = parse_env_file("/proc/cmdline", WHITESPACE, "conmode", &mode, NULL);
+ if (r < 0 || !mode || !streq(mode, "3270"))
+ cached_on_tty = 0;
+ }
+ }
+ }
+
+ if (status && !cached_on_tty) {
+ const char *esc, *ptr;
+ esc = strchr(status, 0x1B);
+ if (esc && (ptr = strpbrk(esc, "SOFDTI*"))) {
+ switch(*ptr) {
+ case 'S':
+ status = " SKIP ";
+ break;
+ case 'O':
+ status = " OK ";
+ break;
+ case 'F':
+ status = "FAILED";
+ break;
+ case 'D':
+ status = "DEPEND";
+ break;
+ case 'T':
+ status = " TIME ";
+ break;
+ case 'I':
+ status = " INFO ";
+ break;
+ case '*':
+ status = " BUSY ";
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
if (ellipse) {
char *e;
size_t emax, sl;
@@ -3002,8 +3048,12 @@ int status_vprintf(const char *status, b
}
}
- if (prev_ephemeral)
- IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
+ if (prev_ephemeral) {
+ if (cached_on_tty)
+ IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
+ else
+ IOVEC_SET_STRING(iovec[n++], "\r");
+ }
prev_ephemeral = ephemeral;
if (status) {
@@ -3267,8 +3317,14 @@ void columns_lines_cache_reset(int signu
bool on_tty(void) {
static int cached_on_tty = -1;
- if (_unlikely_(cached_on_tty < 0))
+ if (_unlikely_(cached_on_tty < 0)) {
cached_on_tty = isatty(STDOUT_FILENO) > 0;
+ if (cached_on_tty) {
+ const char *e = getenv("TERM");
+ if (e && (strcmp(e, "dumb") == 0))
+ cached_on_tty = 0;
+ }
+ }
return cached_on_tty;
}
--- systemd-208/src/getty-generator/getty-generator.c
+++ systemd-208/src/getty-generator/getty-generator.c 2014-02-05 10:41:29.502245927 +0000
@@ -149,9 +149,9 @@ int main(int argc, char *argv[]) {
* only for non-VC terminals. */
k = add_serial_getty(tty);
+ free(tty);
if (k < 0) {
- free(tty);
free(active);
r = EXIT_FAILURE;
goto finish;

View File

@ -0,0 +1,25 @@
From 7e326fb5b2c1a839bbe7f879c7efa2af2ed33420 Mon Sep 17 00:00:00 2001
From: Lukas Nykryn <lnykryn@redhat.com>
Date: Wed, 2 Oct 2013 13:39:49 +0200
Subject: [PATCH 01/15] acpi-fptd: fix memory leak in acpi_get_boot_usec
---
src/shared/acpi-fpdt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
index b094f34..a7c83ed 100644
--- a/src/shared/acpi-fpdt.c
+++ b/src/shared/acpi-fpdt.c
@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
};
int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
- char *buf;
+ _cleanup_free_ char *buf;
struct acpi_table_header *tbl;
size_t l;
struct acpi_fpdt_header *rec;
--
1.8.4

View File

@ -0,0 +1,537 @@
This seems to be a SUSE specific patch. Here we add the check for unmaintained
disk like devices to be able to flush and maybe shut them down. Also we add the
missing sync() system call for the direct halt/reboot systemctl command. Then we
use the system halt as gfallback if poweroff fails for both the direct poweroff
systemctl command as well as for the systemd-shutdown utility.
---
Makefile.am | 2
Makefile.in | 7
src/core/shutdown.c | 8 -
src/shared/hdflush.c | 365 ++++++++++++++++++++++++++++++++++++++++++++++
src/shared/hdflush.h | 25 +++
src/systemctl/systemctl.c | 17 +-
6 files changed, 416 insertions(+), 8 deletions(-)
--- systemd-208/Makefile.am
+++ systemd-208/Makefile.am 2014-01-28 11:06:55.638238060 +0000
@@ -680,6 +680,8 @@ libsystemd_shared_la_SOURCES = \
src/shared/strbuf.h \
src/shared/strxcpyx.c \
src/shared/strxcpyx.h \
+ src/shared/hdflush.c \
+ src/shared/hdflush.h \
src/shared/conf-parser.c \
src/shared/conf-parser.h \
src/shared/log.c \
--- systemd-208/Makefile.in
+++ systemd-208/Makefile.in 2014-01-28 11:06:33.942246196 +0000
@@ -1509,7 +1509,7 @@ am_libsystemd_shared_la_OBJECTS = src/sh
src/shared/hashmap.lo src/shared/set.lo src/shared/fdset.lo \
src/shared/prioq.lo src/shared/sleep-config.lo \
src/shared/strv.lo src/shared/env-util.lo src/shared/strbuf.lo \
- src/shared/strxcpyx.lo src/shared/conf-parser.lo \
+ src/shared/strxcpyx.lo src/shared/hdflush.lo src/shared/conf-parser.lo \
src/shared/log.lo src/shared/ratelimit.lo \
src/shared/exit-status.lo src/shared/utf8.lo \
src/shared/pager.lo src/shared/socket-util.lo \
@@ -4137,6 +4137,8 @@ libsystemd_shared_la_SOURCES = \
src/shared/strbuf.h \
src/shared/strxcpyx.c \
src/shared/strxcpyx.h \
+ src/shared/hdflush.c \
+ src/shared/hdflush.h \
src/shared/conf-parser.c \
src/shared/conf-parser.h \
src/shared/log.c \
@@ -7073,6 +7075,8 @@ src/shared/strbuf.lo: src/shared/$(am__d
src/shared/$(DEPDIR)/$(am__dirstamp)
src/shared/strxcpyx.lo: src/shared/$(am__dirstamp) \
src/shared/$(DEPDIR)/$(am__dirstamp)
+src/shared/hdflush.lo: src/shared/$(am__dirstamp) \
+ src/shared/$(DEPDIR)/$(am__dirstamp)
src/shared/conf-parser.lo: src/shared/$(am__dirstamp) \
src/shared/$(DEPDIR)/$(am__dirstamp)
src/shared/log.lo: src/shared/$(am__dirstamp) \
@@ -9236,6 +9240,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/strbuf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/strv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/strxcpyx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/hdflush.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/time-dst.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/time-util.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/shared/$(DEPDIR)/unit-name.Plo@am__quote@
--- systemd-208/src/shared/hdflush.c
+++ systemd-208/src/shared/hdflush.c 2014-01-28 10:58:56.490735704 +0000
@@ -0,0 +1,365 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+ This file is part of systemd.
+
+ Copyright 2014 Werner Fink
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+/*
+ * Find all disks on the system, list out IDE, unmanaged ATA disks, and
+ * USB sticks flush the cache of those and optional shut them down.
+ */
+
+#include <libudev.h>
+#include <limits.h>
+#ifdef LIST_DEBUG
+# include <stdio.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <sys/ioctl.h>
+#include <linux/hdreg.h>
+#include <linux/fs.h>
+#ifdef WORDS_BIGENDIAN
+# include <byteswap.h>
+#endif
+
+/* Used in flush_cache_ext(), compare with <linux/hdreg.h> */
+#define IDBYTES 512
+#define MASK_EXT 0xE000 /* Bit 15 shall be zero, bit 14 shall be one, bit 13 flush cache ext */
+#define TEST_EXT 0x6000
+
+/* Maybe set in list_disks() and used in do_standby_disk() */
+#define DISK_IS_IDE 0x00000001
+#define DISK_IS_SATA 0x00000002
+#define DISK_EXTFLUSH 0x00000004
+#define DISK_REMOVABLE 0x00000008
+#define DISK_MANAGED 0x00000010
+#define DISK_FLUSHONLY 0x00000020
+
+struct sysfs {
+ struct udev *udev;
+ struct udev_enumerate *num;
+ struct udev_list_entry *item;
+ char *devnode;
+ size_t size;
+};
+
+static int flush_cache_ext(const struct sysfs *sysfs);
+
+static struct sysfs * open_sysfs(void)
+{
+ static struct sysfs sysfs;
+ sysfs.udev = udev_new();
+ if (!sysfs.udev)
+ goto err;
+ sysfs.num = udev_enumerate_new(sysfs.udev);
+ if (!sysfs.num)
+ goto err;
+ if (udev_enumerate_add_match_subsystem(sysfs.num, "block") < 0)
+ goto err;
+ if (udev_enumerate_add_match_sysname(sysfs.num, "sd?") < 0)
+ goto err;
+ if (udev_enumerate_add_match_sysname(sysfs.num, "hd?") < 0)
+ goto err;
+ if (udev_enumerate_scan_devices(sysfs.num) < 0)
+ goto err;
+ sysfs.item = udev_enumerate_get_list_entry(sysfs.num);
+ sysfs.devnode = NULL;
+ sysfs.size = 0;
+ return &sysfs;
+err:
+ if (sysfs.num)
+ udev_unref(sysfs.udev);
+ if (sysfs.udev)
+ udev_unref(sysfs.udev);
+ return NULL;
+}
+
+static void close_sysfs(struct sysfs *sysfs)
+{
+ if (sysfs->num)
+ udev_enumerate_unref(sysfs->num);
+ if (sysfs->udev)
+ udev_unref(sysfs->udev);
+ if (sysfs->devnode)
+ free(sysfs->devnode);
+ sysfs->devnode = NULL;
+}
+
+
+static char *list_disks(struct sysfs *sysfs, unsigned int* flags)
+{
+ struct udev_device *device, *parent;
+ struct udev_list_entry *item;
+ const char *devnode;
+ char path[PATH_MAX];
+
+ device = NULL;
+next:
+ if (device)
+ udev_device_unref(device);
+ if (sysfs->devnode)
+ free(sysfs->devnode);
+ sysfs->devnode = NULL;
+ sysfs->size = 0;
+ *flags = 0;
+
+ if (!sysfs->item)
+ goto empty;
+ item = sysfs->item;
+ sysfs->item = udev_list_entry_get_next(sysfs->item);
+
+ if (!(device = udev_device_new_from_syspath(sysfs->udev, udev_list_entry_get_name(item))))
+ goto out;
+ if (!(devnode = udev_device_get_devnode(device)))
+ goto out;
+ if (!(sysfs->devnode = strdup(devnode)))
+ goto out;
+
+ path[0] = '\0';
+ parent = udev_device_get_parent(device);
+ if (parent) {
+ const char *sysname, *devpath;
+ struct udev_device *disk;
+ const char *value;
+ int ret;
+
+ sysname = udev_device_get_sysname(parent);
+ devpath = udev_device_get_devpath(parent);
+
+ strcpy(path, "/sys");
+ strcat(path, devpath);
+ strcat(path, "/scsi_disk/");
+ strcat(path, sysname);
+
+ disk = udev_device_new_from_syspath(sysfs->udev, path);
+ if (disk) {
+ value = udev_device_get_sysattr_value(disk, "manage_start_stop");
+ udev_device_unref(disk);
+
+ if (value && *value != '0') {
+ *flags = DISK_MANAGED;
+#ifndef LIST_DEBUG
+ goto next; /* Device managed by the kernel */
+#endif
+ }
+ }
+
+ value = udev_device_get_sysattr_value(device, "size");
+ if (value && *value)
+ sysfs->size = (size_t)atoll(value);
+
+ value = udev_device_get_sysattr_value(device, "removable");
+ if (value && *value != '0') {
+ *flags |= DISK_REMOVABLE;
+
+ if ((ret = flush_cache_ext(sysfs))) {
+ if (ret < 0)
+ goto next;
+ *flags |= DISK_EXTFLUSH;
+ }
+ goto out; /* Removable disk like USB stick */
+ }
+
+ value = udev_device_get_sysname(device);
+ if (value && *value == 'h') {
+ *flags |= DISK_IS_IDE;
+
+ if ((ret = flush_cache_ext(sysfs))) {
+ if (ret < 0)
+ goto next;
+ *flags |= DISK_EXTFLUSH;
+ }
+ goto out; /* IDE disk found */
+ }
+
+ value = udev_device_get_sysattr_value(parent, "vendor");
+ if (value && strncmp(value, "ATA", 3) == 0) {
+ *flags |= (DISK_IS_IDE|DISK_IS_SATA);
+
+ if ((ret = flush_cache_ext(sysfs))) {
+ if (ret < 0)
+ goto next;
+ *flags |= DISK_EXTFLUSH;
+ }
+ goto out; /* SATA disk to shutdown */
+ }
+ goto next;
+ }
+out:
+ udev_device_unref(device);
+empty:
+ return sysfs->devnode;
+}
+#ifndef LIST_DEBUG
+/*
+ * Check IDE/(S)ATA hard disk identity for
+ * the FLUSH CACHE EXT bit set.
+ */
+static int flush_cache_ext(const struct sysfs *sysfs)
+{
+#ifndef WIN_IDENTIFY
+#define WIN_IDENTIFY 0xEC
+#endif
+ unsigned char args[4+IDBYTES];
+ unsigned short *id = (unsigned short*)(&args[4]);
+ int fd = -1, ret = 0;
+
+ if (sysfs->size < (1<<28))
+ goto out; /* small disk */
+
+ if ((fd = open(sysfs->devnode, O_RDONLY|O_NONBLOCK|O_CLOEXEC)) < 0)
+ goto out;
+
+ memset(&args[0], 0, sizeof(args));
+ args[0] = WIN_IDENTIFY;
+ args[3] = 1;
+ if (ioctl(fd, HDIO_DRIVE_CMD, &args))
+ goto out;
+#ifdef WORDS_BIGENDIAN
+# if 0
+ {
+ const unsigned short *end = id + IDBYTES/2;
+ const unsigned short *from = id;
+ unsigned short *to = id;
+
+ while (from < end)
+ *to++ = bswap_16(*from++);
+ }
+# else
+ id[83] = bswap_16(id[83]);
+# endif
+#endif
+ if ((id[83] & MASK_EXT) == TEST_EXT)
+ ret = 1;
+out:
+ if (fd >= 0)
+ close(fd);
+ return ret;
+}
+
+/*
+ * Put an IDE/SCSI/SATA disk in standby mode.
+ * Code stolen from hdparm.c
+ */
+static int do_standby_disk(struct sysfs *sysfs, unsigned int flags)
+{
+#ifndef WIN_STANDBYNOW1
+#define WIN_STANDBYNOW1 0xE0
+#endif
+#ifndef WIN_STANDBYNOW2
+#define WIN_STANDBYNOW2 0x94
+#endif
+#ifndef WIN_FLUSH_CACHE_EXT
+#define WIN_FLUSH_CACHE_EXT 0xEA
+#endif
+#ifndef WIN_FLUSH_CACHE
+#define WIN_FLUSH_CACHE 0xE7
+#endif
+ unsigned char flush1[4] = {WIN_FLUSH_CACHE_EXT,0,0,0};
+ unsigned char flush2[4] = {WIN_FLUSH_CACHE,0,0,0};
+ unsigned char stdby1[4] = {WIN_STANDBYNOW1,0,0,0};
+ unsigned char stdby2[4] = {WIN_STANDBYNOW2,0,0,0};
+ int fd, ret;
+
+ if ((fd = open(sysfs->devnode, O_RDWR|O_NONBLOCK|O_CLOEXEC)) < 0)
+ return -1;
+
+ switch (flags & DISK_EXTFLUSH) {
+ case DISK_EXTFLUSH:
+ if ((ret = ioctl(fd, HDIO_DRIVE_CMD, &flush1)) == 0)
+ break;
+ /* Extend flush rejected, try standard flush */
+ default:
+ ret = ioctl(fd, HDIO_DRIVE_CMD, &flush2) &&
+ ioctl(fd, BLKFLSBUF);
+ break;
+ }
+
+ if ((flags & DISK_FLUSHONLY) == 0x0) {
+ ret = ioctl(fd, HDIO_DRIVE_CMD, &stdby1) &&
+ ioctl(fd, HDIO_DRIVE_CMD, &stdby2);
+ }
+
+ close(fd);
+
+ if (ret)
+ return -1;
+ return 0;
+}
+#endif
+#ifdef LIST_DEBUG
+int main()
+{
+ char *disk;
+ unsigned int flags;
+ struct sysfs *sysfs = open_sysfs();
+ if (!sysfs)
+ goto err;
+ while ((disk = list_disks(sysfs, &flags)))
+ fprintf(stdout, "%s\n", sysfs->devnode);
+ close_sysfs(sysfs);
+err:
+ return 0;
+}
+#else
+/*
+ * List all disks and put them in standby mode.
+ * This has the side-effect of flushing the writecache,
+ * which is exactly what we want on poweroff.
+ */
+void hddown(void)
+{
+ struct sysfs *sysfs;
+ unsigned int flags;
+ char *disk;
+
+ if (!(sysfs = open_sysfs()))
+ return;
+
+ while ((disk = list_disks(sysfs, &flags)))
+ do_standby_disk(sysfs, flags);
+
+ close_sysfs(sysfs);
+}
+
+/*
+ * List all disks and cause them to flush their buffers.
+ */
+void hdflush(void)
+{
+ struct sysfs *sysfs;
+ unsigned int flags;
+ char *disk;
+
+ if (!(sysfs = open_sysfs()))
+ return;
+
+ while ((disk = list_disks(sysfs, &flags)))
+ do_standby_disk(sysfs, (flags|DISK_FLUSHONLY));
+
+ close_sysfs(sysfs);
+}
+#endif
--- systemd-208/src/shared/hdflush.h
+++ systemd-208/src/shared/hdflush.h 2014-01-28 11:00:08.286235696 +0000
@@ -0,0 +1,25 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#pragma once
+
+/***
+ This file is part of systemd.
+
+ Copyright 2014 Werner Fink
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+void hdflush(void);
+void hddown(void);
--- systemd-208/src/core/shutdown.c
+++ systemd-208/src/core/shutdown.c 2014-01-28 11:14:15.722235591 +0000
@@ -40,6 +40,7 @@
#include "missing.h"
#include "log.h"
#include "fileio.h"
+#include "hdflush.h"
#include "umount.h"
#include "util.h"
#include "mkdir.h"
@@ -302,8 +303,13 @@ int main(int argc, char *argv[]) {
* on reboot(), but the file systems need to be synce'd
* explicitly in advance. So let's do this here, but not
* needlessly slow down containers. */
- if (!in_container)
+ if (!in_container) {
sync();
+ if (cmd == RB_POWER_OFF || cmd == RB_HALT_SYSTEM)
+ hddown();
+ else
+ hdflush();
+ }
if (cmd == LINUX_REBOOT_CMD_KEXEC) {
--- systemd-208/src/systemctl/systemctl.c
+++ systemd-208/src/systemctl/systemctl.c 2014-01-28 11:31:27.150735613 +0000
@@ -87,6 +87,7 @@ static bool arg_no_pager = false;
static bool arg_no_wtmp = false;
static bool arg_no_wall = false;
static bool arg_no_reload = false;
+static bool arg_no_sync = false;
static bool arg_show_types = false;
static bool arg_ignore_inhibitors = false;
static bool arg_dry = false;
@@ -5272,6 +5273,7 @@ static int halt_parse_argv(int argc, cha
{ "reboot", no_argument, NULL, ARG_REBOOT },
{ "force", no_argument, NULL, 'f' },
{ "wtmp-only", no_argument, NULL, 'w' },
+ { "no-sync", no_argument, NULL, 'n' },
{ "no-wtmp", no_argument, NULL, 'd' },
{ "no-wall", no_argument, NULL, ARG_NO_WALL },
{ NULL, 0, NULL, 0 }
@@ -5324,10 +5326,13 @@ static int halt_parse_argv(int argc, cha
case 'i':
case 'h':
- case 'n':
/* Compatibility nops */
break;
+ case 'n':
+ arg_no_sync = true;
+ break;
+
case '?':
return -EINVAL;
@@ -5981,14 +5986,14 @@ static int halt_now(enum action a) {
switch (a) {
- case ACTION_HALT:
- log_info("Halting.");
- reboot(RB_HALT_SYSTEM);
- return -errno;
-
case ACTION_POWEROFF:
log_info("Powering off.");
reboot(RB_POWER_OFF);
+ /* Fall through */
+
+ case ACTION_HALT:
+ log_info("Halting.");
+ reboot(RB_HALT_SYSTEM);
return -errno;
case ACTION_REBOOT:

View File

@ -0,0 +1,90 @@
From 95168f7d55181475946ad93db30255c4d709df03 Mon Sep 17 00:00:00 2001
From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
Date: Fri, 01 Nov 2013 21:57:47 +0000
Subject: analyze: plot: place the text on the side with most space
Set the width of the svg to always fit the longest string
while taking its starting position into consideration.
Place the text on the right while the starting point is
in the first half of the screen. After that we put it on
the left to save the svg from being wider that it has to.
---
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c
index 6bfe13d..8730723 100644
--- a/src/analyze/systemd-analyze.c
+++ b/src/analyze/systemd-analyze.c
@@ -509,7 +509,7 @@ static int analyze_plot(sd_bus *bus) {
m++;
for (u = times; u < times + n; u++) {
- double len;
+ double text_start, text_width;
if (u->ixt < boot->userspace_time ||
u->ixt > boot->finish_time) {
@@ -517,10 +517,14 @@ static int analyze_plot(sd_bus *bus) {
u->name = NULL;
continue;
}
- len = ((boot->firmware_time + u->ixt) * SCALE_X)
- + (10.0 * strlen(u->name));
- if (len > width)
- width = len;
+
+ /* If the text cannot fit on the left side then
+ * increase the svg width so it fits on the right.
+ * TODO: calculate the text width more accurately */
+ text_width = 8.0 * strlen(u->name);
+ text_start = (boot->firmware_time + u->ixt) * SCALE_X;
+ if (text_width > text_start && text_width + text_start > width)
+ width = text_width + text_start;
if (u->iet > u->ixt && u->iet <= boot->finish_time
&& u->aet == 0 && u->axt == 0)
@@ -608,7 +612,7 @@ static int analyze_plot(sd_bus *bus) {
svg_bar("active", boot->userspace_time, boot->finish_time, y);
svg_bar("generators", boot->generators_start_time, boot->generators_finish_time, y);
svg_bar("unitsload", boot->unitsload_start_time, boot->unitsload_finish_time, y);
- svg_text("left", boot->userspace_time, y, "systemd");
+ svg_text(true, boot->userspace_time, y, "systemd");
y++;
for (u = times; u < times + n; u++) {
@@ -622,7 +626,8 @@ static int analyze_plot(sd_bus *bus) {
svg_bar("active", u->aet, u->axt, y);
svg_bar("deactivating", u->axt, u->iet, y);
- b = u->ixt * SCALE_X > width * 2 / 3;
+ /* place the text on the left if we have passed the half of the svg width */
+ b = u->ixt * SCALE_X < width / 2;
if (u->time)
svg_text(b, u->ixt, y, "%s (%s)",
u->name, format_timespan(ts, sizeof(ts), u->time, USEC_PER_MSEC));
@@ -634,19 +639,19 @@ static int analyze_plot(sd_bus *bus) {
/* Legend */
y++;
svg_bar("activating", 0, 300000, y);
- svg_text("right", 400000, y, "Activating");
+ svg_text(true, 400000, y, "Activating");
y++;
svg_bar("active", 0, 300000, y);
- svg_text("right", 400000, y, "Active");
+ svg_text(true, 400000, y, "Active");
y++;
svg_bar("deactivating", 0, 300000, y);
- svg_text("right", 400000, y, "Deactivating");
+ svg_text(true, 400000, y, "Deactivating");
y++;
svg_bar("generators", 0, 300000, y);
- svg_text("right", 400000, y, "Generators");
+ svg_text(true, 400000, y, "Generators");
y++;
svg_bar("unitsload", 0, 300000, y);
- svg_text("right", 400000, y, "Loading unit files");
+ svg_text(true, 400000, y, "Loading unit files");
y++;
svg("</g>\n\n");
--
cgit v0.9.0.2-2-gbebe

View File

@ -0,0 +1,32 @@
From 418e37506e6a419a808a82081ca1616caa03a206 Mon Sep 17 00:00:00 2001
From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
Date: Mon, 21 Oct 2013 19:29:23 +0000
Subject: analyze: set white backgound
In programs like eog and gimp the transparant background did not
look very good.
https://bugs.freedesktop.org/show_bug.cgi?id=70720
---
diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
index 26769d6..0cc4de7 100644
--- a/src/analyze/systemd-analyze.c
+++ b/src/analyze/systemd-analyze.c
@@ -507,6 +507,7 @@ static int analyze_plot(DBusConnection *bus) {
/* style sheet */
svg("<defs>\n <style type=\"text/css\">\n <![CDATA[\n"
" rect { stroke-width: 1; stroke-opacity: 0; }\n"
+ " rect.background { fill: rgb(255,255,255); }\n"
" rect.activating { fill: rgb(255,0,0); fill-opacity: 0.7; }\n"
" rect.active { fill: rgb(200,150,150); fill-opacity: 0.7; }\n"
" rect.deactivating { fill: rgb(150,100,100); fill-opacity: 0.7; }\n"
@@ -528,6 +529,7 @@ static int analyze_plot(DBusConnection *bus) {
" text.sec { font-size: 10px; }\n"
" ]]>\n </style>\n</defs>\n\n");
+ svg("<rect class=\"background\" width=\"100%%\" height=\"100%%\" />\n");
svg("<text x=\"20\" y=\"50\">%s</text>", pretty_times);
svg("<text x=\"20\" y=\"30\">%s %s (%s %s) %s</text>",
isempty(osname) ? "Linux" : osname,
--
cgit v0.9.0.2-2-gbebe

View File

@ -1,27 +0,0 @@
From 8d7b5ca0a6cdab3e400ef084fa8a05d581d59b55 Mon Sep 17 00:00:00 2001
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Fri, 13 Sep 2013 11:17:05 +0800
Subject: [PATCH 1/7] cgroup: add the missing setting of variable's value
set the value of variable "r" to the return value
of cg_set_attribute.
---
src/core/cgroup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 3eeb475..fba0b2f 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -264,7 +264,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit);
- cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
if (r < 0)
log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
}
--
1.8.1.4

View File

@ -0,0 +1,225 @@
From 6fa7e1a944a2dbb89e794ad0f9da5d0fda5dc4a9 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 29 Jan 2014 13:38:55 +0100
Subject: [PATCH 1/3] core: introduce new KillMode=mixed which sends SIGTERM
only to the main process, but SIGKILL to all daemon processes
This should fix some race with terminating systemd --user, where the
system systemd instance might race against the user systemd instance
when sending SIGTERM.
---
man/systemd.kill.xml | 77 +++++++++++++++++++++++++++++++++-----------------
src/core/kill.c | 1 +
src/core/kill.h | 1 +
src/core/unit.c | 3 +-
units/user@.service.in | 1 +
5 files changed, 56 insertions(+), 27 deletions(-)
diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml
index 1b10fba..a4009aa 100644
--- a/man/systemd.kill.xml
+++ b/man/systemd.kill.xml
@@ -44,39 +44,44 @@
<refnamediv>
<refname>systemd.kill</refname>
- <refpurpose>Kill environment configuration</refpurpose>
+ <refpurpose>Process killing procedure
+ configuration</refpurpose>
</refnamediv>
<refsynopsisdiv>
<para><filename><replaceable>service</replaceable>.service</filename>,
<filename><replaceable>socket</replaceable>.socket</filename>,
<filename><replaceable>mount</replaceable>.mount</filename>,
- <filename><replaceable>swap</replaceable>.swap</filename></para>
+ <filename><replaceable>swap</replaceable>.swap</filename>,
+ <filename><replaceable>scope</replaceable>.scope</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Unit configuration files for services, sockets,
- mount points and swap devices share a subset of
- configuration options which define the process killing
- parameters of spawned processes.</para>
+ mount points, swap devices and scopes share a subset
+ of configuration options which define the
+ killing procedure of processes belonging to the unit.</para>
<para>This man page lists the configuration options
- shared by these four unit types. See
+ shared by these five unit types. See
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for the common options of all unit configuration
- files, and
+ for the common options shared by all unit
+ configuration files, and
<citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- and
+ <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for more information on the specific unit
- configuration files. The execution specific
+ and
+ <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for more information on the configuration file options
+ specific to each unit type.</para>
+
+ <para>The kill procedure
configuration options are configured in the [Service],
- [Socket], [Mount], or [Swap] section, depending on the unit
- type.</para>
+ [Socket], [Mount] or [Swap] section, depending on the
+ unit type.</para>
</refsect1>
<refsect1>
@@ -87,32 +92,40 @@
<varlistentry>
<term><varname>KillMode=</varname></term>
<listitem><para>Specifies how
- processes of this service shall be
+ processes of this unit shall be
killed. One of
<option>control-group</option>,
<option>process</option>,
+ <option>mixed</option>,
<option>none</option>.</para>
<para>If set to
<option>control-group</option>, all
remaining processes in the control
- group of this unit will be terminated
- on unit stop (for services: after the
+ group of this unit will be killed on
+ unit stop (for services: after the
stop command is executed, as
configured with
<varname>ExecStop=</varname>). If set
to <option>process</option>, only the
main process itself is killed. If set
- to <option>none</option>, no process is
+ to <option>mixed</option> the
+ <constant>SIGTERM</constant> signal
+ (see below) is sent to the main
+ process while the subsequent
+ <constant>SIGKILL</constant> signal
+ (see below) is sent to all remaining
+ processes of the unit's control
+ group. If set to
+ <option>none</option>, no process is
killed. In this case only the stop
- command will be executed on unit
- stop, but no process be killed
+ command will be executed on unit stop,
+ but no process be killed
otherwise. Processes remaining alive
after stop are left in their control
group and the control group continues
to exist after stop unless it is
- empty. Defaults to
- <option>control-group</option>.</para>
+ empty.</para>
<para>Processes will first be
terminated via
@@ -133,14 +146,24 @@
option). See
<citerefentry><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry>
for more
- information.</para></listitem>
+ information.</para>
+
+ <para>Defaults to
+ <option>control-group</option>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>KillSignal=</varname></term>
<listitem><para>Specifies which signal
- to use when killing a
- service. Defaults to <constant>SIGTERM</constant>.
+ to use when killing a service. This
+ controls the signal that is sent as
+ first step of shutting down a unit
+ (see above), and is usually followed
+ by <constant>SIGKILL</constant> (see
+ above and below). For a list of valid
+ signals, see
+ <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>. Defaults
+ to <constant>SIGTERM</constant>.
</para></listitem>
</varlistentry>
@@ -184,7 +207,9 @@
<citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>
</para>
</refsect1>
diff --git a/src/core/kill.c b/src/core/kill.c
index ea947c2..4271346 100644
--- a/src/core/kill.c
+++ b/src/core/kill.c
@@ -52,6 +52,7 @@ void kill_context_dump(KillContext *c, FILE *f, const char *prefix) {
static const char* const kill_mode_table[_KILL_MODE_MAX] = {
[KILL_CONTROL_GROUP] = "control-group",
[KILL_PROCESS] = "process",
+ [KILL_MIXED] = "mixed",
[KILL_NONE] = "none"
};
diff --git a/src/core/kill.h b/src/core/kill.h
index 41773f0..d5f125f 100644
--- a/src/core/kill.h
+++ b/src/core/kill.h
@@ -32,6 +32,7 @@ typedef enum KillMode {
/* The kill mode is a property of a unit. */
KILL_CONTROL_GROUP = 0,
KILL_PROCESS,
+ KILL_MIXED,
KILL_NONE,
_KILL_MODE_MAX,
_KILL_MODE_INVALID = -1
diff --git a/src/core/unit.c b/src/core/unit.c
index 4b97710..0b10e57 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -3007,7 +3007,7 @@ int unit_kill_context(
}
}
- if (c->kill_mode == KILL_CONTROL_GROUP && u->cgroup_path) {
+ if ((c->kill_mode == KILL_CONTROL_GROUP || (c->kill_mode == KILL_MIXED && sigkill)) && u->cgroup_path) {
_cleanup_set_free_ Set *pid_set = NULL;
/* Exclude the main/control pids from being killed via the cgroup */
@@ -3021,6 +3021,7 @@ int unit_kill_context(
log_warning_unit(u->id, "Failed to kill control group: %s", strerror(-r));
} else if (r > 0) {
wait_for_exit = true;
+
if (c->send_sighup) {
set_free(pid_set);
diff --git a/units/user@.service.in b/units/user@.service.in
index 3718a57..3bb8696 100644
--- a/units/user@.service.in
+++ b/units/user@.service.in
@@ -17,3 +17,4 @@ Environment=SHELL=%s
ExecStart=-@rootlibexecdir@/systemd --user
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket
Slice=user-%i.slice
+KillMode=mixed
--
1.8.4

View File

@ -0,0 +1,329 @@
From d420282b28f50720e233ccb1c02547c562195653 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Tue, 26 Nov 2013 01:39:53 +0100
Subject: [PATCH] core: replace OnFailureIsolate= setting by a more generic
OnFailureJobMode= setting and make use of it where applicable
---
man/systemd.unit.xml | 40 +++++++++++++++++++++++++----------
src/core/dbus-unit.c | 3 ++-
src/core/job.h | 3 +--
src/core/load-fragment-gperf.gperf.m4 | 3 ++-
src/core/load-fragment.c | 31 +++++++++++++++++++++++++++
src/core/load-fragment.h | 2 ++
src/core/unit.c | 11 +++++-----
src/core/unit.h | 4 ++--
units/initrd-cleanup.service.in | 1 +
units/initrd-fs.target | 2 +-
units/initrd-parse-etc.service.in | 1 +
units/initrd-root-fs.target | 2 +-
units/initrd-switch-root.service.in | 1 +
units/initrd.target | 2 +-
units/local-fs.target | 2 +-
15 files changed, 82 insertions(+), 26 deletions(-)
Index: systemd-208/man/systemd.unit.xml
===================================================================
--- systemd-208.orig/man/systemd.unit.xml
+++ systemd-208/man/systemd.unit.xml
@@ -669,19 +669,37 @@
</varlistentry>
<varlistentry>
- <term><varname>OnFailureIsolate=</varname></term>
+ <term><varname>OnFailureJobMode=</varname></term>
- <listitem><para>Takes a boolean
- argument. If <option>true</option>, the
- unit listed in
+ <listitem><para>Takes a value of
+ <literal>fail</literal>,
+ <literal>replace</literal>,
+ <literal>replace-irreversibly</literal>
+ or
+ <literal>isolate</literal>. Defaults
+ to
+ <literal>replace</literal>. Specifies
+ how the units listed in
<varname>OnFailure=</varname> will be
- enqueued in isolation mode, i.e. all
- units that are not its dependency will
- be stopped. If this is set, only a
+ enqueued. If set to
+ <literal>fail</literal> and
+ contradicting jobs are already queued,
+ cause the activation to fail. If set
+ to <literal>replace</literal> and
+ contradicting jobs area already
+ queued, replace
+ those. <literal>replace-irreversibly</literal>
+ is similar to
+ <literal>replace</literal>, however,
+ creates jobs that cannot be reversed
+ unless they finished or are explicitly
+ canceled. <literal>isolate</literal>
+ may be used to terminate all other
+ units but the specified one. If
+ this is set to
+ <literal>isolate</literal>, only a
single unit may be listed in
- <varname>OnFailure=</varname>. Defaults
- to
- <option>false</option>.</para></listitem>
+ <varname>OnFailure=</varname>..</para></listitem>
</varlistentry>
<varlistentry>
Index: systemd-208/src/core/dbus-unit.c
===================================================================
--- systemd-208.orig/src/core/dbus-unit.c
+++ systemd-208/src/core/dbus-unit.c
@@ -133,6 +133,7 @@ static int bus_unit_append_description(D
}
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_unit_append_load_state, unit_load_state, UnitLoadState);
+static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_unit_append_job_mode, job_mode, JobMode);
static int bus_unit_append_active_state(DBusMessageIter *i, const char *property, void *data) {
Unit *u = data;
@@ -1079,7 +1080,7 @@ const BusProperty bus_unit_properties[]
{ "RefuseManualStop", bus_property_append_bool, "b", offsetof(Unit, refuse_manual_stop) },
{ "AllowIsolate", bus_property_append_bool, "b", offsetof(Unit, allow_isolate) },
{ "DefaultDependencies", bus_property_append_bool, "b", offsetof(Unit, default_dependencies) },
- { "OnFailureIsolate", bus_property_append_bool, "b", offsetof(Unit, on_failure_isolate) },
+ { "OnFailureJobMode", bus_unit_append_job_mode, "s", offsetof(Unit, on_failure_job_mode) },
{ "IgnoreOnIsolate", bus_property_append_bool, "b", offsetof(Unit, ignore_on_isolate) },
{ "IgnoreOnSnapshot", bus_property_append_bool, "b", offsetof(Unit, ignore_on_snapshot) },
{ "NeedDaemonReload", bus_unit_append_need_daemon_reload, "b", 0 },
Index: systemd-208/src/core/job.h
===================================================================
--- systemd-208.orig/src/core/job.h
+++ systemd-208/src/core/job.h
@@ -83,7 +83,7 @@ enum JobState {
enum JobMode {
JOB_FAIL, /* Fail if a conflicting job is already queued */
JOB_REPLACE, /* Replace an existing conflicting job */
- JOB_REPLACE_IRREVERSIBLY, /* Like JOB_REPLACE + produce irreversible jobs */
+ JOB_REPLACE_IRREVERSIBLY,/* Like JOB_REPLACE + produce irreversible jobs */
JOB_ISOLATE, /* Start a unit, and stop all others */
JOB_IGNORE_DEPENDENCIES, /* Ignore both requirement and ordering dependencies */
JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */
Index: systemd-208/src/core/load-fragment-gperf.gperf.m4
===================================================================
--- systemd-208.orig/src/core/load-fragment-gperf.gperf.m4
+++ systemd-208/src/core/load-fragment-gperf.gperf.m4
@@ -122,7 +122,8 @@ Unit.RefuseManualStart, config_
Unit.RefuseManualStop, config_parse_bool, 0, offsetof(Unit, refuse_manual_stop)
Unit.AllowIsolate, config_parse_bool, 0, offsetof(Unit, allow_isolate)
Unit.DefaultDependencies, config_parse_bool, 0, offsetof(Unit, default_dependencies)
-Unit.OnFailureIsolate, config_parse_bool, 0, offsetof(Unit, on_failure_isolate)
+Unit.OnFailureJobMode, config_parse_job_mode, 0, offsetof(Unit, on_failure_job_mode)
+Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0, offsetof(Unit, on_failure_job_mode)
Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate)
Unit.IgnoreOnSnapshot, config_parse_bool, 0, offsetof(Unit, ignore_on_snapshot)
Unit.JobTimeoutSec, config_parse_sec, 0, offsetof(Unit, job_timeout)
Index: systemd-208/src/core/load-fragment.c
===================================================================
--- systemd-208.orig/src/core/load-fragment.c
+++ systemd-208/src/core/load-fragment.c
@@ -2314,6 +2314,36 @@ int config_parse_blockio_bandwidth(
return 0;
}
+DEFINE_CONFIG_PARSE_ENUM(config_parse_job_mode, job_mode, JobMode, "Failed to parse job mode");
+
+int config_parse_job_mode_isolate(
+ const char *unit,
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ int ltype,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ JobMode *m = data;
+ int r;
+
+ assert(filename);
+ assert(lvalue);
+ assert(rvalue);
+
+ r = parse_boolean(rvalue);
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Failed to parse boolean, ignoring: %s", rvalue);
+ return 0;
+ }
+
+ *m = r ? JOB_ISOLATE : JOB_REPLACE;
+ return 0;
+}
+
#define FOLLOW_MAX 8
static int open_follow(char **filename, FILE **_f, Set *names, char **_final) {
Index: systemd-208/src/core/load-fragment.h
===================================================================
--- systemd-208.orig/src/core/load-fragment.h
+++ systemd-208/src/core/load-fragment.h
@@ -83,6 +83,8 @@ int config_parse_device_allow(const char
int config_parse_blockio_weight(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_blockio_device_weight(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_blockio_bandwidth(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
+int config_parse_job_mode(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
+int config_parse_job_mode_isolate(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
/* gperf prototypes */
const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, unsigned length);
Index: systemd-208/src/core/unit.c
===================================================================
--- systemd-208.orig/src/core/unit.c
+++ systemd-208/src/core/unit.c
@@ -85,6 +85,7 @@ Unit *unit_new(Manager *m, size_t size)
u->deserialized_job = _JOB_TYPE_INVALID;
u->default_dependencies = true;
u->unit_file_state = _UNIT_FILE_STATE_INVALID;
+ u->on_failure_job_mode = JOB_REPLACE;
return u;
}
@@ -807,14 +808,14 @@ void unit_dump(Unit *u, FILE *f, const c
"%s\tRefuseManualStart: %s\n"
"%s\tRefuseManualStop: %s\n"
"%s\tDefaultDependencies: %s\n"
- "%s\tOnFailureIsolate: %s\n"
+ "%s\tOnFailureJobMode: %s\n"
"%s\tIgnoreOnIsolate: %s\n"
"%s\tIgnoreOnSnapshot: %s\n",
prefix, yes_no(u->stop_when_unneeded),
prefix, yes_no(u->refuse_manual_start),
prefix, yes_no(u->refuse_manual_stop),
prefix, yes_no(u->default_dependencies),
- prefix, yes_no(u->on_failure_isolate),
+ prefix, job_mode_to_string(u->on_failure_job_mode),
prefix, yes_no(u->ignore_on_isolate),
prefix, yes_no(u->ignore_on_snapshot));
@@ -985,11 +986,11 @@ int unit_load(Unit *u) {
if (r < 0)
goto fail;
- if (u->on_failure_isolate &&
+ if (u->on_failure_job_mode == JOB_ISOLATE &&
set_size(u->dependencies[UNIT_ON_FAILURE]) > 1) {
log_error_unit(u->id,
- "More than one OnFailure= dependencies specified for %s but OnFailureIsolate= enabled. Refusing.", u->id);
+ "More than one OnFailure= dependencies specified for %s but OnFailureJobMode=isolate set. Refusing.", u->id);
r = -EINVAL;
goto fail;
@@ -1394,7 +1395,7 @@ void unit_start_on_failure(Unit *u) {
SET_FOREACH(other, u->dependencies[UNIT_ON_FAILURE], i) {
int r;
- r = manager_add_job(u->manager, JOB_START, other, u->on_failure_isolate ? JOB_ISOLATE : JOB_REPLACE, true, NULL, NULL);
+ r = manager_add_job(u->manager, JOB_START, other, u->on_failure_job_mode, true, NULL, NULL);
if (r < 0)
log_error_unit(u->id, "Failed to enqueue OnFailure= job: %s", strerror(-r));
}
Index: systemd-208/src/core/unit.h
===================================================================
--- systemd-208.orig/src/core/unit.h
+++ systemd-208/src/core/unit.h
@@ -228,8 +228,8 @@ struct Unit {
/* Allow isolation requests */
bool allow_isolate;
- /* Isolate OnFailure unit */
- bool on_failure_isolate;
+ /* How to start OnFailure units */
+ JobMode on_failure_job_mode;
/* Ignore this unit when isolating */
bool ignore_on_isolate;
Index: systemd-208/units/initrd-cleanup.service.in
===================================================================
--- systemd-208.orig/units/initrd-cleanup.service.in
+++ systemd-208/units/initrd-cleanup.service.in
@@ -10,6 +10,7 @@ Description=Cleaning Up and Shutting Dow
DefaultDependencies=no
ConditionPathExists=/etc/initrd-release
OnFailure=emergency.target
+OnFailureJobMode=replace-irreversibly
After=initrd-root-fs.target initrd-fs.target initrd.target
[Service]
Index: systemd-208/units/initrd-fs.target
===================================================================
--- systemd-208.orig/units/initrd-fs.target
+++ systemd-208/units/initrd-fs.target
@@ -9,7 +9,7 @@
Description=Initrd File Systems
Documentation=man:systemd.special(7)
OnFailure=emergency.target
-OnFailureIsolate=yes
+OnFailureJobMode=replace-irreversibly
ConditionPathExists=/etc/initrd-release
After=initrd-parse-etc.service
DefaultDependencies=no
Index: systemd-208/units/initrd-parse-etc.service.in
===================================================================
--- systemd-208.orig/units/initrd-parse-etc.service.in
+++ systemd-208/units/initrd-parse-etc.service.in
@@ -11,6 +11,7 @@ DefaultDependencies=no
Requires=initrd-root-fs.target
After=initrd-root-fs.target
OnFailure=emergency.target
+OnFailureJobMode=replace-irreversibly
ConditionPathExists=/etc/initrd-release
[Service]
Index: systemd-208/units/initrd-root-fs.target
===================================================================
--- systemd-208.orig/units/initrd-root-fs.target
+++ systemd-208/units/initrd-root-fs.target
@@ -10,6 +10,6 @@ Description=Initrd Root File System
Documentation=man:systemd.special(7)
ConditionPathExists=/etc/initrd-release
OnFailure=emergency.target
-OnFailureIsolate=yes
+OnFailureJobMode=replace-irreversibly
DefaultDependencies=no
Conflicts=shutdown.target
Index: systemd-208/units/initrd-switch-root.service.in
===================================================================
--- systemd-208.orig/units/initrd-switch-root.service.in
+++ systemd-208/units/initrd-switch-root.service.in
@@ -10,6 +10,7 @@ Description=Switch Root
DefaultDependencies=no
ConditionPathExists=/etc/initrd-release
OnFailure=emergency.target
+OnFailureJobMode=replace-irreversibly
AllowIsolate=yes
[Service]
Index: systemd-208/units/initrd.target
===================================================================
--- systemd-208.orig/units/initrd.target
+++ systemd-208/units/initrd.target
@@ -9,7 +9,7 @@
Description=Initrd Default Target
Documentation=man:systemd.special(7)
OnFailure=emergency.target
-OnFailureIsolate=yes
+OnFailureJobMode=replace-irreversibly
ConditionPathExists=/etc/initrd-release
Requires=basic.target
Wants=initrd-root-fs.target initrd-fs.target initrd-parse-etc.service
Index: systemd-208/units/local-fs.target
===================================================================
--- systemd-208.orig/units/local-fs.target
+++ systemd-208/units/local-fs.target
@@ -12,4 +12,4 @@ After=local-fs-pre.target
DefaultDependencies=no
Conflicts=shutdown.target
OnFailure=emergency.target
-OnFailureIsolate=no
+OnFailureJobMode=replace-irreversibly

View File

@ -0,0 +1,40 @@
From 8d1a28020409ee4afea6ef8c1c4d3522a209284e Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 9 Oct 2013 00:13:55 +0200
Subject: [PATCH] core: unify the way we denote serialization attributes
---
src/core/service.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/core/service.c b/src/core/service.c
index 98b1599..96ed2d3 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -2652,7 +2652,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir);
if (s->forbid_restart)
- unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart));
+ unit_serialize_item(u, f, "forbid-restart", yes_no(s->forbid_restart));
return 0;
}
@@ -2790,12 +2790,12 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
return log_oom();
s->exec_context.var_tmp_dir = t;
- } else if (streq(key, "forbid_restart")) {
+ } else if (streq(key, "forbid-restart")) {
int b;
b = parse_boolean(value);
if (b < 0)
- log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value);
+ log_debug_unit(u->id, "Failed to parse forbid-restart value %s", value);
else
s->forbid_restart = b;
} else
--
1.8.4

View File

@ -0,0 +1,71 @@
From 74dcc2df7b2a340c3e1fe9e61e5c8deb324c83d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 11 Oct 2013 19:33:20 -0400
Subject: [PATCH] dbus-common: avoid leak in error path
src/shared/dbus-common.c:968:33: warning: Potential leak of memory pointed to by 'l'
return -EINVAL;
^~~~~~
---
src/shared/dbus-common.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c
index c727cae..3ba2d87 100644
--- a/src/shared/dbus-common.c
+++ b/src/shared/dbus-common.c
@@ -934,7 +934,7 @@ int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l) {
int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
DBusMessageIter sub, sub2;
unsigned n = 0, i = 0;
- char **l;
+ _cleanup_strv_free_ char **l = NULL;
assert(iter);
assert(_l);
@@ -953,6 +953,7 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
l = new(char*, n*2+1);
if (!l)
return -ENOMEM;
+ l[0] = NULL; /* make sure that l is properly terminated at all times */
dbus_message_iter_recurse(iter, &sub);
@@ -968,26 +969,25 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
return -EINVAL;
l[i] = strdup(a);
- if (!l[i]) {
- strv_free(l);
+ if (!l[i])
return -ENOMEM;
- }
+ i++;
- l[++i] = strdup(b);
- if (!l[i]) {
- strv_free(l);
+ l[i] = strdup(b);
+ if (!l[i])
return -ENOMEM;
- }
-
i++;
+
dbus_message_iter_next(&sub);
}
assert(i == n*2);
l[i] = NULL;
- if (_l)
+ if (_l) {
*_l = l;
+ l = NULL; /* avoid freeing */
+ }
return 0;
}
--
1.8.4

View File

@ -0,0 +1,33 @@
From 6c7980093c4e39d07bf06484f96f489e236c7c29 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay@vrfy.org>
Date: Thu, 10 Oct 2013 01:38:11 +0200
Subject: [PATCH] do not accept "garbage" from acpi firmware performance data
(FPDT)
00000000 46 42 50 54 38 00 00 00 02 00 30 02 00 00 00 00 |FBPT8.....0.....|
00000010 23 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |#E..............|
00000020 f5 6a 51 00 00 00 00 00 00 00 00 00 00 00 00 00 |.jQ.............|
00000030 00 00 00 00 00 00 00 00 70 74 61 6c 58 00 00 00 |........ptalX...|
---
src/shared/acpi-fpdt.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
index af58c7c..75648b4 100644
--- a/src/shared/acpi-fpdt.c
+++ b/src/shared/acpi-fpdt.c
@@ -146,6 +146,11 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
if (brec.type != ACPI_FPDT_BOOT_REC)
return -EINVAL;
+ if (brec.startup_start == 0 || brec.exit_services_exit < brec.startup_start)
+ return -EINVAL;
+ if (brec.exit_services_exit > NSEC_PER_HOUR)
+ return -EINVAL;
+
if (loader_start)
*loader_start = brec.startup_start / 1000;
if (loader_exit)
--
1.8.4

View File

@ -0,0 +1,29 @@
From 6891529fe1176c046ece579807ff48e3191692f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 11 Oct 2013 19:33:36 -0400
Subject: [PATCH] drop-ins: check return value
If the function failed, nothing serious would happen
because unlink would probably return EFAULT, but this
would obscure the real error and is a bit sloppy.
---
src/core/unit.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/core/unit.c b/src/core/unit.c
index 4b97710..1db7d06 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -2908,6 +2908,9 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) {
return 0;
r = drop_in_file(u, mode, name, &p, &q);
+ if (r < 0)
+ return r;
+
if (unlink(q) < 0)
r = errno == ENOENT ? 0 : -errno;
else
--
1.8.4

View File

@ -0,0 +1,40 @@
From 9a5cb1371b6d8b0a04bd08665bcf9b06cb40c64c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Thu, 3 Oct 2013 22:13:01 -0400
Subject: [PATCH] gpt-auto-generator: exit immediately if in container
Otherwise we get an ugly warning when running systemd in
a container.
---
src/gpt-auto-generator/gpt-auto-generator.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index ca54925..d2b4213 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -38,6 +38,7 @@
#include "libudev.h"
#include "special.h"
#include "unit-name.h"
+#include "virt.h"
/* TODO:
*
@@ -481,6 +482,13 @@ int main(int argc, char *argv[]) {
umask(0022);
if (in_initrd()) {
+ log_debug("In initrd, exiting.");
+ r = 0;
+ goto finish;
+ }
+
+ if (detect_container(NULL) > 0) {
+ log_debug("In a container, exiting.");
r = 0;
goto finish;
}
--
1.8.4

View File

@ -0,0 +1,25 @@
From 2ee0591d12b9e725c4585502285fd91cde682d9b Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 9 Oct 2013 04:03:45 +0200
Subject: [PATCH] journald: fix minor memory leak
---
src/journal/journal-vacuum.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index c73ad8f..8d5effb 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -278,6 +278,8 @@ int journal_directory_vacuum(
} else if (errno != ENOENT)
log_warning("Failed to delete %s/%s: %m", directory, p);
+ free(p);
+
continue;
}
--
1.8.4

View File

@ -0,0 +1,39 @@
From 2b98f75a63e6022bf74a7d678c47faa5208c794f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Wed, 9 Oct 2013 22:13:13 -0400
Subject: [PATCH] journald: remove rotated file from hashmap when rotation
fails
Before, when the user journal file was rotated, journal_file_rotate
could close the old file and fail to open the new file. In that
case, we would leave the old (deallocated) file in the hashmap.
On subsequent accesses, we could retrieve this stale entry, leading
to a segfault.
When journal_file_rotate fails with the file pointer set to 0,
old file is certainly gone, and cannot be used anymore.
https://bugzilla.redhat.com/show_bug.cgi?id=890463
---
src/journal/journald-server.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 4f47eb1..e03e413 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -321,8 +321,10 @@ void server_rotate(Server *s) {
if (r < 0)
if (f)
log_error("Failed to rotate %s: %s", f->path, strerror(-r));
- else
+ else {
log_error("Failed to create user journal: %s", strerror(-r));
+ hashmap_remove(s->user_journals, k);
+ }
else {
hashmap_replace(s->user_journals, k, f);
server_fix_perms(s, f, PTR_TO_UINT32(k));
--
1.8.4

View File

@ -0,0 +1,27 @@
From 3f4fee033bf0f623de74f3e8a14c42b8ff81c36e Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrmann@gmail.com>
Date: Thu, 10 Oct 2013 13:09:37 +0200
Subject: [PATCH] login: fix invalid free() in sd_session_get_vt()
We need to clear variables markes as _cleanup_free_. Otherwise, our
error-paths might corrupt random memory.
---
src/login/sd-login.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/login/sd-login.c b/src/login/sd-login.c
index 71d8c29..6c27dfe 100644
--- a/src/login/sd-login.c
+++ b/src/login/sd-login.c
@@ -350,7 +350,7 @@ _public_ int sd_session_get_tty(const char *session, char **tty) {
}
_public_ int sd_session_get_vt(const char *session, unsigned *vtnr) {
- _cleanup_free_ char *vtnr_string;
+ _cleanup_free_ char *vtnr_string = NULL;
unsigned u;
int r;
--
1.8.4

View File

@ -0,0 +1,27 @@
From 0581dac2c146cef0f55841a4c136dc48409c8eaa Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrmann@gmail.com>
Date: Thu, 10 Oct 2013 13:11:27 +0200
Subject: [PATCH] login: make sd_session_get_vt() actually work
We use VTNR, not VTNr as key. Until now sd_session_get_vt() just returns
an error.
---
src/login/sd-login.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/login/sd-login.c b/src/login/sd-login.c
index 6c27dfe..7e25041 100644
--- a/src/login/sd-login.c
+++ b/src/login/sd-login.c
@@ -354,7 +354,7 @@ _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) {
unsigned u;
int r;
- r = session_get_string(session, "VTNr", &vtnr_string);
+ r = session_get_string(session, "VTNR", &vtnr_string);
if (r < 0)
return r;
--
1.8.4

View File

@ -0,0 +1,25 @@
From 660ea9620f7b8f99d08a2770d4e81acfd8aea02e Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 4 Oct 2013 21:16:40 +0200
Subject: [PATCH] logind: fix bus introspection data for TakeControl()
---
src/login/logind-session-dbus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
index 5f6bafb..be4e01c 100644
--- a/src/login/logind-session-dbus.c
+++ b/src/login/logind-session-dbus.c
@@ -41,7 +41,7 @@
" <arg name=\"who\" type=\"s\"/>\n" \
" <arg name=\"signal\" type=\"s\"/>\n" \
" </method>\n" \
- " <method name=\"TakeControl\"/>\n" \
+ " <method name=\"TakeControl\">\n" \
" <arg name=\"force\" type=\"b\"/>\n" \
" </method>\n" \
" <method name=\"ReleaseControl\"/>\n" \
--
1.8.4

View File

@ -0,0 +1,28 @@
From 63966da86d8e71b1f3f2b57d5448770d526421f9 Mon Sep 17 00:00:00 2001
From: Thomas Bächler <thomas@archlinux.org>
Date: Sun, 15 Dec 2013 11:06:37 +0000
Subject: login: Don't stop a running user manager from garbage-collecting the user.
With the current logic, a user will never be garbage-collected, since its
manager will always be around. Change the logic such that a user is
garbage-collected when it has no sessions and linger is disabled.
---
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 6ba8d98..441e086 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -629,12 +629,6 @@ int user_check_gc(User *u, bool drop_not
if (u->slice_job || u->service_job)
return 1;
- if (u->slice && manager_unit_is_active(u->manager, u->slice) != 0)
- return 1;
-
- if (u->service && manager_unit_is_active(u->manager, u->service) != 0)
- return 1;
-
return 0;
}
--
cgit v0.9.0.2-2-gbebe

View File

@ -0,0 +1,45 @@
From a316932f5a627c1ef78f568fd5dfa579f12e76b2 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 4 Oct 2013 17:01:37 +0200
Subject: [PATCH] manager: when verifying whether clients may change
environment using selinux check for "reload" rather "reboot"
This appears to be a copy/paste error.
---
src/core/dbus-manager.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index 676a07f..8f4d017 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -1397,7 +1397,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
_cleanup_strv_free_ char **l = NULL;
char **e = NULL;
- SELINUX_ACCESS_CHECK(connection, message, "reboot");
+ SELINUX_ACCESS_CHECK(connection, message, "reload");
r = bus_parse_strv(message, &l);
if (r == -ENOMEM)
@@ -1424,7 +1424,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
_cleanup_strv_free_ char **l = NULL;
char **e = NULL;
- SELINUX_ACCESS_CHECK(connection, message, "reboot");
+ SELINUX_ACCESS_CHECK(connection, message, "reload");
r = bus_parse_strv(message, &l);
if (r == -ENOMEM)
@@ -1452,7 +1452,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
char **f = NULL;
DBusMessageIter iter;
- SELINUX_ACCESS_CHECK(connection, message, "reboot");
+ SELINUX_ACCESS_CHECK(connection, message, "reload");
if (!dbus_message_iter_init(message, &iter))
goto oom;
--
1.8.4

View File

@ -0,0 +1,29 @@
From 9c03872bc8fb2a381eafe7301ef9811b641686dd Mon Sep 17 00:00:00 2001
From: Dave Reisner <dreisner@archlinux.org>
Date: Fri, 4 Oct 2013 18:22:40 -0400
Subject: [PATCH] mount: check for NULL before reading pm->what
Since a57f7e2c828b85, a mount unit with garbage in it would cause
systemd to crash on loading it.
ref: https://bugs.freedesktop.org/show_bug.cgi?id=70148
---
src/core/mount.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/mount.c b/src/core/mount.c
index 93bfa99..db055f0 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -182,7 +182,7 @@ static int mount_add_mount_links(Mount *m) {
* for the source path (if this is a bind mount) to be
* available. */
pm = get_mount_parameters_fragment(m);
- if (pm && path_is_absolute(pm->what)) {
+ if (pm && pm->what && path_is_absolute(pm->what)) {
r = unit_require_mounts_for(UNIT(m), pm->what);
if (r < 0)
return r;
--
1.8.4

View File

@ -0,0 +1,28 @@
From a8ccacf5344c4434b1d5ff3837307acb8fcf93d2 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Mon, 14 Oct 2013 08:15:51 +0200
Subject: [PATCH] shared/util: Fix glob_extend() argument
glob_extend() would completely fail to work, or return incorrect
data if it wasn't being passed the current getopt "optarg" variable
as it used the global variable, instead of the passed parameters.
---
src/shared/util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shared/util.c b/src/shared/util.c
index 54dbace..1822770 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -4461,7 +4461,7 @@ int glob_extend(char ***strv, const char *path) {
char **p;
errno = 0;
- k = glob(optarg, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
+ k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
if (k == GLOB_NOMATCH)
return -ENOENT;
--
1.8.4

View File

@ -0,0 +1,50 @@
From 1d5989fd803d2019de0f6aaaf3cfb1cb2bbc3cdb Mon Sep 17 00:00:00 2001
From: Dave Reisner <dreisner@archlinux.org>
Date: Sun, 6 Oct 2013 18:26:23 -0400
Subject: [PATCH] shared/util: fix off-by-one error in tag_to_udev_node
Triggered false negatives when encoding a string which needed every
character to be escaped, e.g. "LABEL=/".
---
src/shared/util.c | 2 +-
src/test/test-device-nodes.c | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/shared/util.c b/src/shared/util.c
index 82f4221..31cea79 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -3527,7 +3527,7 @@ static char *tag_to_udev_node(const char *tagvalue, const char *by) {
if (u == NULL)
return NULL;
- enc_len = strlen(u) * 4;
+ enc_len = strlen(u) * 4 + 1;
t = new(char, enc_len);
if (t == NULL)
return NULL;
diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c
index 2f3dedb..59ba4be 100644
--- a/src/test/test-device-nodes.c
+++ b/src/test/test-device-nodes.c
@@ -26,7 +26,7 @@
/* helpers for test_encode_devnode_name */
static char *do_encode_string(const char *in) {
- size_t out_len = strlen(in) * 4;
+ size_t out_len = strlen(in) * 4 + 1;
char *out = malloc(out_len);
assert_se(out);
@@ -46,6 +46,8 @@ static void test_encode_devnode_name(void) {
assert_se(expect_encoded_as("pinkiepie", "pinkiepie"));
assert_se(expect_encoded_as("valíd\\ųtf8", "valíd\\x5cųtf8"));
assert_se(expect_encoded_as("s/ash/ng", "s\\x2fash\\x2fng"));
+ assert_se(expect_encoded_as("/", "\\x2f"));
+ assert_se(expect_encoded_as("!", "\\x21"));
}
int main(int argc, char *argv[]) {
--
1.8.4

View File

@ -0,0 +1,41 @@
From 77009452cfd25208509b14ea985e81fdf9f7d40e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Thu, 3 Oct 2013 22:15:08 -0400
Subject: [PATCH] systemd: order remote mounts from mountinfo before
remote-fs.target
Usually the network is stopped before filesystems are umounted.
Ordering network filesystems before remote-fs.target means that their
unmounting will be performed earlier, and can terminate sucessfully.
https://bugs.freedesktop.org/show_bug.cgi?id=70002
---
src/core/mount.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/core/mount.c b/src/core/mount.c
index 3d46557..93bfa99 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -1440,6 +1440,9 @@ static int mount_add_one(
u = manager_get_unit(m, e);
if (!u) {
+ const char* const target =
+ fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
+
delete = true;
u = unit_new(m, sizeof(Mount));
@@ -1466,7 +1469,7 @@ static int mount_add_one(
goto fail;
}
- r = unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_LOCAL_FS_TARGET, NULL, true);
+ r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
if (r < 0)
goto fail;
--
1.8.4

View File

@ -0,0 +1,51 @@
From 6aca9a587d4ad40b1c044f99e3714022201b9fd4 Mon Sep 17 00:00:00 2001
From: Sylvia Else <sylviabz1@cryogenic.net>
Date: Sun, 6 Oct 2013 23:06:35 -0400
Subject: [PATCH] systemd: serialize/deserialize forbid_restart value
The Service type's forbid_restart field was not preserved by
serialization/deserialization, so the fact that the service should not
be restarted after stopping was lost.
If a systemctl stop foo command has been given, but the foo service
has not yet stopped, and then the systemctl --system daemon-reload was
given, then when the foo service eventually stopped, systemd would
restart it.
https://bugs.freedesktop.org/show_bug.cgi?id=69800
---
src/core/service.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/core/service.c b/src/core/service.c
index 6792024..98b1599 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -2651,6 +2651,9 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
if (s->exec_context.var_tmp_dir)
unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir);
+ if (s->forbid_restart)
+ unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart));
+
return 0;
}
@@ -2787,6 +2790,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
return log_oom();
s->exec_context.var_tmp_dir = t;
+ } else if (streq(key, "forbid_restart")) {
+ int b;
+
+ b = parse_boolean(value);
+ if (b < 0)
+ log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value);
+ else
+ s->forbid_restart = b;
} else
log_debug_unit(u->id, "Unknown serialization key '%s'", key);
--
1.8.4

View File

@ -0,0 +1,85 @@
--- systemd-208/src/core/shutdown.c
+++ systemd-208/src/core/shutdown.c 2014-01-27 11:31:38.486235816 +0000
@@ -329,6 +329,9 @@ int main(int argc, char *argv[]) {
reboot(cmd);
+ if (cmd == RB_POWER_OFF)
+ reboot(RB_HALT_SYSTEM);
+
if (errno == EPERM && in_container) {
/* If we are in a container, and we lacked
* CAP_SYS_BOOT just exit, this will kill our
--- systemd-208/src/systemctl/systemctl.c
+++ systemd-208/src/systemctl/systemctl.c 2014-01-27 11:05:18.298236035 +0000
@@ -138,7 +138,7 @@ static bool arg_plain = false;
static bool private_bus = false;
static int daemon_reload(DBusConnection *bus, char **args);
-static void halt_now(enum action a);
+static int halt_now(enum action a);
static void pager_open_if_enabled(void) {
@@ -2227,7 +2227,7 @@ static int start_special(DBusConnection
(a == ACTION_HALT ||
a == ACTION_POWEROFF ||
a == ACTION_REBOOT))
- halt_now(a);
+ return halt_now(a);
if (arg_force >= 1 &&
(a == ACTION_HALT ||
@@ -5973,7 +5973,7 @@ done:
return 0;
}
-static _noreturn_ void halt_now(enum action a) {
+static int halt_now(enum action a) {
/* Make sure C-A-D is handled by the kernel from this
* point on... */
@@ -5984,23 +5984,22 @@ static _noreturn_ void halt_now(enum act
case ACTION_HALT:
log_info("Halting.");
reboot(RB_HALT_SYSTEM);
- break;
+ return -errno;
case ACTION_POWEROFF:
log_info("Powering off.");
reboot(RB_POWER_OFF);
- break;
+ return -errno;
case ACTION_REBOOT:
log_info("Rebooting.");
reboot(RB_AUTOBOOT);
- break;
+ return -errno;
default:
- assert_not_reached("Unknown halt action.");
+ assert_not_reached("Unknown action.");
+ return -ENOSYS;
}
-
- assert_not_reached("Uh? This shouldn't happen.");
}
static int halt_main(DBusConnection *bus) {
@@ -6069,9 +6068,10 @@ static int halt_main(DBusConnection *bus
if (arg_dry)
return 0;
- halt_now(arg_action);
- /* We should never reach this. */
- return -ENOSYS;
+ r = halt_now(arg_action);
+ log_error("Failed to reboot: %s", strerror(-r));
+
+ return r;
}
static int runlevel_main(void) {

View File

@ -1,26 +0,0 @@
From ebab7f4535a077eb8168cb8f3a9fe899e56aba17 Mon Sep 17 00:00:00 2001
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Fri, 13 Sep 2013 11:17:06 +0800
Subject: [PATCH 2/7] cgroup: correct the log information
it should be memory.soft_limit_in_bytes.
---
src/core/cgroup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index fba0b2f..aee93ba 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -266,7 +266,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit);
r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
if (r < 0)
- log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
+ log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r));
}
if (mask & CGROUP_DEVICE) {
--
1.8.1.4

View File

@ -0,0 +1,55 @@
From 6c8c92fef72cf6a7ef7109a424ef82dbdc4f6952 Mon Sep 17 00:00:00 2001
From: Dave Reisner <dreisner@archlinux.org>
Date: Wed, 2 Oct 2013 07:46:24 -0400
Subject: [PATCH 02/15] fix lingering references to
/var/lib/{backlight,random-seed}
This should have been part of ef5bfcf668e6029faa78534dfe.
---
man/systemd-backlight@.service.xml | 2 +-
man/systemd-random-seed.service.xml | 2 +-
units/systemd-backlight@.service.in | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml
index 2b73625..4318964 100644
--- a/man/systemd-backlight@.service.xml
+++ b/man/systemd-backlight@.service.xml
@@ -58,7 +58,7 @@
is a service that restores the display backlight
brightness at early-boot and saves it at shutdown. On
disk, the backlight brightness is stored in
- <filename>/var/lib/backlight/</filename>. Note that by
+ <filename>/var/lib/systemd/backlight/</filename>. Note that by
default, only firmware backlight devices are
saved/restored.</para>
</refsect1>
diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml
index 8cd14b7..e5cd037 100644
--- a/man/systemd-random-seed.service.xml
+++ b/man/systemd-random-seed.service.xml
@@ -61,7 +61,7 @@
for details. Saving/restoring the random seed across
boots increases the amount of available entropy early
at boot. On disk the random seed is stored in
- <filename>/var/lib/random-seed</filename>.</para>
+ <filename>/var/lib/systemd/random-seed</filename>.</para>
</refsect1>
<refsect1>
diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
index b0e75db..5caa5d5 100644
--- a/units/systemd-backlight@.service.in
+++ b/units/systemd-backlight@.service.in
@@ -9,7 +9,7 @@
Description=Load/Save Screen Backlight Brightness of %I
Documentation=man:systemd-backlight@.service(8)
DefaultDependencies=no
-RequiresMountsFor=/var/lib/backlight
+RequiresMountsFor=/var/lib/systemd/backlight
Conflicts=shutdown.target
After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
Before=sysinit.target shutdown.target
--
1.8.4

View File

@ -0,0 +1,62 @@
From 95d57e7b631a2d78b9b5d841125194052895470f Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 29 Jan 2014 13:49:54 +0100
Subject: [PATCH 2/3] service: allow KillMode=mixed in conjunction with
PAMName=
---
src/core/service.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/src/core/service.c b/src/core/service.c
index 6792024..e7f03e1 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -1105,37 +1105,31 @@ static int service_verify(Service *s) {
return 0;
if (!s->exec_command[SERVICE_EXEC_START]) {
- log_error_unit(UNIT(s)->id,
- "%s lacks ExecStart setting. Refusing.", UNIT(s)->id);
+ log_error_unit(UNIT(s)->id, "%s lacks ExecStart setting. Refusing.", UNIT(s)->id);
return -EINVAL;
}
if (s->type != SERVICE_ONESHOT &&
s->exec_command[SERVICE_EXEC_START]->command_next) {
- log_error_unit(UNIT(s)->id,
- "%s has more than one ExecStart setting, which is only allowed for Type=oneshot services. Refusing.", UNIT(s)->id);
+ log_error_unit(UNIT(s)->id, "%s has more than one ExecStart setting, which is only allowed for Type=oneshot services. Refusing.", UNIT(s)->id);
return -EINVAL;
}
if (s->type == SERVICE_ONESHOT && s->restart != SERVICE_RESTART_NO) {
- log_error_unit(UNIT(s)->id,
- "%s has Restart setting other than no, which isn't allowed for Type=oneshot services. Refusing.", UNIT(s)->id);
+ log_error_unit(UNIT(s)->id, "%s has Restart setting other than no, which isn't allowed for Type=oneshot services. Refusing.", UNIT(s)->id);
return -EINVAL;
}
if (s->type == SERVICE_DBUS && !s->bus_name) {
- log_error_unit(UNIT(s)->id,
- "%s is of type D-Bus but no D-Bus service name has been specified. Refusing.", UNIT(s)->id);
+ log_error_unit(UNIT(s)->id, "%s is of type D-Bus but no D-Bus service name has been specified. Refusing.", UNIT(s)->id);
return -EINVAL;
}
if (s->bus_name && s->type != SERVICE_DBUS)
- log_warning_unit(UNIT(s)->id,
- "%s has a D-Bus service name specified, but is not of type dbus. Ignoring.", UNIT(s)->id);
+ log_warning_unit(UNIT(s)->id, "%s has a D-Bus service name specified, but is not of type dbus. Ignoring.", UNIT(s)->id);
- if (s->exec_context.pam_name && s->kill_context.kill_mode != KILL_CONTROL_GROUP) {
- log_error_unit(UNIT(s)->id,
- "%s has PAM enabled. Kill mode must be set to 'control-group'. Refusing.", UNIT(s)->id);
+ if (s->exec_context.pam_name && !(s->kill_context.kill_mode == KILL_CONTROL_GROUP || s->kill_context.kill_mode == KILL_MIXED)) {
+ log_error_unit(UNIT(s)->id, "%s has PAM enabled. Kill mode must be set to 'control-group' or 'mixed'. Refusing.", UNIT(s)->id);
return -EINVAL;
}
--
1.8.4

View File

@ -0,0 +1,25 @@
From 2c64a8d0caf84254e38f2e76528f2034d37da520 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 14:03:56 +0200
Subject: [PATCH 03/15] acpi: make sure we never free an uninitialized pointer
---
src/shared/acpi-fpdt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
index a7c83ed..af58c7c 100644
--- a/src/shared/acpi-fpdt.c
+++ b/src/shared/acpi-fpdt.c
@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
};
int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
- _cleanup_free_ char *buf;
+ _cleanup_free_ char *buf = NULL;
struct acpi_table_header *tbl;
size_t l;
struct acpi_fpdt_header *rec;
--
1.8.4

View File

@ -1,46 +0,0 @@
From bebbf30ef61e4cbc782731e48ad67613aab38ec6 Mon Sep 17 00:00:00 2001
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Fri, 13 Sep 2013 14:43:04 +0800
Subject: [PATCH 3/7] cgroup: fix incorrectly setting memory cgroup
If the memory_limit of unit is -1, we should write "-1"
to the file memory.limit_in_bytes. not the (unit64_t) -1.
otherwise the memory.limit_in_bytes will be set to zero.
---
src/core/cgroup.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index aee93ba..244baff 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -257,14 +257,21 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
if (mask & CGROUP_MEMORY) {
char buf[DECIMAL_STR_MAX(uint64_t) + 1];
+ if (c->memory_limit != (uint64_t) -1) {
+ sprintf(buf, "%" PRIu64 "\n", c->memory_limit);
+ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf);
+ } else
+ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", "-1");
- sprintf(buf, "%" PRIu64 "\n", c->memory_limit);
- r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf);
if (r < 0)
log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
- sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit);
- r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
+ if (c->memory_soft_limit != (uint64_t) -1) {
+ sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit);
+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
+ } else
+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", "-1");
+
if (r < 0)
log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r));
}
--
1.8.1.4

View File

@ -0,0 +1,128 @@
From b2ffdc8da536cd88a305f97517f356e2c5383a52 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 29 Jan 2014 14:58:04 +0100
Subject: [PATCH 3/3] core: make sure to always go through both SIGTERM and
SIGKILL states of units
Given that we now have KillMode=mixed where SIGTERM might kill a smaller
set than SIGKILL we need to make sure to always go explicitly throught
the SIGKILL state to get the right end result.
---
src/core/mount.c | 8 +++++++-
src/core/scope.c | 4 +++-
src/core/service.c | 10 +++++++---
src/core/socket.c | 6 +++++-
src/core/swap.c | 6 +++++-
5 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/src/core/mount.c b/src/core/mount.c
index 3d46557..e418d09 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -854,8 +854,14 @@ static void mount_enter_signal(Mount *m, MountState state, MountResult f) {
goto fail;
mount_set_state(m, state);
- } else if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL)
+ } else if (state == MOUNT_REMOUNTING_SIGTERM)
+ mount_enter_signal(m, MOUNT_REMOUNTING_SIGKILL, MOUNT_SUCCESS);
+ else if (state == MOUNT_REMOUNTING_SIGKILL)
mount_enter_mounted(m, MOUNT_SUCCESS);
+ else if (state == MOUNT_MOUNTING_SIGTERM)
+ mount_enter_signal(m, MOUNT_MOUNTING_SIGKILL, MOUNT_SUCCESS);
+ else if (state == MOUNT_UNMOUNTING_SIGTERM)
+ mount_enter_signal(m, MOUNT_UNMOUNTING_SIGKILL, MOUNT_SUCCESS);
else
mount_enter_dead(m, MOUNT_SUCCESS);
diff --git a/src/core/scope.c b/src/core/scope.c
index 50e5dba..3a5c95e 100644
--- a/src/core/scope.c
+++ b/src/core/scope.c
@@ -221,7 +221,9 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
}
scope_set_state(s, state);
- } else
+ } else if (state == SCOPE_STOP_SIGTERM)
+ scope_enter_signal(s, SCOPE_STOP_SIGKILL, SCOPE_SUCCESS);
+ else
scope_enter_dead(s, SCOPE_SUCCESS);
return;
diff --git a/src/core/service.c b/src/core/service.c
index e7f03e1..4b481c2 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -1964,10 +1964,9 @@ static void service_enter_stop_post(Service *s, ServiceResult f) {
if (r < 0)
goto fail;
-
service_set_state(s, SERVICE_STOP_POST);
} else
- service_enter_dead(s, SERVICE_SUCCESS, true);
+ service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_SUCCESS);
return;
@@ -1993,6 +1992,7 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
s->main_pid,
s->control_pid,
s->main_pid_alien);
+
if (r < 0)
goto fail;
@@ -2005,8 +2005,12 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
}
service_set_state(s, state);
- } else if (state == SERVICE_STOP_SIGTERM || state == SERVICE_STOP_SIGKILL)
+ } else if (state == SERVICE_STOP_SIGTERM)
+ service_enter_signal(s, SERVICE_STOP_SIGKILL, SERVICE_SUCCESS);
+ else if (state == SERVICE_STOP_SIGKILL)
service_enter_stop_post(s, SERVICE_SUCCESS);
+ else if (state == SERVICE_FINAL_SIGTERM)
+ service_enter_signal(s, SERVICE_FINAL_SIGKILL, SERVICE_SUCCESS);
else
service_enter_dead(s, SERVICE_SUCCESS, true);
diff --git a/src/core/socket.c b/src/core/socket.c
index 6c0ac1a..831876f 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1298,8 +1298,12 @@ static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) {
goto fail;
socket_set_state(s, state);
- } else if (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_STOP_PRE_SIGKILL)
+ } else if (state == SOCKET_STOP_PRE_SIGTERM)
+ socket_enter_signal(s, SOCKET_STOP_PRE_SIGKILL, SOCKET_SUCCESS);
+ else if (state == SOCKET_STOP_PRE_SIGKILL)
socket_enter_stop_post(s, SOCKET_SUCCESS);
+ else if (state == SOCKET_FINAL_SIGTERM)
+ socket_enter_signal(s, SOCKET_FINAL_SIGKILL, SOCKET_SUCCESS);
else
socket_enter_dead(s, SOCKET_SUCCESS);
diff --git a/src/core/swap.c b/src/core/swap.c
index a68ab7c..8886fe8 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -655,7 +655,11 @@ static void swap_enter_signal(Swap *s, SwapState state, SwapResult f) {
goto fail;
swap_set_state(s, state);
- } else
+ } else if (state == SWAP_ACTIVATING_SIGTERM)
+ swap_enter_signal(s, SWAP_ACTIVATING_SIGKILL, SWAP_SUCCESS);
+ else if (state == SWAP_DEACTIVATING_SIGTERM)
+ swap_enter_signal(s, SWAP_DEACTIVATING_SIGKILL, SWAP_SUCCESS);
+ else
swap_enter_dead(s, SWAP_SUCCESS);
return;
--
1.8.4

View File

@ -1,25 +0,0 @@
From 0465a409e0a3725b44b0801641a7497e2125e59e Mon Sep 17 00:00:00 2001
From: Lukas Nykryn <lnykryn@redhat.com>
Date: Fri, 13 Sep 2013 14:12:55 +0200
Subject: [PATCH 4/7] random-seed: we should return errno of failed loop_write
---
src/random-seed/random-seed.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c
index 4776c07..afbd500 100644
--- a/src/random-seed/random-seed.c
+++ b/src/random-seed/random-seed.c
@@ -157,7 +157,7 @@ int main(int argc, char *argv[]) {
r = loop_write(seed_fd, buf, (size_t) k, false);
if (r <= 0) {
log_error("Failed to write new random seed file: %s", r < 0 ? strerror(-r) : "short write");
- r = k == 0 ? -EIO : (int) k;
+ r = r == 0 ? -EIO : r;
}
}
--
1.8.1.4

View File

@ -0,0 +1,134 @@
From cbb13b2a538ece1c7ec3b210e2b36b47df2a13ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= <vpavlin@redhat.com>
Date: Wed, 2 Oct 2013 16:42:42 +0200
Subject: [PATCH 04/15] systemctl: fix name mangling for sysv units
---
src/systemctl/systemctl.c | 45 ++++++++++++++++++---------------------------
1 file changed, 18 insertions(+), 27 deletions(-)
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index bb7ada9..d75281f 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -4218,11 +4218,10 @@ static int set_environment(DBusConnection *bus, char **args) {
return 0;
}
-static int enable_sysv_units(char **args) {
+static int enable_sysv_units(const char *verb, char **args) {
int r = 0;
#if defined(HAVE_SYSV_COMPAT) && defined(HAVE_CHKCONFIG)
- const char *verb = args[0];
unsigned f = 1, t = 1;
LookupPaths paths = {};
@@ -4242,7 +4241,7 @@ static int enable_sysv_units(char **args) {
return r;
r = 0;
- for (f = 1; args[f]; f++) {
+ for (f = 0; args[f]; f++) {
const char *name;
_cleanup_free_ char *p = NULL, *q = NULL;
bool found_native = false, found_sysv;
@@ -4365,7 +4364,7 @@ finish:
lookup_paths_free(&paths);
/* Drop all SysV units */
- for (f = 1, t = 1; args[f]; f++) {
+ for (f = 0, t = 0; args[f]; f++) {
if (isempty(args[f]))
continue;
@@ -4423,16 +4422,16 @@ static int enable_unit(DBusConnection *bus, char **args) {
dbus_error_init(&error);
- r = enable_sysv_units(args);
- if (r < 0)
- return r;
-
if (!args[1])
return 0;
r = mangle_names(args+1, &mangled_names);
if (r < 0)
- goto finish;
+ return r;
+
+ r = enable_sysv_units(verb, mangled_names);
+ if (r < 0)
+ return r;
if (!bus || avoid_bus()) {
if (streq(verb, "enable")) {
@@ -4624,11 +4623,15 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
bool enabled;
char **name;
- char *n;
+ _cleanup_strv_free_ char **mangled_names = NULL;
dbus_error_init(&error);
- r = enable_sysv_units(args);
+ r = mangle_names(args+1, &mangled_names);
+ if (r < 0)
+ return r;
+
+ r = enable_sysv_units(args[0], mangled_names);
if (r < 0)
return r;
@@ -4636,16 +4639,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
if (!bus || avoid_bus()) {
- STRV_FOREACH(name, args+1) {
+ STRV_FOREACH(name, mangled_names) {
UnitFileState state;
- n = unit_name_mangle(*name);
- if (!n)
- return log_oom();
-
- state = unit_file_get_state(arg_scope, arg_root, n);
-
- free(n);
+ state = unit_file_get_state(arg_scope, arg_root, *name);
if (state < 0)
return state;
@@ -4660,13 +4657,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
}
} else {
- STRV_FOREACH(name, args+1) {
+ STRV_FOREACH(name, mangled_names) {
const char *s;
- n = unit_name_mangle(*name);
- if (!n)
- return log_oom();
-
r = bus_method_call_with_reply (
bus,
"org.freedesktop.systemd1",
@@ -4675,11 +4668,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
"GetUnitFileState",
&reply,
NULL,
- DBUS_TYPE_STRING, &n,
+ DBUS_TYPE_STRING, name,
DBUS_TYPE_INVALID);
- free(n);
-
if (r)
return r;
--
1.8.4

View File

@ -1,26 +0,0 @@
From fa7341808def8efb736747299374745ae059f398 Mon Sep 17 00:00:00 2001
From: Lukas Nykryn <lnykryn@redhat.com>
Date: Fri, 13 Sep 2013 14:31:17 +0200
Subject: [PATCH 5/7] core/cgroup: first print then free
---
src/core/cgroup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 244baff..1f41efc 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -402,8 +402,8 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
is_in_hash = true;
if (r < 0) {
- free(path);
log_error("cgroup %s exists already: %s", path, strerror(-r));
+ free(path);
return r;
}
--
1.8.1.4

View File

@ -0,0 +1,48 @@
From 4b93637fd7dddb0a1518f35171998b2c7cd5c5bd Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:36:28 +0200
Subject: [PATCH 05/15] cryptsetup: fix OOM handling when parsing mount options
---
src/cryptsetup/cryptsetup.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
index 22b5eea..769c3e4 100644
--- a/src/cryptsetup/cryptsetup.c
+++ b/src/cryptsetup/cryptsetup.c
@@ -74,7 +74,7 @@ static int parse_one_option(const char *option) {
t = strdup(option+7);
if (!t)
- return -ENOMEM;
+ return log_oom();
free(opt_cipher);
opt_cipher = t;
@@ -89,9 +89,10 @@ static int parse_one_option(const char *option) {
} else if (startswith(option, "tcrypt-keyfile=")) {
opt_type = CRYPT_TCRYPT;
- if (path_is_absolute(option+15))
- opt_tcrypt_keyfiles = strv_append(opt_tcrypt_keyfiles, strdup(option+15));
- else
+ if (path_is_absolute(option+15)) {
+ if (strv_extend(&opt_tcrypt_keyfiles, option + 15) < 0)
+ return log_oom();
+ } else
log_error("Key file path '%s' is not absolute. Ignoring.", option+15);
} else if (startswith(option, "keyfile-size=")) {
@@ -113,7 +114,7 @@ static int parse_one_option(const char *option) {
t = strdup(option+5);
if (!t)
- return -ENOMEM;
+ return log_oom();
free(opt_hash);
opt_hash = t;
--
1.8.4

View File

@ -0,0 +1,25 @@
From 8c92d4bbc7a538ada11d7e85016cce141beb0e6c Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:36:43 +0200
Subject: [PATCH 06/15] journald: add missing error check
---
src/journal/journal-file.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 1236403..81c344f 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -907,6 +907,8 @@ static int journal_file_append_field(
osize = offsetof(Object, field.payload) + size;
r = journal_file_append_object(f, OBJECT_FIELD, osize, &o, &p);
+ if (r < 0)
+ return r;
o->field.hash = htole64(hash);
memcpy(o->field.payload, field, size);
--
1.8.4

View File

@ -1,30 +0,0 @@
From dec37dc9e875695c09cfc1ec5e55b5f68eaa39f4 Mon Sep 17 00:00:00 2001
From: Tom Gundersen <teg@jklm.no>
Date: Fri, 13 Sep 2013 14:46:18 +0200
Subject: [PATCH 6/7] swap: fix reverse dependencies
Make sure swap.target correctly requires/wants the swap units.
This fixes https://bugs.freedesktop.org/show_bug.cgi?id=69291.
Reported-by: Hussam Al-Tayeb
---
src/core/swap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/swap.c b/src/core/swap.c
index 57d15eb..3950860 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -220,7 +220,7 @@ static int swap_add_default_dependencies(Swap *s) {
}
if (!noauto) {
- r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, (nofail ? UNIT_WANTED_BY : UNIT_REQUIRED_BY),
+ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES),
SPECIAL_SWAP_TARGET, NULL, true);
if (r < 0)
return r;
--
1.8.1.4

View File

@ -0,0 +1,34 @@
From f5f6e41a9ee008e1632f79ab3fa20beef7c2b613 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:37:11 +0200
Subject: [PATCH 07/15] bus: fix potentially uninitialized memory access
---
src/libsystemd-bus/bus-internal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c
index 0e66f3d..cac948e 100644
--- a/src/libsystemd-bus/bus-internal.c
+++ b/src/libsystemd-bus/bus-internal.c
@@ -63,7 +63,7 @@ bool object_path_is_valid(const char *p) {
bool interface_name_is_valid(const char *p) {
const char *q;
- bool dot, found_dot;
+ bool dot, found_dot = false;
if (isempty(p))
return false;
@@ -103,7 +103,7 @@ bool interface_name_is_valid(const char *p) {
bool service_name_is_valid(const char *p) {
const char *q;
- bool dot, found_dot, unique;
+ bool dot, found_dot = false, unique;
if (isempty(p))
return false;
--
1.8.4

View File

@ -1,27 +0,0 @@
From f90d045c9168a55bb22eef6fe8756b6a6d2c1e53 Mon Sep 17 00:00:00 2001
From: Lukas Nykryn <lnykryn@redhat.com>
Date: Fri, 13 Sep 2013 14:12:54 +0200
Subject: [PATCH 7/7] libudev: fix move_later comparison
At the beginning move_later is set to -1, but it is set to different
value only if expression !move_later is true.
---
src/libudev/libudev-enumerate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
index bc1e37d..8146f27 100644
--- a/src/libudev/libudev-enumerate.c
+++ b/src/libudev/libudev-enumerate.c
@@ -300,7 +300,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume
/* skip to be delayed devices, and move the to
* the point where the prefix changes. We can
* only move one item at a time. */
- if (!move_later) {
+ if (move_later == -1) {
move_later_prefix = devices_delay_later(udev_enumerate->udev, entry->syspath);
if (move_later_prefix > 0) {
--
1.8.1.4

View File

@ -0,0 +1,30 @@
From 2e8d788c2f90d062f208f8c57a97e7b33cb29f7d Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:37:30 +0200
Subject: [PATCH 08/15] dbus: fix return value of dispatch_rqueue()
---
src/libsystemd-bus/sd-bus.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
index 3f766fb..db0880f 100644
--- a/src/libsystemd-bus/sd-bus.c
+++ b/src/libsystemd-bus/sd-bus.c
@@ -1215,11 +1215,11 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) {
if (r == 0)
return ret;
- r = 1;
+ ret = 1;
} while (!z);
*m = z;
- return 1;
+ return ret;
}
int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) {
--
1.8.4

View File

@ -1,90 +0,0 @@
From 9981460a8f2d5587fef5216d556b5fb502281be6 Mon Sep 17 00:00:00 2001
From: Tom Gundersen <teg@jklm.no>
Date: Mon, 16 Sep 2013 01:08:32 +0200
Subject: [PATCH 8/8] swap: create .wants symlink to 'auto' swap devices
As we load unit files lazily, we need to make sure something pulls in swap
units that should be started automatically, otherwise the default dependencies
will never be applied.
This partially reinstates code removed in
commit 64347fc2b983f33e7efb0fd2bb44e133fb9f30f4.
Also don't order swap devices after swap.target when they are 'nofail'.
---
src/core/swap.c | 8 ++++++--
src/fstab-generator/fstab-generator.c | 18 ++++++++++++++++--
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/core/swap.c b/src/core/swap.c
index 3950860..76c7d45 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -220,8 +220,12 @@ static int swap_add_default_dependencies(Swap *s) {
}
if (!noauto) {
- r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES),
- SPECIAL_SWAP_TARGET, NULL, true);
+ if (nofail)
+ r = unit_add_dependency_by_name_inverse(UNIT(s),
+ UNIT_WANTS, SPECIAL_SWAP_TARGET, NULL, true);
+ else
+ r = unit_add_two_dependencies_by_name_inverse(UNIT(s),
+ UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SWAP_TARGET, NULL, true);
if (r < 0)
return r;
}
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
index 6ebe8aa..b73dfa4 100644
--- a/src/fstab-generator/fstab-generator.c
+++ b/src/fstab-generator/fstab-generator.c
@@ -66,6 +66,7 @@ static int mount_find_pri(struct mntent *me, int *ret) {
static int add_swap(const char *what, struct mntent *me) {
_cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL;
_cleanup_fclose_ FILE *f = NULL;
+ bool noauto;
int r, pri = -1;
assert(what);
@@ -77,6 +78,8 @@ static int add_swap(const char *what, struct mntent *me) {
return pri;
}
+ noauto = !!hasmntopt(me, "noauto");
+
name = unit_name_from_path(what, ".swap");
if (!name)
return log_oom();
@@ -97,8 +100,7 @@ static int add_swap(const char *what, struct mntent *me) {
fprintf(f,
"# Automatically generated by systemd-fstab-generator\n\n"
"[Unit]\n"
- "SourcePath=/etc/fstab\n"
- "\n"
+ "SourcePath=/etc/fstab\n\n"
"[Swap]\n"
"What=%s\n",
what);
@@ -114,6 +116,18 @@ static int add_swap(const char *what, struct mntent *me) {
return -errno;
}
+ if (!noauto) {
+ lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL);
+ if (!lnk)
+ return log_oom();
+
+ mkdir_parents_label(lnk, 0755);
+ if (symlink(unit, lnk) < 0) {
+ log_error("Failed to create symlink %s: %m", lnk);
+ return -errno;
+ }
+ }
+
return 0;
}
--
1.8.1.4

View File

@ -0,0 +1,27 @@
From b857193b1def5172e3641ca1d5bc9e08ae81aac4 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:37:44 +0200
Subject: [PATCH 09/15] modules-load: fix error handling
---
src/modules-load/modules-load.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
index 7b19ee0..49ee420 100644
--- a/src/modules-load/modules-load.c
+++ b/src/modules-load/modules-load.c
@@ -302,8 +302,8 @@ int main(int argc, char *argv[]) {
STRV_FOREACH(i, arg_proc_cmdline_modules) {
k = load_module(ctx, *i);
- if (k < 0)
- r = EXIT_FAILURE;
+ if (k < 0 && r == 0)
+ r = k;
}
r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
--
1.8.4

View File

@ -0,0 +1,26 @@
From 62678deda2dcd43954bf02f783da01e48c7f8fce Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:38:09 +0200
Subject: [PATCH 10/15] efi: never call qsort on potentially NULL arrays
---
src/shared/efivars.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index 1d5b6f9..c015b16 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -384,7 +384,8 @@ int efi_get_boot_options(uint16_t **options) {
list[count ++] = id;
}
- qsort(list, count, sizeof(uint16_t), cmp_uint16);
+ if (list)
+ qsort(list, count, sizeof(uint16_t), cmp_uint16);
*options = list;
return count;
--
1.8.4

View File

@ -0,0 +1,27 @@
From 5b4fb02d890d5c9777e9a6e798e0b8922a8a9fd8 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:38:28 +0200
Subject: [PATCH 11/15] strv: don't access potentially NULL string arrays
---
src/shared/env-util.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/shared/env-util.c b/src/shared/env-util.c
index 5e29629..7976881 100644
--- a/src/shared/env-util.c
+++ b/src/shared/env-util.c
@@ -405,7 +405,9 @@ char **strv_env_clean_log(char **e, const char *message) {
e[k++] = *p;
}
- e[k] = NULL;
+ if (e)
+ e[k] = NULL;
+
return e;
}
--
1.8.4

View File

@ -0,0 +1,26 @@
From 69c2b6be8fc607412a13cd0ea03a629b4965c816 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 2 Oct 2013 19:38:52 +0200
Subject: [PATCH 12/15] mkdir: pass a proper function pointer to
mkdir_safe_internal
---
src/shared/mkdir.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shared/mkdir.c b/src/shared/mkdir.c
index b7e5c6e..43c6ea6 100644
--- a/src/shared/mkdir.c
+++ b/src/shared/mkdir.c
@@ -53,7 +53,7 @@ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkd
}
int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) {
- return mkdir_safe_internal(path, mode, uid, gid, false);
+ return mkdir_safe_internal(path, mode, uid, gid, mkdir);
}
static int is_dir(const char* path) {
--
1.8.4

View File

@ -0,0 +1,26 @@
From 7074fecf6747c9a6ad872cc87701481e8bece8b0 Mon Sep 17 00:00:00 2001
From: Dave Reisner <dreisner@archlinux.org>
Date: Wed, 2 Oct 2013 15:35:16 -0400
Subject: [PATCH 14/15] tmpfiles.d: include setgid perms for /run/log/journal
4608af4333d0f7f5 set permissions for journal storage on persistent disk
but not the volatile storage.
ref: https://bugs.archlinux.org/task/37170
---
tmpfiles.d/systemd.conf | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
index b630440..a05c657 100644
--- a/tmpfiles.d/systemd.conf
+++ b/tmpfiles.d/systemd.conf
@@ -26,3 +26,5 @@ F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
m /var/log/journal 2755 root systemd-journal - -
m /var/log/journal/%m 2755 root systemd-journal - -
+m /run/log/journal 2755 root systemd-journal - -
+m /run/log/journal/%m 2755 root systemd-journal - -
--
1.8.4

View File

@ -0,0 +1,10 @@
--- systemd-208/man/custom-man.xsl
+++ systemd-208/man/custom-man.xsl 2013-10-21 09:23:31.030735259 +0000
@@ -61,4 +61,7 @@
<xsl:text>"</xsl:text>
</xsl:template>
+<xsl:param name="man.output.in.separate.dir" select="1"></xsl:param>
+<xsl:param name="man.output.base.dir"></xsl:param>
+
</xsl:stylesheet>

View File

@ -0,0 +1,13 @@
|
| Belongs to bnc#849071 that is do not install console-shell.service
| in any system target as this will cause automatic poweroff at boot.
|
--- systemd-208/units/console-shell.service.m4.in
+++ systemd-208/units/console-shell.service.m4.in 2013-11-06 09:35:37.958693570 +0000
@@ -26,6 +26,3 @@ StandardError=inherit
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
-
-[Install]
-WantedBy=getty.target

View File

@ -0,0 +1,62 @@
From: Werner Fink <werner@suse.de>
Date: Thu, 21 Nov 2013 11:50:32 +0000
Subject: [PATCH] Avoid busy systemd-journald
Avoid a busy systemd-journald due polling a broken /dec/kmsg in lxc
environments.
---
journald-kmsg.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
Index: systemd-208/src/journal/journald-kmsg.c
===================================================================
--- systemd-208/src/journal/journald-kmsg.c
+++ systemd-208/src/journal/journald-kmsg.c 2013-12-20 11:34:39.762236175 +0000
@@ -377,15 +377,18 @@ int server_flush_dev_kmsg(Server *s) {
int server_open_dev_kmsg(Server *s) {
struct epoll_event ev;
+ int r;
assert(s);
s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
if (s->dev_kmsg_fd < 0) {
- log_warning("Failed to open /dev/kmsg, ignoring: %m");
+ log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
+ "Failed to open /dev/kmsg, ignoring: %m");
return 0;
}
+ r = 0;
zero(ev);
ev.events = EPOLLIN;
ev.data.fd = s->dev_kmsg_fd;
@@ -394,15 +397,24 @@ int server_open_dev_kmsg(Server *s) {
/* This will fail with EPERM on older kernels where
* /dev/kmsg is not readable. */
if (errno == EPERM)
- return 0;
+ goto fail;
log_error("Failed to add /dev/kmsg fd to epoll object: %m");
- return -errno;
+ r = -errno;
+ goto fail;
}
s->dev_kmsg_readable = true;
return 0;
+
+fail:
+ if (s->dev_kmsg_fd >= 0) {
+ close_nointr_nofail(s->dev_kmsg_fd);
+ s->dev_kmsg_fd = -1;
+ }
+
+ return r;
}
int server_open_kernel_seqnum(Server *s) {

View File

@ -0,0 +1,168 @@
Based on upstream baae0358f349870544884e405e82e4be7d8add9f
| From: Lennart Poettering <lennart@poettering.net>
| Date: Tue, 26 Nov 2013 04:05:00 +0000
| Subject: pam_systemd: do not set XDG_RUNTIME_DIR if the session's original user is not the same as the newly logged in one
| It's better not to set any XDG_RUNTIME_DIR at all rather than one of a
| different user. So let's do this.
--- systemd-208/src/login/logind-dbus.c
+++ systemd-208/src/login/logind-dbus.c 2013-11-26 13:37:05.730735774 +0000
@@ -523,6 +523,7 @@ static int bus_manager_create_session(Ma
DBUS_TYPE_OBJECT_PATH, &path,
DBUS_TYPE_STRING, &session->user->runtime_path,
DBUS_TYPE_UNIX_FD, &fifo_fd,
+ DBUS_TYPE_UINT32, &session->user->uid,
DBUS_TYPE_STRING, &cseat,
DBUS_TYPE_UINT32, &vtnr,
DBUS_TYPE_BOOLEAN, &exists,
--- systemd-208/src/login/logind-session-dbus.c
+++ systemd-208/src/login/logind-session-dbus.c 2013-11-26 13:36:07.478236401 +0000
@@ -755,6 +755,7 @@ int session_send_create_reply(Session *s
DBUS_TYPE_OBJECT_PATH, &path,
DBUS_TYPE_STRING, &s->user->runtime_path,
DBUS_TYPE_UNIX_FD, &fifo_fd,
+ DBUS_TYPE_UINT32, &s->user->uid,
DBUS_TYPE_STRING, &cseat,
DBUS_TYPE_UINT32, &vtnr,
DBUS_TYPE_BOOLEAN, &exists,
--- systemd-208/src/login/pam-module.c
+++ systemd-208/src/login/pam-module.c 2013-11-26 14:32:20.194235777 +0000
@@ -93,24 +93,18 @@ static int get_user_data(
assert(ret_username);
assert(ret_pw);
- r = audit_loginuid_from_pid(0, &uid);
- if (r >= 0)
- pw = pam_modutil_getpwuid(handle, uid);
- else {
- r = pam_get_user(handle, &username, NULL);
- if (r != PAM_SUCCESS) {
- pam_syslog(handle, LOG_ERR, "Failed to get user name.");
- return r;
- }
-
- if (isempty(username)) {
- pam_syslog(handle, LOG_ERR, "User name not valid.");
- return PAM_AUTH_ERR;
- }
+ r = pam_get_user(handle, &username, NULL);
+ if (r != PAM_SUCCESS) {
+ pam_syslog(handle, LOG_ERR, "Failed to get user name.");
+ return r;
+ }
- pw = pam_modutil_getpwnam(handle, username);
+ if (isempty(username)) {
+ pam_syslog(handle, LOG_ERR, "User name not valid.");
+ return PAM_AUTH_ERR;
}
+ pw = pam_modutil_getpwnam(handle, username);
if (!pw) {
pam_syslog(handle, LOG_ERR, "Failed to get user data.");
return PAM_USER_UNKNOWN;
@@ -123,16 +117,14 @@ static int get_user_data(
}
static int get_seat_from_display(const char *display, const char **seat, uint32_t *vtnr) {
- _cleanup_free_ char *p = NULL;
- int r;
- _cleanup_close_ int fd = -1;
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
};
+ _cleanup_free_ char *p = NULL, *tty = NULL;
+ _cleanup_close_ int fd = -1;
struct ucred ucred;
socklen_t l;
- _cleanup_free_ char *tty = NULL;
- int v;
+ int v, r;
assert(display);
assert(vtnr);
@@ -194,13 +186,12 @@ _public_ PAM_EXTERN int pam_sm_open_sess
dbus_bool_t remote, existing;
int r;
uint32_t vtnr = 0;
+ uid_t original_uid;
assert(handle);
dbus_error_init(&error);
- /* pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); */
-
/* Make this a NOP on non-logind systems */
if (!logind_running())
return PAM_SUCCESS;
@@ -213,6 +204,9 @@ _public_ PAM_EXTERN int pam_sm_open_sess
goto finish;
}
+ if (debug)
+ pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
+
r = get_user_data(handle, &username, &pw);
if (r != PAM_SUCCESS)
goto finish;
@@ -374,7 +368,11 @@ _public_ PAM_EXTERN int pam_sm_open_sess
if (debug)
pam_syslog(handle, LOG_DEBUG, "Asking logind to create session: "
"uid=%u pid=%u service=%s type=%s class=%s seat=%s vtnr=%u tty=%s display=%s remote=%s remote_user=%s remote_host=%s",
- uid, pid, service, type, class, seat, vtnr, tty, display, yes_no(remote), remote_user, remote_host);
+ pw->pw_uid, pid,
+ strempty(service),
+ type, class,
+ seat, vtnr, tty, display,
+ yes_no(remote), remote_user, remote_host);
reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error);
if (!reply) {
@@ -388,6 +386,7 @@ _public_ PAM_EXTERN int pam_sm_open_sess
DBUS_TYPE_OBJECT_PATH, &object_path,
DBUS_TYPE_STRING, &runtime_path,
DBUS_TYPE_UNIX_FD, &session_fd,
+ DBUS_TYPE_UINT32, &original_uid,
DBUS_TYPE_STRING, &seat,
DBUS_TYPE_UINT32, &vtnr,
DBUS_TYPE_BOOLEAN, &existing,
@@ -399,8 +398,8 @@ _public_ PAM_EXTERN int pam_sm_open_sess
if (debug)
pam_syslog(handle, LOG_DEBUG, "Reply from logind: "
- "id=%s object_path=%s runtime_path=%s session_fd=%d seat=%s vtnr=%u",
- id, object_path, runtime_path, session_fd, seat, vtnr);
+ "id=%s object_path=%s runtime_path=%s session_fd=%d seat=%s vtnr=%u original_uid=%u",
+ id, object_path, runtime_path, session_fd, seat, vtnr, original_uid);
r = pam_misc_setenv(handle, "XDG_SESSION_ID", id, 0);
if (r != PAM_SUCCESS) {
@@ -408,10 +407,24 @@ _public_ PAM_EXTERN int pam_sm_open_sess
goto finish;
}
- r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0);
- if (r != PAM_SUCCESS) {
- pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
- goto finish;
+ if (original_uid == pw->pw_uid) {
+ /* Don't set $XDG_RUNTIME_DIR if the user we now
+ * authenticated for does not match the original user
+ * of the session. We do this in order not to result
+ * in privileged apps clobbering the runtime directory
+ * unnecessarily. */
+
+ r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0);
+ if (r != PAM_SUCCESS) {
+ pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
+ goto finish;
+ }
+ } else if (getenv("XDG_RUNTIME_DIR")) {
+ r = pam_putenv(handle, "XDG_RUNTIME_DIR");
+ if (r != PAM_SUCCESS && r != PAM_BAD_ITEM) {
+ pam_syslog(handle, LOG_ERR, "Failed to unset runtime dir.");
+ }
+ (void) unsetenv("XDG_RUNTIME_DIR");
}
if (!isempty(seat)) {

View File

@ -0,0 +1,52 @@
--- systemd-208/src/journal/journald-server.c
+++ systemd-208/src/journal/journald-server.c 2013-12-10 16:31:50.770235717 +0000
@@ -21,6 +21,7 @@
#include <sys/signalfd.h>
#include <sys/ioctl.h>
+#include <linux/fs.h>
#include <linux/sockios.h>
#include <sys/statvfs.h>
#include <sys/mman.h>
@@ -878,7 +879,7 @@ finish:
static int system_journal_open(Server *s) {
- int r;
+ int r, fd;
char *fn;
sd_id128_t machine;
char ids[33];
@@ -905,7 +906,31 @@ static int system_journal_open(Server *s
(void) mkdir("/var/log/journal/", 0755);
fn = strappenda("/var/log/journal/", ids);
- (void) mkdir(fn, 0755);
+ (void)mkdir(fn, 0755);
+
+ /*
+ * 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");
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

@ -0,0 +1,90 @@
--- systemd-208/units/sigpwr.target
+++ systemd-208/units/sigpwr.target 2014-01-14 15:53:32.878735762 +0000
@@ -8,3 +8,5 @@
[Unit]
Description=Power Failure
Documentation=man:systemd.special(7)
+BindsTo=powerfail.service
+DefaultDependencies=no
+RefuseManualStart=yes
--- systemd-208/units/powerfail.service
+++ systemd-208/units/powerfail.service 2014-01-14 16:11:41.802235712 +0000
@@ -0,0 +1,21 @@
+# This file is part of systemd.
+#
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Germany.
+# Author: Werner Fink
+# Please send feedback to http://www.suse.de/feedback
+#
+# Description:
+#
+# Used to start the systemd-powerfail.service
+#
+
+[Unit]
+Description=powerfail handling
+BindsTo=sigpwr.target
+DefaultDependencies=no
+RefuseManualStart=yes
+
+[Service]
+Type=oneshot
+ExecStart=/usr/lib/systemd/systemd-powerfail
+RemainAfterExit=false
--- systemd-208/man/systemd-powerfail.service.8
+++ systemd-208/man/systemd-powerfail.service.8 2014-01-14 18:22:21.286735810 +0000
@@ -0,0 +1,54 @@
+'\" t
+.TH "SYSTEMD\-POWERFAIL\&.SERVICE" "8" "" "systemd 208" "systemd-powerfail.service"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+systemd-powerfail.service, systemd-powerfail \- Power Fail signal handling
+.SH "SYNOPSIS"
+.PP
+systemd\-powerfail\&.service
+.PP
+/usr/lib/systemd/systemd\-powerfail
+.SH "DESCRIPTION"
+.PP
+systemd\-powerfail
+is a system service that is used to evaulate the content of
+\fI/var/run/powerstatus\fR. Based on the content of this
+file:
+.IP F(AIL)
+Power is failing, UPS is providing the power. The
+systemd\-powerfail
+is now doing a timed shutdown.
+.IP O(K)
+The power has been restored, and pending shutdown
+will be cancled.
+.IP L(OW)
+The power is failing and the UPS has a low battery.
+The
+systemd\-powerfail
+is doing an immediate shutdown.
+.PP
+If \fI/var/run/powerstatus\fR doesn't exist or contains anything else then the letters
+F, O or L, systemd\-powerfail will behave as if it has read the letter F.
+.PP
+.SH "SEE ALSO"
+.PP
+\fBshutdown\fR(8),
+\fBpowerd\fR(8)

View File

@ -0,0 +1,20 @@
For bnc#818044
Based on http://cgit.freedesktop.org/systemd/systemd/patch/?id=67d6621059085963a2a908a3ea99ced3b0ca789e
---
systemctl.c | 5 +++++
1 file changed, 5 insertions(+)
--- systemd-208/src/systemctl/systemctl.c
+++ systemd-208/src/systemctl/systemctl.c 2014-01-21 13:00:52.910736187 +0000
@@ -4453,6 +4453,11 @@ static int enable_unit(DBusConnection *b
if (r < 0)
return r;
+ /* If the operation was fully executed by the SysV compat,
+ * let's finish early */
+ if (strv_isempty(mangled_names))
+ return 0;
+
if (!bus || avoid_bus()) {
if (streq(verb, "enable")) {
r = unit_file_enable(arg_scope, arg_runtime, arg_root, mangled_names, arg_force, &changes, &n_changes);

View File

@ -0,0 +1,51 @@
--- systemd-208/src/core/service.c
+++ systemd-208/src/core/service.c 2014-01-17 12:15:52.527311588 +0000
@@ -380,6 +380,8 @@ static int sysv_translate_facility(const
"remote_fs", SPECIAL_REMOTE_FS_TARGET,
"syslog", NULL,
"time", SPECIAL_TIME_SYNC_TARGET,
+ "all", SPECIAL_DEFAULT_TARGET,
+ "null", NULL,
};
unsigned i;
@@ -389,7 +391,7 @@ static int sysv_translate_facility(const
assert(name);
assert(_r);
- n = *name == '$' ? name + 1 : name;
+ n = (*name == '$' || *name == '+') ? name + 1 : name;
for (i = 0; i < ELEMENTSOF(table); i += 2) {
@@ -816,10 +818,13 @@ static int service_load_sysv_path(Servic
startswith_no_case(t, "Should-Start:") ||
startswith_no_case(t, "X-Start-Before:") ||
startswith_no_case(t, "X-Start-After:")) {
+ UnitDependency d, e;
char *i, *w;
size_t z;
state = LSB;
+ d = startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER;
+ e = startswith_no_case(t, "Required-Start:") ? UNIT_REQUIRES_OVERRIDABLE : UNIT_WANTS;
FOREACH_WORD_QUOTED(w, z, strchr(t, ':')+1, i) {
char *n, *m;
@@ -838,12 +843,15 @@ static int service_load_sysv_path(Servic
continue;
}
+ if (*n == '+')
+ e = UNIT_WANTS;
+
free(n);
if (r == 0)
continue;
- r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true);
+ r = unit_add_two_dependencies_by_name(u, d, e, m, NULL, true);
if (r < 0)
log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s",

View File

@ -0,0 +1,236 @@
--- systemd-208/shell-completion/bash/hostnamectl
+++ systemd-208/shell-completion/bash/hostnamectl 2014-01-17 14:27:16.183272019 +0000
@@ -30,6 +30,10 @@ _hostnamectl() {
local OPTS='-h --help --version --transient --static --pretty
--no-ask-password -H --host'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if [[ $cur = -* ]]; then
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
return 0
@@ -58,4 +62,4 @@ _hostnamectl() {
return 0
}
-complete -F _hostnamectl hostnamectl
+complete -o default -o bashdefault -F _hostnamectl hostnamectl
--- systemd-208/shell-completion/bash/journalctl
+++ systemd-208/shell-completion/bash/journalctl 2014-01-17 14:34:30.338737694 +0000
@@ -49,6 +49,10 @@ _journalctl() {
--verify-key'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then
case $prev in
--boot|--this-boot|-b)
@@ -107,4 +111,4 @@ _journalctl() {
fi
}
-complete -F _journalctl journalctl
+complete -o default -o bashdefault -F _journalctl journalctl
--- systemd-208/shell-completion/bash/kernel-install
+++ systemd-208/shell-completion/bash/kernel-install 2014-01-17 14:34:41.982255874 +0000
@@ -18,11 +18,22 @@
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
+__contains_word () {
+ local w word=$1; shift
+ for w in "$@"; do
+ [[ $w = "$word" ]] && return
+ done
+}
+
_kernel_install() {
local comps
local MACHINE_ID
local cur=${COMP_WORDS[COMP_CWORD]}
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
case $COMP_CWORD in
1)
comps="add remove"
@@ -47,4 +58,4 @@ _kernel_install() {
return 0
}
-complete -F _kernel_install kernel-install
+complete -o default -o bashdefault -F _kernel_install kernel-install
--- systemd-208/shell-completion/bash/localectl
+++ systemd-208/shell-completion/bash/localectl 2014-01-17 14:34:52.546235747 +0000
@@ -30,6 +30,10 @@ _localectl() {
local OPTS='-h --help --version --no-convert --no-pager --no-ask-password
-H --host'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if __contains_word "$prev" $OPTS; then
case $prev in
--host|-H)
@@ -73,4 +77,4 @@ _localectl() {
return 0
}
-complete -F _localectl localectl
+complete -o default -o bashdefault -F _localectl localectl
--- systemd-208/shell-completion/bash/loginctl
+++ systemd-208/shell-completion/bash/loginctl 2014-01-17 14:35:03.386245699 +0000
@@ -37,6 +37,10 @@ _loginctl () {
[ARG]='--host -H --kill-who --property -p --signal -s'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if __contains_word "$prev" ${OPTS[ARG]}; then
case $prev in
--signal|-s)
@@ -106,4 +110,4 @@ _loginctl () {
return 0
}
-complete -F _loginctl loginctl
+complete -o default -o bashdefault -F _loginctl loginctl
--- systemd-208/shell-completion/bash/systemctl
+++ systemd-208/shell-completion/bash/systemctl 2014-01-17 14:35:26.506235666 +0000
@@ -77,6 +77,10 @@ _systemctl () {
[ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --state --root'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if __contains_word "--user" ${COMP_WORDS[*]}; then
mode=--user
else
@@ -226,4 +230,4 @@ _systemctl () {
return 0
}
-complete -F _systemctl systemctl
+complete -o default -o bashdefault -F _systemctl systemctl
--- systemd-208/shell-completion/bash/systemd-analyze
+++ systemd-208/shell-completion/bash/systemd-analyze 2014-01-17 14:35:38.366736021 +0000
@@ -37,6 +37,10 @@ _systemd_analyze() {
[LOG_LEVEL]='set-log-level'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
_init_completion || return
for ((i=0; $i <= $COMP_CWORD; i++)); do
@@ -83,4 +87,4 @@ _systemd_analyze() {
return 0
}
-complete -F _systemd_analyze systemd-analyze
+complete -o default -o bashdefault -F _systemd_analyze systemd-analyze
--- systemd-208/shell-completion/bash/systemd-coredumpctl
+++ systemd-208/shell-completion/bash/systemd-coredumpctl 2014-01-17 14:35:46.434235632 +0000
@@ -44,6 +44,10 @@ _coredumpctl() {
[DUMP]='dump gdb'
)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if __contains_word "$prev" '--output -o'; then
comps=$( compgen -A file -- "$cur" )
compopt -o filenames
@@ -82,4 +86,4 @@ _coredumpctl() {
return 0
}
-complete -F _coredumpctl systemd-coredumpctl
+complete -o default -o bashdefault -F _coredumpctl systemd-coredumpctl
--- systemd-208/shell-completion/bash/systemd-run
+++ systemd-208/shell-completion/bash/systemd-run 2014-01-17 14:35:55.938236298 +0000
@@ -17,6 +17,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
+__contains_word () {
+ local w word=$1; shift
+ for w in "$@"; do
+ [[ $w = "$word" ]] && return
+ done
+}
+
__systemctl() {
local mode=$1; shift 1
systemctl $mode --full --no-legend "$@"
@@ -31,6 +38,11 @@ _systemd_run() {
local mode=--system
local i
+
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
for (( i=1; i <= COMP_CWORD; i++ )); do
if [[ ${COMP_WORDS[i]} != -* ]]; then
local root_command=${COMP_WORDS[i]}
@@ -60,4 +72,4 @@ _systemd_run() {
return 0
}
-complete -F _systemd_run systemd-run
+complete -o default -o bashdefault -F _systemd_run systemd-run
--- systemd-208/shell-completion/bash/timedatectl
+++ systemd-208/shell-completion/bash/timedatectl 2014-01-17 14:36:06.182735466 +0000
@@ -30,6 +30,10 @@ _timedatectl() {
local OPTS='-h --help --version --adjust-system-clock --no-pager
--no-ask-password -H --host'
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
if __contains_word "$prev" $OPTS; then
case $prev in
--host|-H)
@@ -73,4 +77,4 @@ _timedatectl() {
return 0
}
-complete -F _timedatectl timedatectl
+complete -o default -o bashdefault -F _timedatectl timedatectl
--- systemd-208/shell-completion/bash/udevadm
+++ systemd-208/shell-completion/bash/udevadm 2014-01-17 14:36:16.406236120 +0000
@@ -36,6 +36,10 @@ _udevadm() {
local verbs=(info trigger settle control monitor hwdb test-builtin test)
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
+ return 0
+ fi
+
for ((i=0; i <= COMP_CWORD; i++)); do
if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}" &&
! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
@@ -94,4 +98,4 @@ _udevadm() {
return 0
}
-complete -F _udevadm udevadm
+complete -o default -o bashdefault -F _udevadm udevadm

View File

@ -10,8 +10,10 @@ Conflicts:
src/core/service.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 46 insertions(+), 5 deletions(-)
--- systemd-206.orig/src/core/service.c
+++ systemd-206/src/core/service.c
Index: systemd-208/src/core/service.c
===================================================================
--- systemd-208.orig/src/core/service.c
+++ systemd-208/src/core/service.c
@@ -51,7 +51,8 @@
typedef enum RunlevelType {
@ -53,7 +55,7 @@ Conflicts:
#endif
static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
@@ -334,6 +347,9 @@ static char *sysv_translate_name(const c
@@ -340,6 +353,9 @@ static char *sysv_translate_name(const c
if (endswith(name, ".sh"))
/* Drop .sh suffix */
strcpy(stpcpy(r, name) - 3, ".service");
@ -63,7 +65,7 @@ Conflicts:
else
/* Normal init script name */
strcpy(stpcpy(r, name), ".service");
@@ -936,6 +952,13 @@ static int service_load_sysv_path(Servic
@@ -942,6 +958,13 @@ static int service_load_sysv_path(Servic
if ((r = sysv_exec_commands(s, supports_reload)) < 0)
goto finish;
@ -77,7 +79,7 @@ Conflicts:
if (s->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, s->sysv_runlevels)) {
/* If there a runlevels configured for this service
@@ -1017,6 +1040,9 @@ static int service_load_sysv_name(Servic
@@ -1023,6 +1046,9 @@ static int service_load_sysv_name(Servic
if (endswith(name, ".sh.service"))
return -ENOENT;
@ -87,7 +89,7 @@ Conflicts:
STRV_FOREACH(p, UNIT(s)->manager->lookup_paths.sysvinit_path) {
char *path;
int r;
@@ -1037,6 +1063,18 @@ static int service_load_sysv_name(Servic
@@ -1043,6 +1069,18 @@ static int service_load_sysv_name(Servic
}
free(path);
@ -106,7 +108,7 @@ Conflicts:
if (r < 0)
return r;
@@ -3587,7 +3625,7 @@ static int service_enumerate(Manager *m)
@@ -3574,7 +3612,7 @@ static int service_enumerate(Manager *m)
if (de->d_name[0] == 'S') {
@ -115,7 +117,7 @@ Conflicts:
SERVICE(service)->sysv_start_priority_from_rcnd =
MAX(a*10 + b, SERVICE(service)->sysv_start_priority_from_rcnd);
@@ -3604,7 +3642,8 @@ static int service_enumerate(Manager *m)
@@ -3591,7 +3629,8 @@ static int service_enumerate(Manager *m)
goto finish;
} else if (de->d_name[0] == 'K' &&
@ -125,7 +127,7 @@ Conflicts:
r = set_ensure_allocated(&shutdown_services,
trivial_hash_func, trivial_compare_func);
@@ -3644,7 +3683,9 @@ static int service_enumerate(Manager *m)
@@ -3631,7 +3670,9 @@ static int service_enumerate(Manager *m)
* runlevels we assume the stop jobs will be implicitly added
* by the core logic. Also, we don't really distinguish here
* between the runlevels 0 and 6 and just add them to the

View File

@ -0,0 +1,26 @@
From 3fdb2494c1e24c0a020f5b54022d2c751fd26f50 Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrmann@gmail.com>
Date: Thu, 28 Nov 2013 09:52:18 +0000
Subject: login: revert lazy session-activation on non-VT seats
Existing applications like gdm already depend on new sessions to get
immediately activated on seats without VTs. Fixes a bug reported as:
[systemd-devel] systemd 208:trouble with inactive user sessions at non-seat0 seats
This patch restores the original behavior. We either need to add a new
flag for session-creation or some other heuristic to avoid activating new
sessions in the future.
---
--- a/src/login/logind-seat.c 2013-11-28 11:30:49.624623090 -0200
+++ b/src/login/logind-seat.c 2013-11-28 11:31:46.668792391 -0200
@@ -420,8 +420,8 @@
seat_send_changed(s, "Sessions\0");
/* On seats with VTs, the VT logic defines which session is active. On
- * seats without VTs, we automatically activate the first session. */
- if (!seat_has_vts(s) && !s->active)
+ * seats without VTs, we automatically activate new sessions. */
+ if (!seat_has_vts(s))
seat_set_active(s, session);
return 0;

18
after-local.service Normal file
View File

@ -0,0 +1,18 @@
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/etc/init.d/after.local
After=getty.target
[Service]
Type=idle
ExecStart=/etc/init.d/after.local
TimeoutSec=0
RemainAfterExit=yes
SysVStartPriority=99

View File

@ -0,0 +1,35 @@
From da6de8a55784115451582051c8da620056994a05 Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
Date: Mon, 20 Jan 2014 11:05:22 +0100
Subject: [PATCH] analyze: fix crash in command line parsing
Ensure DBusError is set before it can possibly be freed on return.
Fix crash when calling set-log-level without any parameter.
Fix https://bugzilla.novell.com/show_bug.cgi?id=859365
---
src/analyze/systemd-analyze.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
index 27d063c..cdfae93 100644
--- a/src/analyze/systemd-analyze.c
+++ b/src/analyze/systemd-analyze.c
@@ -1226,13 +1226,13 @@ static int set_log_level(DBusConnection *bus, char **args) {
assert(bus);
assert(args);
+ dbus_error_init(&error);
if (strv_length(args) != 1) {
log_error("This command expects one argument only.");
return -E2BIG;
}
value = args[0];
- dbus_error_init(&error);
m = dbus_message_new_method_call("org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
--
1.8.4

View File

@ -7,34 +7,29 @@ set ACL on nvidia devices (bnc#808319).
src/login/logind-acl.c | 3 +++
1 file changed, 3 insertions(+)
--- systemd-206.orig/src/login/logind-acl.c
+++ systemd-206/src/login/logind-acl.c
@@ -24,6 +24,7 @@
#include <acl/libacl.h>
#include <errno.h>
#include <string.h>
+#include <strv.h>
#include "logind-acl.h"
#include "util.h"
@@ -287,6 +288,22 @@ int devnode_acl_all(struct udev *udev,
Index: systemd-208/src/login/logind-acl.c
===================================================================
--- systemd-208.orig/src/login/logind-acl.c
+++ systemd-208/src/login/logind-acl.c
@@ -287,6 +287,22 @@ int devnode_acl_all(struct udev *udev,
r = devnode_acl(n, flush, del, old_uid, add, new_uid);
}
+ /* only search for nvidia* if /dev/nvidiactl exists */
+ if (!devnode_acl("/dev/nvidiactl", flush, del, old_uid, add, new_uid)) {
+ char** directory;
+ char **f, *resolved;
+ /* only apply ACL on nvidia* if /dev/nvidiactl exists */
+ if (devnode_acl("/dev/nvidiactl", flush, del, old_uid, add, new_uid) >= 0) {
+ int i;
+ char *devname;
+
+ if (get_files_in_directory ("/dev", &directory)) {
+ STRV_FOREACH(f,directory)
+ if (startswith(*f,"nvidia")) {
+ resolved = strjoin("/dev/", *f, NULL);
+ devnode_acl(resolved, flush, del, old_uid, add, new_uid);
+ free(resolved);
+ for (i = 0; i <= 256 ; i++) {
+ if (asprintf(&devname, "/dev/nvidia%d", i) < 0)
+ break;
+ if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0) {
+ free(devname);
+ break;
+ }
+ free(devname);
+ }
+ strv_free(directory);
+ }
+
finish:

View File

@ -0,0 +1,60 @@
From bd441fa27a22b7c6e11d9330560e0622fb69f297 Mon Sep 17 00:00:00 2001
From: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Date: Thu, 28 Nov 2013 17:07:29 +0000
Subject: build-sys: make multi-seat-x optional
At some point it should become disabled by default.
http://lists.freedesktop.org/archives/systemd-devel/2013-November/014869.html
---
diff --git a/Makefile.am b/Makefile.am
index 90874df..3598edd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4141,6 +4141,8 @@ MULTI_USER_TARGET_WANTS += \
SYSTEM_UNIT_ALIASES += \
systemd-logind.service dbus-org.freedesktop.login1.service
+if ENABLE_MULTI_SEAT_X
+
systemd_multi_seat_x_SOURCES = \
src/login/multi-seat-x.c
@@ -4151,6 +4153,8 @@ systemd_multi_seat_x_LDADD = \
rootlibexec_PROGRAMS += \
systemd-multi-seat-x
+endif
+
dist_udevrules_DATA += \
src/login/70-uaccess.rules \
src/login/70-power-switch.rules
diff --git a/configure.ac b/configure.ac
index f1b00c5..ab24266 100644
--- a/configure.ac
+++ b/configure.ac
@@ -794,6 +794,14 @@ fi
AM_CONDITIONAL(ENABLE_EFI, [test "x$have_efi" = "xyes"])
# ------------------------------------------------------------------------------
+have_multi_seat_x=no
+AC_ARG_ENABLE(multi_seat_x, AS_HELP_STRING([--disable-multi-seat-x], [do not build multi-seat-x]))
+if test "x$enable_multi_seat_x" != "xno"; then
+ have_multi_seat_x=yes
+fi
+AM_CONDITIONAL(ENABLE_MULTI_SEAT_X, [test "$have_multi_seat_x" = "yes"])
+
+# ------------------------------------------------------------------------------
AC_ARG_WITH(rc-local-script-path-start,
AS_HELP_STRING([--with-rc-local-script-path-start=PATH],
[Path to /etc/rc.local]),
@@ -1077,6 +1085,7 @@ AC_MSG_RESULT([
nss-myhostname: ${have_myhostname}
gudev: ${enable_gudev}
gintrospection: ${enable_introspection}
+ multi-seat-x: ${have_multi_seat_x}
Python: ${have_python}
Python Headers: ${have_python_devel}
man pages: ${have_manpages}
--
cgit v0.9.0.2-2-gbebe

View File

@ -7,18 +7,22 @@ Subject: delay fsck / cryptsetup after md / dmraid are started
units/systemd-fsck@.service.in | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
--- systemd-206_git201308300826.orig/src/cryptsetup/cryptsetup-generator.c
+++ systemd-206_git201308300826/src/cryptsetup/cryptsetup-generator.c
@@ -160,6 +160,7 @@ static int create_disk(
"Conflicts=umount.target\n"
Index: systemd-208/src/cryptsetup/cryptsetup-generator.c
===================================================================
--- systemd-208.orig/src/cryptsetup/cryptsetup-generator.c
+++ systemd-208/src/cryptsetup/cryptsetup-generator.c
@@ -119,6 +119,7 @@ static int create_disk(
"DefaultDependencies=no\n"
"BindsTo=dev-mapper-%i.device\n"
"IgnoreOnIsolate=true\n"
+ "After=md.service dmraid.service\n"
"After=systemd-readahead-collect.service systemd-readahead-replay.service\n",
f);
--- systemd-206_git201308300826.orig/units/systemd-fsck@.service.in
+++ systemd-206_git201308300826/units/systemd-fsck@.service.in
Index: systemd-208/units/systemd-fsck@.service.in
===================================================================
--- systemd-208.orig/units/systemd-fsck@.service.in
+++ systemd-208/units/systemd-fsck@.service.in
@@ -10,7 +10,7 @@ Description=File System Check on %f
Documentation=man:systemd-fsck@.service(8)
DefaultDependencies=no

View File

@ -7,11 +7,13 @@ Subject: handle SYSTEMCTL_OPTIONS environment variable
src/systemctl/systemctl.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
--- systemd-206.orig/src/systemctl/systemctl.c
+++ systemd-206/src/systemctl/systemctl.c
@@ -6197,6 +6197,28 @@ int main(int argc, char*argv[]) {
log_parse_environment();
log_open();
Index: systemd-208/src/systemctl/systemctl.c
===================================================================
--- systemd-208.orig/src/systemctl/systemctl.c
+++ systemd-208/src/systemctl/systemctl.c
@@ -6115,6 +6115,28 @@ int main(int argc, char*argv[]) {
* ellipsized. */
original_stdout_is_tty = isatty(STDOUT_FILENO);
+ if (secure_getenv("SYSTEMCTL_OPTIONS") &&
+ (!program_invocation_short_name ||

View File

@ -7,10 +7,12 @@ handle ROOT_USES_LANG=ctype (bnc#792182).
src/core/locale-setup.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
--- systemd-206_git201308300826.orig/src/core/locale-setup.c
+++ systemd-206_git201308300826/src/core/locale-setup.c
@@ -72,6 +72,11 @@ int locale_setup(char ***environment) {
char **env;
Index: systemd-208/src/core/locale-setup.c
===================================================================
--- systemd-208.orig/src/core/locale-setup.c
+++ systemd-208/src/core/locale-setup.c
@@ -73,6 +73,11 @@ int locale_setup(char ***environment) {
char **add;
char *variables[_VARIABLE_MAX] = {};
int r = 0, i;
+#ifdef HAVE_SYSV_COMPAT
@ -21,12 +23,12 @@ handle ROOT_USES_LANG=ctype (bnc#792182).
if (detect_container(NULL) <= 0) {
r = parse_env_file("/proc/cmdline", WHITESPACE,
@@ -118,6 +123,27 @@ int locale_setup(char ***environment) {
@@ -119,6 +124,27 @@ int locale_setup(char ***environment) {
if (r < 0 && r != -ENOENT)
log_warning("Failed to read /etc/locale.conf: %s", strerror(-r));
}
+#ifdef HAVE_SYSV_COMPAT
+ if (r <= 0 &&
+ if (r <= 0 &&
+ (r = parse_env_file("/etc/sysconfig/language", NEWLINE,
+ "ROOT_USES_LANG", &root_uses_lang,
+ "RC_LANG", &variables[VARIABLE_LANG],
@ -47,5 +49,5 @@ handle ROOT_USES_LANG=ctype (bnc#792182).
+
+#endif
add = NULL;
for (i = 0; i < _VARIABLE_MAX; i++) {
if (!variables[i])

View File

@ -13,9 +13,11 @@ systemd unit drop-in files to add dependencies
create mode 100644 src/insserv-generator/Makefile
create mode 100644 src/insserv-generator/insserv-generator.c
--- systemd-206_git201308300826.orig/Makefile.am
+++ systemd-206_git201308300826/Makefile.am
@@ -321,6 +321,7 @@ rootlibexec_PROGRAMS = \
Index: systemd-208/Makefile.am
===================================================================
--- systemd-208.orig/Makefile.am
+++ systemd-208/Makefile.am
@@ -322,6 +322,7 @@ rootlibexec_PROGRAMS = \
systemd-sleep
systemgenerator_PROGRAMS = \
@ -23,7 +25,7 @@ systemd unit drop-in files to add dependencies
systemd-getty-generator \
systemd-fstab-generator \
systemd-system-update-generator
@@ -1655,6 +1656,14 @@ systemd_delta_LDADD = \
@@ -1682,6 +1683,14 @@ systemd_delta_LDADD = \
libsystemd-shared.la
# ------------------------------------------------------------------------------
@ -38,8 +40,10 @@ systemd unit drop-in files to add dependencies
systemd_getty_generator_SOURCES = \
src/getty-generator/getty-generator.c
Index: systemd-208/src/insserv-generator/Makefile
===================================================================
--- /dev/null
+++ systemd-206_git201308300826/src/insserv-generator/Makefile
+++ systemd-208/src/insserv-generator/Makefile
@@ -0,0 +1,28 @@
+# This file is part of systemd.
+#
@ -69,9 +73,11 @@ systemd unit drop-in files to add dependencies
+ $(MAKE) -C .. clean
+
+.PHONY: all clean
Index: systemd-208/src/insserv-generator/insserv-generator.c
===================================================================
--- /dev/null
+++ systemd-206_git201308300826/src/insserv-generator/insserv-generator.c
@@ -0,0 +1,309 @@
+++ systemd-208/src/insserv-generator/insserv-generator.c
@@ -0,0 +1,312 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
@ -119,6 +125,9 @@ systemd unit drop-in files to add dependencies
+ if (endswith(name, ".sh"))
+ /* Drop .sh suffix */
+ strcpy(stpcpy(r, name) - 3, ".service");
+ if (startswith(name, "boot."))
+ /* Drop SuSE-style boot. prefix */
+ strcpy(stpcpy(r, name + 5), ".service");
+ else
+ /* Normal init script name */
+ strcpy(stpcpy(r, name), ".service");
@ -227,7 +236,7 @@ systemd unit drop-in files to add dependencies
+ /* we ignore <interactive>, not used, equivalent to X-Interactive */
+ if (parsed && !startswith_no_case (parsed[0], "<interactive>")) {
+ _cleanup_free_ char *facility = NULL;
+ if (sysv_translate_facility(parsed[0], NULL, &facility) < 0)
+ if (sysv_translate_facility(parsed[0], NULL, &facility) < 0 || !facility)
+ continue;
+ if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) {
+ _cleanup_free_ char *unit = NULL;

View File

@ -46,6 +46,13 @@ if [ $FIRST_ARG -eq 1 ]; then \
touch "/var/lib/systemd/migrated/$sysv_service" || : \
done \
else \
if [ $FIRST_ARG -gt 1 ]; then \
for service in %{?*} ; do \
if [ ! -e "/usr/lib/systemd/system/$service" ]; then \
touch "/run/rpm-%{name}-update-$service-new-in-upgrade" \
fi \
done \
fi \
for service in %{?*} ; do \
sysv_service=${service%.*} \
if [ ! -e "/var/lib/systemd/migrated/$sysv_service" ]; then \
@ -74,6 +81,13 @@ if [ -n "$services_to_migrate" ]; then \
/usr/sbin/systemd-sysv-convert --apply $services_to_migrate >/dev/null 2>&1 || : \
elif [ $FIRST_ARG -eq 1 ]; then \
/usr/bin/systemctl preset %{?*} >/dev/null 2>&1 || : \
elif [ $FIRST_ARG -gt 1 ]; then \
for service in %{?*} ; do \
if [ -e "/run/rpm-%{name}-update-$service-new-in-upgrade" ]; then \
rm -f "/run/rpm-%{name}-update-$service-new-in-upgrade" \
/usr/bin/systemctl preset "$service" >/dev/null 2>&1 || : \
fi \
done \
fi \
%{nil}

View File

@ -0,0 +1,22 @@
If after emergency service had been started there is incoming
traffic on syslog.socket emergency.service gets killed due to
implicit dependencies on basic.target => sysinit.target which in
turn conflict with emergency.target.
As a workaround explicitly stop syslog.socket when entering
emergency.service.
Reference: bnc#852232
Index: systemd-208/units/emergency.service.in
===================================================================
--- systemd-208/units/emergency.service.in
+++ systemd-208/units/emergency.service.in
@@ -9,7 +9,7 @@
Description=Emergency Shell
Documentation=man:sulogin(8)
DefaultDependencies=no
-Conflicts=shutdown.target
+Conflicts=shutdown.target syslog.socket
Before=shutdown.target
[Service]

View File

@ -0,0 +1,35 @@
--- systemd-208/units/console-shell.service.m4.in
+++ systemd-208/units/console-shell.service.m4.in 2014-02-05 11:28:31.446735287 +0000
@@ -17,6 +17,8 @@ Before=getty.target
[Service]
Environment=HOME=/root
WorkingDirectory=/root
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait
ExecStart=-/usr/sbin/sulogin
ExecStopPost=-@SYSTEMCTL@ poweroff
Type=idle
--- systemd-208/units/rescue.service.m4.in
+++ systemd-208/units/rescue.service.m4.in 2014-02-05 11:28:45.214235524 +0000
@@ -16,7 +16,8 @@ Before=shutdown.target
[Service]
Environment=HOME=/root
WorkingDirectory=/root
-ExecStartPre=-/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait
ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.'
ExecStart=-/usr/sbin/sulogin
ExecStopPost=-@SYSTEMCTL@ --fail --no-block default
--- systemd-208/units/emergency.service.in
+++ systemd-208/units/emergency.service.in 2014-02-05 11:28:51.782235282 +0000
@@ -15,7 +15,8 @@ Before=shutdown.target
[Service]
Environment=HOME=/root
WorkingDirectory=/root
-ExecStartPre=-/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth quit
+ExecStartPre=-/usr/bin/plymouth --wait
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again\\nto boot into default mode.'
ExecStart=-/usr/sbin/sulogin
ExecStopPost=@SYSTEMCTL@ --fail --no-block default

View File

@ -11,8 +11,10 @@ PIDFile: and X-Systemd-RemainAfterExit to control it.
src/core/service.h | 1 +
2 files changed, 33 insertions(+), 2 deletions(-)
--- systemd-206_git201308300826.orig/src/core/service.c
+++ systemd-206_git201308300826/src/core/service.c
Index: systemd-208/src/core/service.c
===================================================================
--- systemd-208.orig/src/core/service.c
+++ systemd-208/src/core/service.c
@@ -135,6 +135,7 @@ static void service_init(Unit *u) {
#ifdef HAVE_SYSV_COMPAT
s->sysv_start_priority = -1;
@ -21,7 +23,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it.
#endif
s->socket_fd = -1;
s->guess_main_pid = true;
@@ -879,6 +880,34 @@ static int service_load_sysv_path(Servic
@@ -883,6 +884,34 @@ static int service_load_sysv_path(Servic
free(short_description);
short_description = d;
@ -56,7 +58,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it.
} else if (state == LSB_DESCRIPTION) {
if (startswith(l, "#\t") || startswith(l, "# ")) {
@@ -929,7 +958,8 @@ static int service_load_sysv_path(Servic
@@ -933,7 +962,8 @@ static int service_load_sysv_path(Servic
/* Special setting for all SysV services */
s->type = SERVICE_FORKING;
@ -66,7 +68,7 @@ PIDFile: and X-Systemd-RemainAfterExit to control it.
s->guess_main_pid = false;
s->restart = SERVICE_RESTART_NO;
s->exec_context.ignore_sigpipe = false;
@@ -2102,7 +2132,7 @@ static void service_enter_running(Servic
@@ -2080,7 +2110,7 @@ static void service_enter_running(Servic
if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) &&
(s->bus_name_good || s->type != SERVICE_DBUS)) {
#ifdef HAVE_SYSV_COMPAT
@ -75,9 +77,11 @@ PIDFile: and X-Systemd-RemainAfterExit to control it.
s->remain_after_exit = false;
#endif
service_set_state(s, SERVICE_RUNNING);
--- systemd-206_git201308300826.orig/src/core/service.h
+++ systemd-206_git201308300826/src/core/service.h
@@ -177,6 +177,7 @@ struct Service {
Index: systemd-208/src/core/service.h
===================================================================
--- systemd-208.orig/src/core/service.h
+++ systemd-208/src/core/service.h
@@ -178,6 +178,7 @@ struct Service {
bool is_sysv:1;
bool sysv_has_lsb:1;
bool sysv_enabled:1;

View File

@ -10,8 +10,10 @@ configuration), needed by openSUSE (bnc#809420).
units/systemd-sysctl.service.in | 1 +
2 files changed, 9 insertions(+)
--- systemd-206.orig/src/sysctl/sysctl.c
+++ systemd-206/src/sysctl/sysctl.c
Index: systemd-207/src/sysctl/sysctl.c
===================================================================
--- systemd-207.orig/src/sysctl/sysctl.c
+++ systemd-207/src/sysctl/sysctl.c
@@ -26,6 +26,7 @@
#include <stdio.h>
#include <limits.h>
@ -20,7 +22,7 @@ configuration), needed by openSUSE (bnc#809420).
#include "log.h"
#include "strv.h"
@@ -297,6 +298,13 @@ int main(int argc, char *argv[]) {
@@ -299,6 +300,13 @@ int main(int argc, char *argv[]) {
} else {
_cleanup_strv_free_ char **files = NULL;
char **f;
@ -34,13 +36,16 @@ configuration), needed by openSUSE (bnc#809420).
r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
if (r < 0) {
--- systemd-206.orig/units/systemd-sysctl.service.in
+++ systemd-206/units/systemd-sysctl.service.in
@@ -20,6 +20,7 @@ ConditionDirectoryNotEmpty=|/usr/lib/sys
Index: systemd-207/units/systemd-sysctl.service.in
===================================================================
--- systemd-207.orig/units/systemd-sysctl.service.in
+++ systemd-207/units/systemd-sysctl.service.in
@@ -19,6 +19,8 @@ ConditionDirectoryNotEmpty=|/usr/lib/sys
ConditionDirectoryNotEmpty=|/usr/local/lib/sysctl.d
ConditionDirectoryNotEmpty=|/etc/sysctl.d
ConditionDirectoryNotEmpty=|/run/sysctl.d
+ConditionPathExistsGlob=|/boot/sysctl.conf-*
+ConditionPathExistsGlob=|/boot/sysctl.conf-%v
+RequiresMountsFor=/boot
[Service]
Type=oneshot

View File

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

3
systemd-208.tar.xz Normal file
View File

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

View File

@ -1,14 +1,476 @@
-------------------------------------------------------------------
Wed Feb 5 11:19:28 UTC 2014 - werner@suse.de
- Change and extend patch
0001-On_s390_con3270_disable_ANSI_colour_esc.patch
to disable the workaround to find /dev/3270/tty1 as this now
should be done by a) the kernel patch
http://lkml.indiana.edu/hypermail/linux/kernel/1402.0/02319.html
and the changed udev rule 99-systemd.rules
-------------------------------------------------------------------
Sun Feb 2 08:53:17 UTC 2014 - ohering@suse.com
- Remove PreReq pidof from udev, nothing in this pkg uses it
-------------------------------------------------------------------
Fri Jan 31 14:24:35 UTC 2014 - werner@suse.de
- Change and extend patch
0001-On_s390_con3270_disable_ANSI_colour_esc.patch
to re-enable colouring if 3270 console was enforced on the kernel
command line as 3270 cna handle colour ANSI escape sequences.
Also let the serial getty generator find the /dev/3270/tty1
character device (bnc#861316)
-------------------------------------------------------------------
Thu Jan 30 12:33:08 UTC 2014 - werner@suse.de
- Add patch 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
to strip the colouring ANSI escape sequences from the console
messages (bnc#860937)
-------------------------------------------------------------------
Thu Jan 30 08:29:00 UTC 2014 - werner@suse.de
- Change patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
to skip already by the kernel managed devices
-------------------------------------------------------------------
Wed Jan 29 18:03:39 UTC 2014 - arvidjaar@gmail.com
- fix timeout stopping user@.service (bnc#841544)
* 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch
* 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch
* 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch
-------------------------------------------------------------------
Tue Jan 28 12:44:07 UTC 2014 - werner@suse.de
- Add patch 0001-upstream-systemctl-halt-reboot-error-handling.patch
to be able to detect if the sysctl reboot() returns.
- Add patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
A check for unmaintained disk like devices is added to be able to
flush and maybe shut them down. Also the missing sync() system
call is added for the direct halt/reboot systemctl command. Then
the system halt is used as fallback if poweroff fails for both
the direct poweroff systemctl command as well as for the
systemd-shutdown utility.
-------------------------------------------------------------------
Thu Jan 23 13:24:53 UTC 2014 - werner@suse.de
- Make systemd-mini build
-------------------------------------------------------------------
Thu Jan 23 13:18:39 UTC 2014 - werner@suse.de
- Make requires bash-completion a recommends
-------------------------------------------------------------------
Tue Jan 21 13:05:59 UTC 2014 - werner@suse.de
- Add patch 1017-skip-native-unit-handling-if-sysv-already-handled.patch
to avoid that enabled boot scripts will be handled as unit files
by systemctl status command (bnc#818044)
-------------------------------------------------------------------
Tue Jan 21 12:51:20 UTC 2014 - werner@suse.de
- Drop patch 1017-enforce-sufficient-shutdown-warnings.patch
as the original code behaves exactly as the shutdown code of
the old SysVinit (bnc#750845)
- Rename support-powerfail-with-powerstatus.patch to
1016-support-powerfail-with-powerstatus.patch
-------------------------------------------------------------------
Mon Jan 20 10:18:20 UTC 2014 - fcrozat@suse.com
- Add analyze-fix-crash-in-command-line-parsing.patch: fix crash in
systemd-analyze (bnc#859365)
-------------------------------------------------------------------
Fri Jan 17 16:09:24 UTC 2014 - werner@suse.de
- Add patch
1019-make-completion-smart-to-be-able-to-redirect.patch
to make redirections work with the bash command completions for
for systemd command tools (bnc#856858, bnc#859072)
-------------------------------------------------------------------
Fri Jan 17 12:24:13 UTC 2014 - werner@suse.de
- Add patch
1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
to support the "+" to tag wanted dependencies as well as make
sure that required dependencies are handles as required ones.
This should fix bnc#858864 and bnc#857204.
-------------------------------------------------------------------
Thu Jan 16 16:08:00 UTC 2014 - lnussel@suse.de
- apply preset also to service files that are new in upgrade
-------------------------------------------------------------------
Wed Jan 15 14:11:02 UTC 2014 - werner@suse.de
- Change support-powerfail-with-powerstatus.patch to use BindsTo
instead of BindTo
-------------------------------------------------------------------
Wed Jan 15 12:34:53 UTC 2014 - werner@suse.de
- Add patch 1017-enforce-sufficient-shutdown-warnings.patch
Warn once per hour in the last 3 hours, then all 30 minutes in last
hour, all 15 minutes in the last 45 minutes, all 10 minutes in the
last 15 minutes, and then all minute in the last 10 minutes (bnc#750845)
-------------------------------------------------------------------
Tue Jan 14 18:28:09 UTC 2014 - werner@suse.de
- Add patch support-powerfail-with-powerstatus.patch and source
file systemd-powerfail to implement SIGPWR support with evaluation
of the file /var/run/powerstatus (bnc#737690)
-------------------------------------------------------------------
Fri Dec 20 12:06:18 UTC 2013 - werner@suse.de
- Adapt patch
1011-check-4-valid-kmsg-device.patch
to fit current upstream version maybe related to bnc#854884
- Change patch
1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
to check if XDG_RUNTIME_DIR is set before the call of pam_putenv()
may fix bnc#855160
-------------------------------------------------------------------
Fri Dec 20 09:40:01 UTC 2013 - lbsousajr@gmail.com
- Disable multi-seat-x build, since package xorg-x11-server
currently in Factory no longer needs it.
-------------------------------------------------------------------
Wed Dec 18 18:56:01 UTC 2013 - hrvoje.senjan@gmail.com
- Added 0001-logind-garbage-collect-stale-users.patch: Don't stop a
running user manager from garbage-collecting the user. Original
behavior caused bnc#849870
-------------------------------------------------------------------
Mon Dec 16 11:08:33 UTC 2013 - lbsousajr@gmail.com
- Add build-sys-make-multi-seat-x-optional.patch
* See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=bd441fa27a22b7c6e11d9330560e0622fb69f297
* Now systemd-multi-seat-x build can be disabled with configure option
--disable-multi-seat-x. It should be done when xorg-x11-server
no longer needs it (work in progress).
-------------------------------------------------------------------
Mon Dec 16 09:43:29 UTC 2013 - fcrozat@suse.com
- Update insserv-generator.patch: fix crash in insserv generator
(bnc#854314).
- Update apply-ACL-for-nvidia-device-nodes.patch with latest fixes
for Nvidia cards (bnc#808319).
-------------------------------------------------------------------
Fri Dec 6 13:30:19 UTC 2013 - werner@suse.de
- Add patch
1014-journald-with-journaling-FS.patch
which now uses the file system ioctls for switching off atime,
compression, and copy-on-write of the journal directory of the
the systemd-journald (bnc#838475)
- Let us build require the package config for libpcre (bnc#853293)
-------------------------------------------------------------------
Sat Nov 30 08:16:02 UTC 2013 - arvidjaar@gmail.com
- Add patch
0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch
Make sure emergency shell is not killed by attempt to start another unit
(bnc#852021). Backported from d420282b28f50720e233ccb1c02547c562195653.
- Add patch
make-emergency.service-conflict-with-syslog.socket.patch
Previous patch did not fix problem if syslog connection request came
after emergency shell was already started. So forcibly stop syslog.socket
when starting emergency.service. (bnc#852232)
-------------------------------------------------------------------
Thu Nov 28 10:25:58 UTC 2013 - lbsousajr@gmail.com
- Add U_logind_revert_lazy_session_activation_on_non_vt_seats.patch
* See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=3fdb2494c1e24c0a020f5b54022d2c751fd26f50
-------------------------------------------------------------------
Tue Nov 26 15:12:58 UTC 2013 - werner@suse.de
- Add patch
1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
to avoid (xdg-)su to set XDG_RUNTIME_DIR to the original user and
avoid that e.g. pulseaudio will create /run/user/<pid>/pulse owned
by root (bnc#852015)
-------------------------------------------------------------------
Thu Nov 21 12:27:11 UTC 2013 - werner@suse.de
- Add patch
1011-check-4-valid-kmsg-device.patch
to avoid a busy systemd-journald (bnc#851393)
-------------------------------------------------------------------
Wed Nov 6 09:42:05 UTC 2013 - werner@suse.de
- Add patch
1010-do-not-install-sulogin-unit-with-poweroff.patch
that is do not install console-shell.service in any system target
as this will cause automatic poweroff at boot (bnc#849071)
-------------------------------------------------------------------
Mon Nov 4 15:23:02 UTC 2013 - werner@suse.de
- Add upstream patch
0001-analyze-set-text-on-side-with-most-space.patch
to place the text on the side with most space
-------------------------------------------------------------------
Fri Oct 25 12:12:48 UTC 2013 - werner@suse.de
- Add upstream patch
0001-analyze-set-white-background.patch
to make SVG output of systemd analyze readable
-------------------------------------------------------------------
Mon Oct 21 09:27:36 UTC 2013 - werner@suse.de
- Add patch
1009-make-xsltproc-use-correct-ROFF-links.patch
to have valid ROFF links in manual pages working again (bnc#842844)
-------------------------------------------------------------------
Tue Oct 15 13:50:52 CEST 2013 - fcrozat@suse.com
- Add
0001-gpt-auto-generator-exit-immediately-if-in-container.patch:
don't start gpt auto-generator in container (git).
- Add
0001-manager-when-verifying-whether-clients-may-change-en.patch:
fix reload check in selinux case (git).
- Add 0001-logind-fix-bus-introspection-data-for-TakeControl.patch:
fix introspection for TakeControl (git).
- Add 0001-mount-check-for-NULL-before-reading-pm-what.patch: fix
crash when parsing some incorrect unit (git).
- Add
0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch:
Fix udev rules parsing (git).
- Add
0001-systemd-serialize-deserialize-forbid_restart-value.patch:
Fix incorrect deserialization for forbid_restart (git).
- Add
0001-core-unify-the-way-we-denote-serialization-attribute.patch:
Ensure forbid_restart is named like other attributes (git).
- Add 0001-journald-fix-minor-memory-leak.patch: fix memleak in
journald (git).
- Add
0001-do-not-accept-garbage-from-acpi-firmware-performance.patch:
Improve ACPI firmware performance parsing (git).
- Add
0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch:
Fix journal rotation (git).
- Add
0001-login-fix-invalid-free-in-sd_session_get_vt.patch:
Fix memory corruption in sd_session_get_vt (git).
- Add 0001-login-make-sd_session_get_vt-actually-work.patch: Ensure
sd_session_get_vt returns correct value (git).
- Add 0001-Never-call-qsort-on-potentially-NULL-arrays.patch: Don't
call qsort on NULL arrays (git).
- Add 0001-dbus-common-avoid-leak-in-error-path.patch: Fix memleak
in dbus-common code (git).
- Add 0001-drop-ins-check-return-value.patch: Fix return value for
drop-ins checks (git).
- Add 0001-shared-util-Fix-glob_extend-argument.patch: Fix
glob_extend argument (git).
- Add 0001-Fix-bad-assert-in-show_pid_array.patch: Fix bad assert
in show_pid_array (git).
-------------------------------------------------------------------
Thu Oct 3 08:43:51 UTC 2013 - fcrozat@suse.com
- Add 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch:
fix acpi memleak.
- Add
0002-fix-lingering-references-to-var-lib-backlight-random.patch:
fix invalid path in documentation.
- Add
0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch:
fix invalid memory free.
- Add 0004-systemctl-fix-name-mangling-for-sysv-units.patch: fix
name mangling for sysv units.
- Add
0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch:
fix OOM handling.
- Add 0006-journald-add-missing-error-check.patch: add missing
error check.
- Add 0007-bus-fix-potentially-uninitialized-memory-access.patch:
fix uninitialized memory access.
- Add 0008-dbus-fix-return-value-of-dispatch_rqueue.patch: fix
return value.
- Add 0009-modules-load-fix-error-handling.patch: fix error
handling.
- Add 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch:
fix incorrect memory access.
- Add 0011-strv-don-t-access-potentially-NULL-string-arrays.patch:
fix incorrect memory access.
- Add
0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch:
fix invalid pointer.
- Add
0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch:
fix permission on /run/log/journal.
- Add
0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch:
order remote mount points properly before remote-fs.target.
-------------------------------------------------------------------
Wed Oct 2 14:10:41 UTC 2013 - hrvoje.senjan@gmail.com
- Explicitly require pam-config for %post of the main package
-------------------------------------------------------------------
Wed Oct 2 08:03:30 UTC 2013 - fcrozat@suse.com
- Release v208:
+ logind gained support for facilitating privileged input and drm
devices access for unprivileged clients (helps Wayland /
kmscon).
+ New kernel command line luks.options= allows to specify LUKS
options, when used with luks.uuid=
+ tmpfileS.d snippets can uses specifier expansion in path names
(%m, %b, %H, %v).
+ New tmpfiles.d command "m" introduced to change
owner/group/access mode of a file/directory only if it exists.
+ MemorySoftLimit= cgroup settings is no longer supported
(underlying kernel cgroup attribute will disappear in the
future).
+ memeory.use_hierarchy cgroup attribute is enabled for all
cgroups systemd creates in memory cgroup hierarchy.
+ New filed _SYSTEMD_SLICE= is logged in journal messages related
to a slice.
+ systemd-journald will no longer adjust the group of journal
files it creates to "systemd-journal" group. Permissions and
owernship is adjusted when package is upgraded.
+ Backlight and random seed files are now stored in
/var/lib/systemd.
+ Boot time performance measurements included ACPI 5.0 FPDT
informations if available.
- Drop merged patches:
0001-cgroup-add-the-missing-setting-of-variable-s-value.patch,
0002-cgroup-correct-the-log-information.patch,
0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch,
0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch,
0005-core-cgroup-first-print-then-free.patch,
0006-swap-fix-reverse-dependencies.patch,
0008-swap-create-.wants-symlink-to-auto-swap-devices.patch,
0009-polkit-Avoid-race-condition-in-scraping-proc.patch,
Fix-timeout-when-stopping-Type-notify-service.patch,
set-ignoreonisolate-noauto-cryptsetup.patch,
0001-Fix-buffer-overrun-when-enumerating-files.patch,
0007-libudev-fix-move_later-comparison.patch.
- Refresh patches
remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch,
delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch,
handle-root_uses_lang-value-in-etc-sysconfig-language.patch,
handle-SYSTEMCTL_OPTIONS-environment-variable.patch,
Revert-service-drop-support-for-SysV-scripts-for-the-early.patch.
- Own more ghost files.
- Do not run pam-config in systemd-mini %post.
- Add after-local.service to run after.local late during the boot
process (bnc#778715).
-------------------------------------------------------------------
Tue Oct 1 17:09:01 UTC 2013 - fcrozat@suse.com
- Update Fix-timeout-when-stopping-Type-notify-service.patch with
upstream fix.
- No longer start ask-password-wall, was causing too much spam on
terminals (bnc#747783).
-------------------------------------------------------------------
Mon Sep 30 15:42:45 UTC 2013 - fcrozat@suse.com
- Add set-ignoreonisolate-noauto-cryptsetup.patch: ensure noauto
encrypted mounts survives runlevel changes (bnc#843085).
- Add 0001-Fix-buffer-overrun-when-enumerating-files.patch: fix
logind crash when /run/systemd/sessions was too big (bnc#840055,
initial fix from hpj@suse.com).
- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to
only check for /boot/sysctl.conf-<uname -r> presence.
- Add service wrapper for after.local (bnc#778715).
-------------------------------------------------------------------
Fri Sep 27 15:47:15 UTC 2013 - fcrozat@suse.com
- Update use-usr-sbin-sulogin-for-emergency-service.patch to apply
to all services using sulogin and remove generated files from
upstream tarball (bnc#841398).
-------------------------------------------------------------------
Mon Sep 23 13:09:06 UTC 2013 - arvidjaar@gmail.com
- Fix-timeout-when-stopping-Type-notify-service.patch
Make sure MAINPID is watched when it becomes known (bnc#841544)
-------------------------------------------------------------------
Mon Sep 23 13:11:08 CEST 2013 - fcrozat@suse.com
- Remove output and error redirection to /dev/null in install
script, it might help tracing pam related issue (bnc#841573).
-------------------------------------------------------------------
Thu Sep 19 16:37:03 CEST 2013 - fcrozat@suse.com
- Move symlink migration trigger to post (bnc#821800).
-------------------------------------------------------------------
Wed Sep 18 23:55:09 UTC 2013 - crrodriguez@opensuse.org
- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch
VUL-0: polkit: process subject race condition [bnc#835827]
CVE-2013-4288
-------------------------------------------------------------------
Wed Sep 18 23:45:54 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-ima as the openSUSE kernel
does not support IMA (CONFIG_IMA is not set)
-------------------------------------------------------------------
Wed Sep 18 23:40:27 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-smack as the openSUSE kernel
does not support smack (CONFIG_SECURITY_SMACK is not set)
-------------------------------------------------------------------
Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com
- Don't use a trigger to create symlink for sysctl.conf, always run
the test on %post (bnc#840864).
- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to
ensure /boot is mounted before reading /boot/sysctl.conf-*
(bnc#809420).
-------------------------------------------------------------------
Mon Sep 16 17:41:24 UTC 2013 - crrodriguez@opensuse.org
- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
really fixes the swap unit problem mentioned in previous
- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
really fixes the swap unit problem mentioned in previous
commit & the opensuse-factory mailing list.
-------------------------------------------------------------------
Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org
- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch
- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch
missing important check on return value.
- 0002-cgroup-correct-the-log-information.patch fix misleading
log information.
@ -18,7 +480,7 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org
should fail if write fails.
- 0005-core-cgroup-first-print-then-free.patch use-after-free
will trigger if there is an error condition.
- 0006-swap-fix-reverse-dependencies.patch reported in
- 0006-swap-fix-reverse-dependencies.patch reported in
opensuse-factory list, topic "swap isn't activated"
- 0007-libudev-fix-move_later-comparison.patch libudev
invalid usage of "move_later".
@ -27,10 +489,10 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org
Sat Sep 14 06:52:32 UTC 2013 - crrodriguez@opensuse.org
- while testing this new release I get in the logs ocassionally
at boot "systemd[1]: Failed to open private bus connection:
Failed to connect to socket /var/run/dbus/system_bus_socket:
at boot "systemd[1]: Failed to open private bus connection:
Failed to connect to socket /var/run/dbus/system_bus_socket:
No such file or directory" indeed DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
is defined to /var/run/dbus/system_bus_socket instead of
is defined to /var/run/dbus/system_bus_socket instead of
/run/dbus/system_bus_socket and that does not fly when /var/run
is not yet available. (systemd-dbus-system-bus-address.patch)
@ -42,10 +504,10 @@ Fri Sep 13 07:47:40 UTC 2013 - fcrozat@suse.com
-------------------------------------------------------------------
Fri Sep 13 03:14:36 UTC 2013 - crrodriguez@opensuse.org
- version 207, distribution specific changes follow, for overall
- version 207, distribution specific changes follow, for overall
release notes see NEWS.
- Fixed:
* Failed at step PAM spawning /usr/lib/systemd/systemd:
- Fixed:
* Failed at step PAM spawning /usr/lib/systemd/systemd:
Operation not permitted
* Fix shutdown hang "a stop job is running for Session 1 of user root"
that was reported in opensuse-factory list.
@ -152,7 +614,7 @@ Fri Jul 5 02:17:19 UTC 2013 - crrodriguez@opensuse.org
-------------------------------------------------------------------
Fri Jul 5 02:09:55 UTC 2013 - crrodriguez@opensuse.org
- fix broken symlink, service is called systemd-random-seed now.
- fix broken symlink, service is called systemd-random-seed now.
-------------------------------------------------------------------
Thu Jul 4 10:20:23 CEST 2013 - fcrozat@suse.com
@ -287,13 +749,13 @@ Fri Jun 21 12:40:27 UTC 2013 - rmilasan@suse.com
- Automatically online CPUs/Memory on CPU/Memory hotplug add events
(bnc#703100, fate#311831).
add: 1008-physical-hotplug-cpu-and-memory.patch
add: 1008-physical-hotplug-cpu-and-memory.patch
-------------------------------------------------------------------
Wed Jun 19 08:44:06 UTC 2013 - mhrusecky@suse.com
- Dropped backward compatibility
- Added check for upstream rpm macros changes
- Added check for upstream rpm macros changes
-------------------------------------------------------------------
Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com
@ -303,7 +765,7 @@ Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com
-------------------------------------------------------------------
Tue Jun 18 00:33:10 UTC 2013 - crrodriguez@opensuse.org
- 0001-journal-letting-interleaved-seqnums-go.patch and
- 0001-journal-letting-interleaved-seqnums-go.patch and
0002-journal-remember-last-direction-of-search-and-keep-o.patch
fix possible infinite loops in the journal code, related to
bnc #817778
@ -340,8 +802,8 @@ Tue Jun 11 02:29:49 UTC 2013 - crrodriguez@opensuse.org
- 0004-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch
fixes :
* systemd-journald[347]: Failed to set ACL on
/var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal,
* systemd-journald[347]: Failed to set ACL on
/var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal,
ignoring: Invalid argument
- 006-systemctl-core-allow-nuking-of-symlinks-to-removed-u.patch
systemctl disable should remove dangling symlinks.
@ -403,7 +865,7 @@ support has been removed from the kernel.
fixed in systemd v199, commit 89d09e1b5c65a2d97840f682e0932c8bb499f166
- Apply rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
only on ARM, patch rejected upstream because is too generic.
- no such define TARGET_SUSE exists but it is used in
- no such define TARGET_SUSE exists but it is used in
Revert-service-drop-support-for-SysV-scripts-for-the-early.patch
use HAVE_SYSV_COMPAT instead.
@ -462,7 +924,7 @@ Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com
- Rename remaning udev patches (clean-up).
- Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at
boot time not from udev (bnc#761109).
boot time not from udev (bnc#761109).
- Drop unused patches:
1001-Reinstate-TIMEOUT-handling.patch
1005-udev-fix-sg-autoload-regression.patch
@ -490,7 +952,7 @@ Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com
-------------------------------------------------------------------
Sun Apr 21 22:24:15 UTC 2013 - crrodriguez@opensuse.org
- Fix packaging error, there is no syslog.target anymore
- Fix packaging error, there is no syslog.target anymore
do not pretend there is one.
-------------------------------------------------------------------
@ -531,14 +993,14 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com
from an indexed database. %udev_hwdb_update macro should be
used by packages adding entries to this database.
+ Journal gained support for "Message Catalog", indexed database
to link up additional information with journal entries.
to link up additional information with journal entries.
%journal_catalog_update macro should be used by packages adding
%entries to this database.
+ "age" field for tmpfiles entries can be set to 0, forcing
removal of files matching this entry.
+ coredumpctl gained "gdb" verb to invoke gdb on selected
coredump.
+ New rpm macros has been added: %udev_rules_update(),
+ New rpm macros has been added: %udev_rules_update(),
%_udevhwdbdir, %_udevrulesdir, %_journalcatalogdir,
%_tmpfilesdir, %_sysctldir.
+ In service files, %U can be used for configured user name of
@ -562,7 +1024,7 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com
(normal clean-up with tmpfiles is still done in addition to
this though).
+ Resource limits (as exposed by cgroup controlers) can be
controlled dynamically at runtime for all units, using
controlled dynamically at runtime for all units, using
"systemctl set-cgroup-attr foobar.server cgroup.attribute
value". Those settings are stored persistenly on disk.
+ systemd-vconsole-setup will now copy all fonts settings to all
@ -696,14 +1158,14 @@ Thu Mar 28 09:24:43 UTC 2013 - rmilasan@suse.com
- udev: ensure that the network interfaces are renamed even if they
exist (bnc#809843).
add: 1027-udev-always-rename-network.patch
add: 1027-udev-always-rename-network.patch
-------------------------------------------------------------------
Wed Mar 20 10:14:59 UTC 2013 - rmilasan@suse.com
- udev: re-add persistent network rules (bnc#809843).
add: 1026-re-add-persistent-net.patch
- rebase all patches, ensure that they apply properly.
- rebase all patches, ensure that they apply properly.
-------------------------------------------------------------------
Thu Feb 21 14:45:12 UTC 2013 - fcrozat@suse.com
@ -728,7 +1190,7 @@ Tue Feb 19 09:51:18 UTC 2013 - rmilasan@suse.com
- udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer
add: 1024-udev-usb_id-parse-only-size-bytes-of-the-descriptors.patch
- udev: expose new ISO9660 properties from libblkid
add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch
add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch
-------------------------------------------------------------------
Mon Feb 18 09:27:05 UTC 2013 - jengelh@inai.de
@ -763,7 +1225,7 @@ Wed Feb 13 11:34:06 UTC 2013 - rmilasan@suse.com
- udev: use unique names for temporary files created in /dev.
add: 1022-udev-use-unique-names-for-temporary-files-created-in.patch
- cdrom_id: add data track count for bad virtual drive.
add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
-------------------------------------------------------------------
Tue Feb 12 09:16:23 UTC 2013 - rmilasan@suse.com
@ -785,7 +1247,7 @@ Fri Feb 1 16:27:45 UTC 2013 - fcrozat@suse.com
Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com
- udev: Fix device matching in the accelerometer
add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch
add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch
- keymap: add aditional support for some keyboard keys
add: 1018-keymap-add-aditional-support.patch
- journalctl: require argument for --priority
@ -794,7 +1256,7 @@ Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com
libudev-validate-argument-udev_enumerate_new.patch
kmod-fix-builtin-typo.patch
- rename udev-root-symlink.service to systemd-udev-root-symlink.service.
- fix in udev package missing link in basic.target.wants for
- fix in udev package missing link in basic.target.wants for
systemd-udev-root-symlink.service
-------------------------------------------------------------------
@ -926,7 +1388,7 @@ Wed Jan 9 09:42:50 UTC 2013 - rmilasan@suse.com
add: 1014-udev-fix-whitespace.patch
- udev: properly handle symlink removal by 'change' event
add: 1015-udev-properly-handle-symlink-removal-by-change-event.patch
- udev: builtin - do not fail builtin initialization if one of
- udev: builtin - do not fail builtin initialization if one of
them returns an error
add: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch
- udev: use usec_t and now()
@ -938,7 +1400,7 @@ Tue Jan 8 12:47:43 UTC 2013 - rmilasan@suse.com
- udevd: add missing ':' to getopt_long 'e'.
add: 1007-udevd-add-missing-to-getopt_long-e.patch
- clean up systemd.spec, make it easy to see which are udev and
systemd patches.
systemd patches.
- make 'reload' and 'force-reload' LSB compliant (bnc#793936).
-------------------------------------------------------------------
@ -946,8 +1408,8 @@ Tue Dec 11 00:22:50 UTC 2012 - crrodriguez@opensuse.org
- detect-btrfs-ssd.patch: Fix btrfs detection on SSD.
- timedated-donot-close-bogus-dbus-connection.patch: Avoid
closing an non-existent dbus connection and getting assertion
failures.
closing an non-existent dbus connection and getting assertion
failures.
-------------------------------------------------------------------
Mon Dec 10 14:22:21 UTC 2012 - coolo@suse.com
@ -980,7 +1442,7 @@ Tue Dec 4 16:51:32 UTC 2012 - fcrozat@suse.com
-------------------------------------------------------------------
Thu Nov 22 14:22:00 UTC 2012 - rmilasan@suse.com
- Fix creation of /dev/root link.
- Fix creation of /dev/root link.
-------------------------------------------------------------------
Tue Nov 20 18:25:49 CET 2012 - fcrozat@suse.com
@ -1139,7 +1601,7 @@ Thu Oct 4 11:23:42 UTC 2012 - fcrozat@suse.com
+ Optional journal gateway daemon
(systemd-journal-gatewayd.service) to access journal via HTTP
and JSON. Use "wget http://localhost:19531/entries" to get
/var/log/messages compatible format and
/var/log/messages compatible format and
'curl -H"Accept: application/json"
http://localhost:19531/entries' for JSON formatted content.
HTML5 static page is also available as explained on
@ -1369,7 +1831,7 @@ Thu Apr 19 10:07:47 UTC 2012 - fcrozat@suse.com
-------------------------------------------------------------------
Tue Apr 3 09:37:09 UTC 2012 - dvaleev@suse.com
- apply ppc patch to systemd-gtk too (fixes build)
- apply ppc patch to systemd-gtk too (fixes build)
-------------------------------------------------------------------
Thu Mar 22 08:47:36 UTC 2012 - fcrozat@suse.com
@ -1451,7 +1913,7 @@ Sun Feb 19 07:56:05 UTC 2012 - jengelh@medozas.de
-------------------------------------------------------------------
Fri Feb 17 09:22:50 UTC 2012 - tittiatcoke@gmail.com
- Enable Plymouth integration.
- Enable Plymouth integration.
* Bootsplash related files will be moved to the bootsplash
package
@ -1502,7 +1964,7 @@ Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com
property.
+ Rudimentary service watchdog support (not complete)
+ Improve bootcharts, by immediatly changing argv[0] after
forking to to reflect which process will be executed.
forking to to reflect which process will be executed.
+ Various bug fixes.
- Add remote-fs-after-network.patch and update insserv patch:
ensure remote-fs-pre.target is enabled and started before network
@ -1561,7 +2023,7 @@ Wed Jan 25 10:37:06 UTC 2012 - fcrozat@suse.com
-------------------------------------------------------------------
Thu Jan 19 13:47:39 UTC 2012 - tittiatcoke@gmail.com
- Make the systemd journal persistent by creating the
- Make the systemd journal persistent by creating the
/var/log/journal directory
-------------------------------------------------------------------
@ -1571,8 +2033,8 @@ Wed Jan 18 09:03:51 UTC 2012 - tittiatcoke@gmail.com
- Bugfixes
- Implementation of a Journal Utility Library
- Implementation of a 128 Bit ID Utility Library
- 11 Patches integrated upstream
- Add systemd-syslog_away_early_on_shutdown.patch: make sure
- 11 Patches integrated upstream
- Add systemd-syslog_away_early_on_shutdown.patch: make sure
syslog socket goes away early during shutdown.
- Add listen.conf for rsyslog. This will ensure that it will still
work fine with rsyslog and the new journal.
@ -1850,7 +2312,7 @@ Wed Aug 3 07:11:33 UTC 2011 - aj@suse.de
* New PrivateNetwork= service setting which allows you to shut off
networking for a specific service (i.e. all routable network
interfaces will disappear for that service).
* Merged insserv-parsing.patch and bash-completion-restart.patch
* Merged insserv-parsing.patch and bash-completion-restart.patch
patches.
-------------------------------------------------------------------

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd-mini
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -23,9 +23,14 @@
%define udevpkgname udev-mini
%define udev_major 1
%if 0%{?sles_version} == 0
%global with_bash_completion 1
%endif
%bcond_with bash_completion
Name: systemd-mini
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 207
Version: 208
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
@ -73,6 +78,7 @@ BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(libmicrohttpd)
%endif
BuildRequires: pkgconfig(libpci) >= 3
BuildRequires: pkgconfig(libpcre)
%if ! 0%{?bootstrap}
BuildRequires: pkgconfig(libqrencode)
%endif
@ -88,6 +94,9 @@ Conflicts: kiwi
# the buildignore is important for bootstrapping
#!BuildIgnore: udev
Requires: %{udevpkgname} >= 172
%if %{with bash_completion}
Recommends: bash-completion
%endif
Requires: dbus-1 >= 1.4.0
Requires: kbd
Requires: kmod >= 14
@ -98,6 +107,9 @@ Requires: util-linux >= 2.21
Requires(post): coreutils
Requires(post): findutils
%endif
%if ! 0%{?bootstrap}
Requires(post): pam-config
%endif
Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0
Obsoletes: systemd-analyze < 201
@ -112,6 +124,8 @@ Source7: libgcrypt.m4
Source8: systemd-journald.init
Source9: nss-myhostname-config
Source10: macros.systemd.upstream
Source11: after-local.service
Source12: systemd-powerfail
Source1060: boot.udev
Source1061: write_dev_root_rule
@ -156,6 +170,7 @@ Patch40: sysctl-handle-boot-sysctl.conf-kernel_release.patch
# PATCH-FIX-OPENSUSE ensure-shortname-is-set-as-hostname-bnc-820213.patch bnc#820213 fcrozat@suse.com -- Do not set anything beyond first dot as hostname
Patch41: ensure-shortname-is-set-as-hostname-bnc-820213.patch
Patch42: systemd-pam_config.patch
# Upstream First - Policy:
# Never add any patches to this package without the upstream commit id
# in the patch. Any patches added here without a very good reason to make
@ -170,23 +185,96 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.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 systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run
# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run
Patch47: systemd-dbus-system-bus-address.patch
# PATCH-FIX-UPSTREAM 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -- r must be set to the return value of previous call.
Patch48: 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch
# PATCH-FIX-UPSTREAM 0002-cgroup-correct-the-log-information.patch -- fix misleading log information.
Patch49: 0002-cgroup-correct-the-log-information.patch
# PATCH-FIX-UPSTREAM 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -- memory cgroup setting is wrong.
Patch50: 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch
# PATCH-FIX-UPSTREAM 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -- systemd-random-seed-load should fail if write fails.
Patch51: 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch
# PATCH-FIX-UPSTREAM 0005-core-cgroup-first-print-then-free.patch -- fix use after free
Patch52: 0005-core-cgroup-first-print-then-free.patch
# PATCH-FIX-UPSTREAM 0006-swap-fix-reverse-dependencies.patch -- SWAP does not mount properly
Patch53: 0006-swap-fix-reverse-dependencies.patch
# PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units
Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
# PATCH-FIX-UPSTREAM 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch fcrozat@suse.com -- fix acpi memleak
Patch48: 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
# PATCH-FIX-UPSTREAM 0002-fix-lingering-references-to-var-lib-backlight-random.patch fcrozat@suse.com -- fix invalid path in documentation
Patch49: 0002-fix-lingering-references-to-var-lib-backlight-random.patch
# PATCH-FIX-UPSTREAM 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch fcrozat@suse.com -- fix invalid memory free
Patch50: 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
# PATCH-FIX-UPSTREAM 0004-systemctl-fix-name-mangling-for-sysv-units.patch fcrozat@suse.com -- fix name mangling for sysv units
Patch51: 0004-systemctl-fix-name-mangling-for-sysv-units.patch
# PATCH-FIX-UPSTREAM 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch fcrozat@suse.com -- fix OOM handling
Patch52: 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
# PATCH-FIX-UPSTREAM 0006-journald-add-missing-error-check.patch fcrozat@suse.com -- add missing error check
Patch53: 0006-journald-add-missing-error-check.patch
# PATCH-FIX-UPSTREAM 0007-bus-fix-potentially-uninitialized-memory-access.patch fcrozat@suse.com -- fix uninitialized memory access
Patch54: 0007-bus-fix-potentially-uninitialized-memory-access.patch
# PATCH-FIX-UPSTREAM 0008-dbus-fix-return-value-of-dispatch_rqueue.patch fcrozat@suse.com -- fix return value
Patch55: 0008-dbus-fix-return-value-of-dispatch_rqueue.patch
# PATCH-FIX-UPSTREAM 0009-modules-load-fix-error-handling.patch fcrozat@suse.com -- fix error handling
Patch56: 0009-modules-load-fix-error-handling.patch
# PATCH-FIX-UPSTREAM 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- fix incorrect memory access
Patch57: 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch
# PATCH-FIX-UPSTREAM 0011-strv-don-t-access-potentially-NULL-string-arrays.patch fcrozat@suse.com -- fix incorrect memory access
Patch58: 0011-strv-don-t-access-potentially-NULL-string-arrays.patch
# PATCH-FIX-UPSTREAM 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch fcrozat@suse.com -- fix invalid pointer
Patch59: 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
# PATCH-FIX-UPSTREAM 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch fcrozat@suse.com -- fix permission on /run/log/journal
Patch60: 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
# PATCH-FIX-UPSTREAM 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch fcrozat@suse.com -- order remote mount points properly before remote-fs.target
Patch61: 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch
# PATCH-FIX-UPSTREAM 0001-gpt-auto-generator-exit-immediately-if-in-container.patch fcrozat@suse.com -- don't start gpt auto-generator in container
Patch62: 0001-gpt-auto-generator-exit-immediately-if-in-container.patch
# PATCH-FIX-UPSTREAM 0001-manager-when-verifying-whether-clients-may-change-en.patch fcrozat@suse.com -- fix reload check in selinux case
Patch63: 0001-manager-when-verifying-whether-clients-may-change-en.patch
# PATCH-FIX-UPSTREAM 0001-logind-fix-bus-introspection-data-for-TakeControl.patch fcrozat@suse.com -- fix introspection for TakeControl
Patch64: 0001-logind-fix-bus-introspection-data-for-TakeControl.patch
# PATCH-FIX-UPSTREAM 0001-mount-check-for-NULL-before-reading-pm-what.patch fcrozat@suse.com -- fix crash when parsing some incorrect unit
Patch65: 0001-mount-check-for-NULL-before-reading-pm-what.patch
# PATCH-FIX-UPSTREAM 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch fcrozat@suse.com -- Fix udev rules parsing
Patch66: 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
# PATCH-FIX-UPSTREAM 0001-systemd-serialize-deserialize-forbid_restart-value.patch fcrozat@suse.com -- Fix incorrect deserialization for forbid_restart
Patch67: 0001-systemd-serialize-deserialize-forbid_restart-value.patch
# PATCH-FIX-UPSTREAM 0001-core-unify-the-way-we-denote-serialization-attribute.patch fcrozat@suse.com -- Ensure forbid_restart is named like other attributes
Patch68: 0001-core-unify-the-way-we-denote-serialization-attribute.patch
# PATCH-FIX-UPSTREAM 0001-journald-fix-minor-memory-leak.patch fcrozat@suse.com -- fix memleak in journald
Patch69: 0001-journald-fix-minor-memory-leak.patch
# PATCH-FIX-UPSTREAM 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch fcrozat@suse.com -- Improve ACPI firmware performance parsing
Patch70: 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch
# PATCH-FIX-UPSTREAM 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch fcrozat@suse.com -- Fix journal rotation
Patch71: 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch
# PATCH-FIX-UPSTREAM 0001-login-fix-invalid-free-in-sd_session_get_vt.patchfcrozat@suse.com -- Fix memory corruption in sd_session_get_vt
Patch72: 0001-login-fix-invalid-free-in-sd_session_get_vt.patch
# PATCH-FIX-UPSTREAM 0001-login-make-sd_session_get_vt-actually-work.patch fcrozat@suse.com -- Ensure sd_session_get_vt returns correct value
Patch73: 0001-login-make-sd_session_get_vt-actually-work.patch
# PATCH-FIX-UPSTREAM 0001-Never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- Don't call qsort on NULL arrays
Patch74: 0001-Never-call-qsort-on-potentially-NULL-arrays.patch
# PATCH-FIX-UPSTREAM 0001-dbus-common-avoid-leak-in-error-path.patch fcrozat@suse.com -- Fix memleak in dbus-common code
Patch75: 0001-dbus-common-avoid-leak-in-error-path.patch
# PATCH-FIX-UPSTREAM 0001-drop-ins-check-return-value.patch fcrozat@suse.com -- Fix return value for drop-ins checks
Patch76: 0001-drop-ins-check-return-value.patch
# PATCH-FIX-UPSTREAM 0001-shared-util-Fix-glob_extend-argument.patch fcrozat@suse.com -- Fix glob_extend argument
Patch77: 0001-shared-util-Fix-glob_extend-argument.patch
# PATCH-FIX-UPSTREAM 0001-Fix-bad-assert-in-show_pid_array.patch fcrozat@suse.com -- Fix bad assert in show_pid_array
Patch78: 0001-Fix-bad-assert-in-show_pid_array.patch
# PATCH-FIX-UPSTREAM 0001-analyze-set-white-background.patch werner@suse.com -- Make background of systemd-analyze SVG white
Patch79: 0001-analyze-set-white-background.patch
# PATCH-FIX-UPSTREAM 0001-analyze-set-text-on-side-with-most-space.patch werner@suse.com -- Place the text on the side with most space
Patch80: 0001-analyze-set-text-on-side-with-most-space.patch
# PATCH-FIX-UPSTREAM 0001-logind-garbage-collect-stale-users.patch -- Don't stop a running user manager from garbage-collecting the user.
Patch81: 0001-logind-garbage-collect-stale-users.patch
# PATCH-FIX-UPSTREAM analyze-fix-crash-in-command-line-parsing.patch fcrozat@suse.com bnc#859365 -- Fix crash in systemd-analyze
Patch82: analyze-fix-crash-in-command-line-parsing.patch
# PATCH-FIX-UPSTREAM 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch -- Prevent accidental kill of emergency shell (bnc#852021)
Patch83: 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
# PATCH-FIX-UPSTREAM 0001-upstream-systemctl-halt-reboot-error-handling.patch
Patch85: 0001-upstream-systemctl-halt-reboot-error-handling.patch
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
Patch86: 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
# PATCH-FIX-UPSTREAM 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch -- Allow sending SIGTERM to main PID only (bnc#841544)
Patch87: 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch
# PATCH-FIX-UPSTREAM 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch -- Allow using it with PAM enabled services (bnc#841544)
Patch88: 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch
# PATCH-FIX-UPSTREAM 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch -- Make sure final SIGKILL actually kills everything (bnc#841544)
Patch89: 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch
# PATCH-FIX-SUSE 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
Patch90: 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
# PATCH-FIX-SUSE plymouth-quit-and-wait-for-emergency-service.patch -- Make sure that no plymouthd is locking the tty
Patch91: plymouth-quit-and-wait-for-emergency-service.patch
# udev patches
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
@ -203,8 +291,28 @@ Patch1006: 1006-udev-always-rename-network.patch
Patch1007: 1007-physical-hotplug-cpu-and-memory.patch
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch
Patch1008: 1008-add-msft-compability-rules.patch
# PATCH-FIX-UPSTREAM libudev: fix move_later comparison
Patch1009: 0007-libudev-fix-move_later-comparison.patch
# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch
# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
Patch1010: 1010-do-not-install-sulogin-unit-with-poweroff.patch
# PATCH-FIX-OPENSUSE 1011-check-4-valid-kmsg-device.patch -- Avoid busy systemd-journald (bnc#851393)
Patch1011: 1011-check-4-valid-kmsg-device.patch
# PATCH-FIX-UPSTREAM 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
Patch1012: 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
# PATCH-FIX-UPSTREAM U_logind_revert_lazy_session_activation_on_non_vt_seats.patch
Patch1013: U_logind_revert_lazy_session_activation_on_non_vt_seats.patch
# PATCH-FIX-OPENSUSE 1014-journald-with-journaling-FS.patch
Patch1014: 1014-journald-with-journaling-FS.patch
# PATCH-FIX-UPSTREAM build-sys-make-multi-seat-x-optional.patch
Patch1015: build-sys-make-multi-seat-x-optional.patch
# PATCH-FIX-SUSE 1016-support-powerfail-with-powerstatus.patch
Patch1016: 1016-support-powerfail-with-powerstatus.patch
# PATCH-FIX-UPSTREAM 1017-skip-native-unit-handling-if-sysv-already-handled.patch
Patch1017: 1017-skip-native-unit-handling-if-sysv-already-handled.patch
# PATCH-FIX-SUSE 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch
Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch
%description
Systemd is a system and service manager, compatible with SysV and LSB
@ -248,7 +356,7 @@ Summary: A rule-based device node and kernel event manager
License: GPL-2.0
Group: System/Kernel
Url: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
PreReq: /bin/pidof /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq
PreReq: /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq
Requires(post): lib%{udevpkgname}%{udev_major}
Conflicts: systemd < 39
Conflicts: aaa_base < 11.5
@ -441,6 +549,43 @@ cp %{SOURCE7} m4/
%patch52 -p1
%patch53 -p1
%patch54 -p1
%patch55 -p1
%patch56 -p1
%patch57 -p1
%patch58 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
%patch69 -p1
%patch70 -p1
%patch71 -p1
%patch72 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch77 -p1
%patch78 -p1
%patch79 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch86 -p1
%patch87 -p1
%patch88 -p1
%patch89 -p1
%patch90 -p1
%patch91 -p1
# udev patches
%patch1001 -p1
@ -454,6 +599,19 @@ cp %{SOURCE7} m4/
%patch1008 -p1
%endif
%patch1009 -p1
%patch1010 -p1
%patch1011 -p1
%patch1012 -p1
%patch1013 -p1
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
%patch1018 -p1
%patch1019 -p1
# ensure generate files are removed
rm -f units/emergency.service
%build
autoreconf -fiv
@ -479,6 +637,11 @@ export V=1
--with-rc-local-script-path-start=/etc/init.d/boot.local \
--with-rc-local-script-path-stop=/etc/init.d/halt.local \
--with-debug-shell=/bin/bash \
--disable-smack \
--disable-ima \
%if 0%{?suse_version} > 1310
--disable-multi-seat-x \
%endif
CFLAGS="%{optflags}"
make %{?_smp_mflags}
@ -555,6 +718,9 @@ ln -s systemd-random-seed.service %{buildroot}/%{_prefix}/lib/systemd/system/ran
# don't mount /tmp as tmpfs for now
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
# don't enable wall ask password service, it spams every console (bnc#747783)
rm %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path
# create %{_libexecdir}/modules-load.d
mkdir -p %{buildroot}%{_libexecdir}/modules-load.d
cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf
@ -579,7 +745,7 @@ rm -f %{buildroot}/var/log/README
%endif
# legacy links
for f in loginctl journalctl ; do
for f in loginctl journalctl ; do
ln -s $f %{buildroot}%{_bindir}/systemd-$f
%if ! 0%{?bootstrap}
ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1
@ -616,6 +782,27 @@ cat << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/nocl
TTYVTDisallocate=no
EOF
# ensure after.local wrapper is called
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
# support for SIGPWR handling with /var/run/powerstatus of e.g. powerd
install -m 755 %{S:12} %{buildroot}/%{_prefix}/lib/systemd/
install -m 644 units/powerfail.service %{buildroot}/%{_prefix}/lib/systemd/system/
%if ! 0%{?bootstrap}
install -m 644 man/systemd-powerfail.service.8 %{buildroot}/%{_mandir}/man8/
%endif
# clean out some completions which requires bash-completion package
%if %{without bash_completion}
for c in %{buildroot}/%{_datadir}/bash-completion/completions/*
do
test -e "$c" || continue
grep -q _init_completion "$c" || continue
rm -vf "$c"
done
%endif
%fdupes -s %{buildroot}%{_mandir}
# packaged in systemd-rpm-macros
@ -626,12 +813,18 @@ getent group systemd-journal >/dev/null || groupadd -r systemd-journal || :
exit 0
%post
/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || :
%if ! 0%{?bootstrap}
/usr/sbin/pam-config -a --systemd || :
%endif
/sbin/ldconfig
[ -e /var/lib/random-seed ] && mv /var/lib/random-seed /var/lib/systemd/ > /dev/null || :
/usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || :
/usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || :
/usr/bin/systemctl daemon-reexec >/dev/null 2>&1 || :
/usr/bin/journalctl --update-catalog >/dev/null 2>&1 || :
# Make sure new journal files
chgrp systemd-journal /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || :
chmod g+s /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || :
# Try to read default runlevel from the old inittab if it exists
if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then
@ -651,28 +844,29 @@ if [ "$1" -eq 1 ]; then
remote-fs.target >/dev/null 2>&1 || :
fi
%triggerpostun -- systemd < 194
# migrate any symlink which may refer to the old path
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target="/usr$(readlink $f)"
[ -f "$new_target" ] && ln -s -f $new_target $f || :
done
# since v207 /etc/sysctl.conf is no longer parsed, however
# backward compatibility is provided by /etc/sysctl.d/99-sysctl.conf
if [ ! -L /etc/sysctl.d/99-sysctl.conf -a -e /etc/sysctl.conf ]; then
/bin/ln -sf /etc/sysctl.conf /etc/sysctl.d/99-sysctl.conf || :
fi
# migrate any symlink which may refer to the old path
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target="/usr$(readlink $f)"
[ -f "$new_target" ] && ln -s -f $new_target $f || :
done
%postun
/sbin/ldconfig
if [ $1 -ge 1 ]; then
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
/usr/bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
fi
%if ! 0%{?bootstrap}
if [ $1 -eq 0 ]; then
/usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || :
/usr/sbin/pam-config -d --systemd || :
fi
%endif
%preun
if [ $1 -eq 0 ]; then
@ -978,10 +1172,13 @@ exit 0
%dir /var/lib/systemd/sysv-convert
%dir /var/lib/systemd/migrated
%dir /var/lib/systemd/catalog
%ghost /var/lib/systemd/catalog/database
%dir /var/lib/systemd/coredump
%dir /usr/share/zsh
%dir /usr/share/zsh/site-functions
/usr/share/zsh/site-functions/*
%ghost /var/lib/systemd/backlight
%ghost /var/lib/systemd/random-seed
%files devel
%defattr(-,root,root,-)

28
systemd-powerfail Normal file
View File

@ -0,0 +1,28 @@
#!/bin/bash
#
# /usr/lib/systemd/systemd-powerfail
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Germany.
# Author: Werner Fink
# Please send feedback to http://www.suse.de/feedback
#
# Description:
#
# Used to evaluate the status of /var/run/powerstatus
#
trap "echo" SIGINT SIGSEGV SIGTERM
POWERFAIL='THE POWER IS FAILED! SYSTEM GOING DOWN! PLEASE LOG OFF NOW!'
POWERFAILNOW='THE POWER IS FAILED! LOW BATTERY - EMERGENCY SYSTEM SHUTDOWN!'
POWERISBACK='THE POWER IS BACK'
typeset pwrstat=0
test -s /var/run/powerstatus && read pwrstat < /var/run/powerstatus
rm -f /var/run/powerstatus
case "$pwrstat" in
O*) exec /sbin/shutdown -c +0 "$POWERISBACK" ;;
L*) exec /sbin/shutdown -P +0 "$POWERFAILNOW" ;;
*) exec /sbin/shutdown -P +2 "$POWERFAIL" ;;
esac

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd-rpm-macros
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed

View File

@ -1,14 +1,476 @@
-------------------------------------------------------------------
Wed Feb 5 11:19:28 UTC 2014 - werner@suse.de
- Change and extend patch
0001-On_s390_con3270_disable_ANSI_colour_esc.patch
to disable the workaround to find /dev/3270/tty1 as this now
should be done by a) the kernel patch
http://lkml.indiana.edu/hypermail/linux/kernel/1402.0/02319.html
and the changed udev rule 99-systemd.rules
-------------------------------------------------------------------
Sun Feb 2 08:53:17 UTC 2014 - ohering@suse.com
- Remove PreReq pidof from udev, nothing in this pkg uses it
-------------------------------------------------------------------
Fri Jan 31 14:24:35 UTC 2014 - werner@suse.de
- Change and extend patch
0001-On_s390_con3270_disable_ANSI_colour_esc.patch
to re-enable colouring if 3270 console was enforced on the kernel
command line as 3270 cna handle colour ANSI escape sequences.
Also let the serial getty generator find the /dev/3270/tty1
character device (bnc#861316)
-------------------------------------------------------------------
Thu Jan 30 12:33:08 UTC 2014 - werner@suse.de
- Add patch 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
to strip the colouring ANSI escape sequences from the console
messages (bnc#860937)
-------------------------------------------------------------------
Thu Jan 30 08:29:00 UTC 2014 - werner@suse.de
- Change patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
to skip already by the kernel managed devices
-------------------------------------------------------------------
Wed Jan 29 18:03:39 UTC 2014 - arvidjaar@gmail.com
- fix timeout stopping user@.service (bnc#841544)
* 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch
* 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch
* 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch
-------------------------------------------------------------------
Tue Jan 28 12:44:07 UTC 2014 - werner@suse.de
- Add patch 0001-upstream-systemctl-halt-reboot-error-handling.patch
to be able to detect if the sysctl reboot() returns.
- Add patch 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
A check for unmaintained disk like devices is added to be able to
flush and maybe shut them down. Also the missing sync() system
call is added for the direct halt/reboot systemctl command. Then
the system halt is used as fallback if poweroff fails for both
the direct poweroff systemctl command as well as for the
systemd-shutdown utility.
-------------------------------------------------------------------
Thu Jan 23 13:24:53 UTC 2014 - werner@suse.de
- Make systemd-mini build
-------------------------------------------------------------------
Thu Jan 23 13:18:39 UTC 2014 - werner@suse.de
- Make requires bash-completion a recommends
-------------------------------------------------------------------
Tue Jan 21 13:05:59 UTC 2014 - werner@suse.de
- Add patch 1017-skip-native-unit-handling-if-sysv-already-handled.patch
to avoid that enabled boot scripts will be handled as unit files
by systemctl status command (bnc#818044)
-------------------------------------------------------------------
Tue Jan 21 12:51:20 UTC 2014 - werner@suse.de
- Drop patch 1017-enforce-sufficient-shutdown-warnings.patch
as the original code behaves exactly as the shutdown code of
the old SysVinit (bnc#750845)
- Rename support-powerfail-with-powerstatus.patch to
1016-support-powerfail-with-powerstatus.patch
-------------------------------------------------------------------
Mon Jan 20 10:18:20 UTC 2014 - fcrozat@suse.com
- Add analyze-fix-crash-in-command-line-parsing.patch: fix crash in
systemd-analyze (bnc#859365)
-------------------------------------------------------------------
Fri Jan 17 16:09:24 UTC 2014 - werner@suse.de
- Add patch
1019-make-completion-smart-to-be-able-to-redirect.patch
to make redirections work with the bash command completions for
for systemd command tools (bnc#856858, bnc#859072)
-------------------------------------------------------------------
Fri Jan 17 12:24:13 UTC 2014 - werner@suse.de
- Add patch
1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
to support the "+" to tag wanted dependencies as well as make
sure that required dependencies are handles as required ones.
This should fix bnc#858864 and bnc#857204.
-------------------------------------------------------------------
Thu Jan 16 16:08:00 UTC 2014 - lnussel@suse.de
- apply preset also to service files that are new in upgrade
-------------------------------------------------------------------
Wed Jan 15 14:11:02 UTC 2014 - werner@suse.de
- Change support-powerfail-with-powerstatus.patch to use BindsTo
instead of BindTo
-------------------------------------------------------------------
Wed Jan 15 12:34:53 UTC 2014 - werner@suse.de
- Add patch 1017-enforce-sufficient-shutdown-warnings.patch
Warn once per hour in the last 3 hours, then all 30 minutes in last
hour, all 15 minutes in the last 45 minutes, all 10 minutes in the
last 15 minutes, and then all minute in the last 10 minutes (bnc#750845)
-------------------------------------------------------------------
Tue Jan 14 18:28:09 UTC 2014 - werner@suse.de
- Add patch support-powerfail-with-powerstatus.patch and source
file systemd-powerfail to implement SIGPWR support with evaluation
of the file /var/run/powerstatus (bnc#737690)
-------------------------------------------------------------------
Fri Dec 20 12:06:18 UTC 2013 - werner@suse.de
- Adapt patch
1011-check-4-valid-kmsg-device.patch
to fit current upstream version maybe related to bnc#854884
- Change patch
1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
to check if XDG_RUNTIME_DIR is set before the call of pam_putenv()
may fix bnc#855160
-------------------------------------------------------------------
Fri Dec 20 09:40:01 UTC 2013 - lbsousajr@gmail.com
- Disable multi-seat-x build, since package xorg-x11-server
currently in Factory no longer needs it.
-------------------------------------------------------------------
Wed Dec 18 18:56:01 UTC 2013 - hrvoje.senjan@gmail.com
- Added 0001-logind-garbage-collect-stale-users.patch: Don't stop a
running user manager from garbage-collecting the user. Original
behavior caused bnc#849870
-------------------------------------------------------------------
Mon Dec 16 11:08:33 UTC 2013 - lbsousajr@gmail.com
- Add build-sys-make-multi-seat-x-optional.patch
* See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=bd441fa27a22b7c6e11d9330560e0622fb69f297
* Now systemd-multi-seat-x build can be disabled with configure option
--disable-multi-seat-x. It should be done when xorg-x11-server
no longer needs it (work in progress).
-------------------------------------------------------------------
Mon Dec 16 09:43:29 UTC 2013 - fcrozat@suse.com
- Update insserv-generator.patch: fix crash in insserv generator
(bnc#854314).
- Update apply-ACL-for-nvidia-device-nodes.patch with latest fixes
for Nvidia cards (bnc#808319).
-------------------------------------------------------------------
Fri Dec 6 13:30:19 UTC 2013 - werner@suse.de
- Add patch
1014-journald-with-journaling-FS.patch
which now uses the file system ioctls for switching off atime,
compression, and copy-on-write of the journal directory of the
the systemd-journald (bnc#838475)
- Let us build require the package config for libpcre (bnc#853293)
-------------------------------------------------------------------
Sat Nov 30 08:16:02 UTC 2013 - arvidjaar@gmail.com
- Add patch
0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch
Make sure emergency shell is not killed by attempt to start another unit
(bnc#852021). Backported from d420282b28f50720e233ccb1c02547c562195653.
- Add patch
make-emergency.service-conflict-with-syslog.socket.patch
Previous patch did not fix problem if syslog connection request came
after emergency shell was already started. So forcibly stop syslog.socket
when starting emergency.service. (bnc#852232)
-------------------------------------------------------------------
Thu Nov 28 10:25:58 UTC 2013 - lbsousajr@gmail.com
- Add U_logind_revert_lazy_session_activation_on_non_vt_seats.patch
* See: http://cgit.freedesktop.org/systemd/systemd/commit/?id=3fdb2494c1e24c0a020f5b54022d2c751fd26f50
-------------------------------------------------------------------
Tue Nov 26 15:12:58 UTC 2013 - werner@suse.de
- Add patch
1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
to avoid (xdg-)su to set XDG_RUNTIME_DIR to the original user and
avoid that e.g. pulseaudio will create /run/user/<pid>/pulse owned
by root (bnc#852015)
-------------------------------------------------------------------
Thu Nov 21 12:27:11 UTC 2013 - werner@suse.de
- Add patch
1011-check-4-valid-kmsg-device.patch
to avoid a busy systemd-journald (bnc#851393)
-------------------------------------------------------------------
Wed Nov 6 09:42:05 UTC 2013 - werner@suse.de
- Add patch
1010-do-not-install-sulogin-unit-with-poweroff.patch
that is do not install console-shell.service in any system target
as this will cause automatic poweroff at boot (bnc#849071)
-------------------------------------------------------------------
Mon Nov 4 15:23:02 UTC 2013 - werner@suse.de
- Add upstream patch
0001-analyze-set-text-on-side-with-most-space.patch
to place the text on the side with most space
-------------------------------------------------------------------
Fri Oct 25 12:12:48 UTC 2013 - werner@suse.de
- Add upstream patch
0001-analyze-set-white-background.patch
to make SVG output of systemd analyze readable
-------------------------------------------------------------------
Mon Oct 21 09:27:36 UTC 2013 - werner@suse.de
- Add patch
1009-make-xsltproc-use-correct-ROFF-links.patch
to have valid ROFF links in manual pages working again (bnc#842844)
-------------------------------------------------------------------
Tue Oct 15 13:50:52 CEST 2013 - fcrozat@suse.com
- Add
0001-gpt-auto-generator-exit-immediately-if-in-container.patch:
don't start gpt auto-generator in container (git).
- Add
0001-manager-when-verifying-whether-clients-may-change-en.patch:
fix reload check in selinux case (git).
- Add 0001-logind-fix-bus-introspection-data-for-TakeControl.patch:
fix introspection for TakeControl (git).
- Add 0001-mount-check-for-NULL-before-reading-pm-what.patch: fix
crash when parsing some incorrect unit (git).
- Add
0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch:
Fix udev rules parsing (git).
- Add
0001-systemd-serialize-deserialize-forbid_restart-value.patch:
Fix incorrect deserialization for forbid_restart (git).
- Add
0001-core-unify-the-way-we-denote-serialization-attribute.patch:
Ensure forbid_restart is named like other attributes (git).
- Add 0001-journald-fix-minor-memory-leak.patch: fix memleak in
journald (git).
- Add
0001-do-not-accept-garbage-from-acpi-firmware-performance.patch:
Improve ACPI firmware performance parsing (git).
- Add
0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch:
Fix journal rotation (git).
- Add
0001-login-fix-invalid-free-in-sd_session_get_vt.patch:
Fix memory corruption in sd_session_get_vt (git).
- Add 0001-login-make-sd_session_get_vt-actually-work.patch: Ensure
sd_session_get_vt returns correct value (git).
- Add 0001-Never-call-qsort-on-potentially-NULL-arrays.patch: Don't
call qsort on NULL arrays (git).
- Add 0001-dbus-common-avoid-leak-in-error-path.patch: Fix memleak
in dbus-common code (git).
- Add 0001-drop-ins-check-return-value.patch: Fix return value for
drop-ins checks (git).
- Add 0001-shared-util-Fix-glob_extend-argument.patch: Fix
glob_extend argument (git).
- Add 0001-Fix-bad-assert-in-show_pid_array.patch: Fix bad assert
in show_pid_array (git).
-------------------------------------------------------------------
Thu Oct 3 08:43:51 UTC 2013 - fcrozat@suse.com
- Add 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch:
fix acpi memleak.
- Add
0002-fix-lingering-references-to-var-lib-backlight-random.patch:
fix invalid path in documentation.
- Add
0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch:
fix invalid memory free.
- Add 0004-systemctl-fix-name-mangling-for-sysv-units.patch: fix
name mangling for sysv units.
- Add
0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch:
fix OOM handling.
- Add 0006-journald-add-missing-error-check.patch: add missing
error check.
- Add 0007-bus-fix-potentially-uninitialized-memory-access.patch:
fix uninitialized memory access.
- Add 0008-dbus-fix-return-value-of-dispatch_rqueue.patch: fix
return value.
- Add 0009-modules-load-fix-error-handling.patch: fix error
handling.
- Add 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch:
fix incorrect memory access.
- Add 0011-strv-don-t-access-potentially-NULL-string-arrays.patch:
fix incorrect memory access.
- Add
0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch:
fix invalid pointer.
- Add
0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch:
fix permission on /run/log/journal.
- Add
0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch:
order remote mount points properly before remote-fs.target.
-------------------------------------------------------------------
Wed Oct 2 14:10:41 UTC 2013 - hrvoje.senjan@gmail.com
- Explicitly require pam-config for %post of the main package
-------------------------------------------------------------------
Wed Oct 2 08:03:30 UTC 2013 - fcrozat@suse.com
- Release v208:
+ logind gained support for facilitating privileged input and drm
devices access for unprivileged clients (helps Wayland /
kmscon).
+ New kernel command line luks.options= allows to specify LUKS
options, when used with luks.uuid=
+ tmpfileS.d snippets can uses specifier expansion in path names
(%m, %b, %H, %v).
+ New tmpfiles.d command "m" introduced to change
owner/group/access mode of a file/directory only if it exists.
+ MemorySoftLimit= cgroup settings is no longer supported
(underlying kernel cgroup attribute will disappear in the
future).
+ memeory.use_hierarchy cgroup attribute is enabled for all
cgroups systemd creates in memory cgroup hierarchy.
+ New filed _SYSTEMD_SLICE= is logged in journal messages related
to a slice.
+ systemd-journald will no longer adjust the group of journal
files it creates to "systemd-journal" group. Permissions and
owernship is adjusted when package is upgraded.
+ Backlight and random seed files are now stored in
/var/lib/systemd.
+ Boot time performance measurements included ACPI 5.0 FPDT
informations if available.
- Drop merged patches:
0001-cgroup-add-the-missing-setting-of-variable-s-value.patch,
0002-cgroup-correct-the-log-information.patch,
0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch,
0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch,
0005-core-cgroup-first-print-then-free.patch,
0006-swap-fix-reverse-dependencies.patch,
0008-swap-create-.wants-symlink-to-auto-swap-devices.patch,
0009-polkit-Avoid-race-condition-in-scraping-proc.patch,
Fix-timeout-when-stopping-Type-notify-service.patch,
set-ignoreonisolate-noauto-cryptsetup.patch,
0001-Fix-buffer-overrun-when-enumerating-files.patch,
0007-libudev-fix-move_later-comparison.patch.
- Refresh patches
remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch,
delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch,
handle-root_uses_lang-value-in-etc-sysconfig-language.patch,
handle-SYSTEMCTL_OPTIONS-environment-variable.patch,
Revert-service-drop-support-for-SysV-scripts-for-the-early.patch.
- Own more ghost files.
- Do not run pam-config in systemd-mini %post.
- Add after-local.service to run after.local late during the boot
process (bnc#778715).
-------------------------------------------------------------------
Tue Oct 1 17:09:01 UTC 2013 - fcrozat@suse.com
- Update Fix-timeout-when-stopping-Type-notify-service.patch with
upstream fix.
- No longer start ask-password-wall, was causing too much spam on
terminals (bnc#747783).
-------------------------------------------------------------------
Mon Sep 30 15:42:45 UTC 2013 - fcrozat@suse.com
- Add set-ignoreonisolate-noauto-cryptsetup.patch: ensure noauto
encrypted mounts survives runlevel changes (bnc#843085).
- Add 0001-Fix-buffer-overrun-when-enumerating-files.patch: fix
logind crash when /run/systemd/sessions was too big (bnc#840055,
initial fix from hpj@suse.com).
- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to
only check for /boot/sysctl.conf-<uname -r> presence.
- Add service wrapper for after.local (bnc#778715).
-------------------------------------------------------------------
Fri Sep 27 15:47:15 UTC 2013 - fcrozat@suse.com
- Update use-usr-sbin-sulogin-for-emergency-service.patch to apply
to all services using sulogin and remove generated files from
upstream tarball (bnc#841398).
-------------------------------------------------------------------
Mon Sep 23 13:09:06 UTC 2013 - arvidjaar@gmail.com
- Fix-timeout-when-stopping-Type-notify-service.patch
Make sure MAINPID is watched when it becomes known (bnc#841544)
-------------------------------------------------------------------
Mon Sep 23 13:11:08 CEST 2013 - fcrozat@suse.com
- Remove output and error redirection to /dev/null in install
script, it might help tracing pam related issue (bnc#841573).
-------------------------------------------------------------------
Thu Sep 19 16:37:03 CEST 2013 - fcrozat@suse.com
- Move symlink migration trigger to post (bnc#821800).
-------------------------------------------------------------------
Wed Sep 18 23:55:09 UTC 2013 - crrodriguez@opensuse.org
- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch
VUL-0: polkit: process subject race condition [bnc#835827]
CVE-2013-4288
-------------------------------------------------------------------
Wed Sep 18 23:45:54 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-ima as the openSUSE kernel
does not support IMA (CONFIG_IMA is not set)
-------------------------------------------------------------------
Wed Sep 18 23:40:27 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-smack as the openSUSE kernel
does not support smack (CONFIG_SECURITY_SMACK is not set)
-------------------------------------------------------------------
Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com
- Don't use a trigger to create symlink for sysctl.conf, always run
the test on %post (bnc#840864).
- Update sysctl-handle-boot-sysctl.conf-kernel_release.patch to
ensure /boot is mounted before reading /boot/sysctl.conf-*
(bnc#809420).
-------------------------------------------------------------------
Mon Sep 16 17:41:24 UTC 2013 - crrodriguez@opensuse.org
- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
really fixes the swap unit problem mentioned in previous
- 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
really fixes the swap unit problem mentioned in previous
commit & the opensuse-factory mailing list.
-------------------------------------------------------------------
Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org
- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch
- 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch
missing important check on return value.
- 0002-cgroup-correct-the-log-information.patch fix misleading
log information.
@ -18,7 +480,7 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org
should fail if write fails.
- 0005-core-cgroup-first-print-then-free.patch use-after-free
will trigger if there is an error condition.
- 0006-swap-fix-reverse-dependencies.patch reported in
- 0006-swap-fix-reverse-dependencies.patch reported in
opensuse-factory list, topic "swap isn't activated"
- 0007-libudev-fix-move_later-comparison.patch libudev
invalid usage of "move_later".
@ -27,10 +489,10 @@ Sat Sep 14 19:01:24 UTC 2013 - crrodriguez@opensuse.org
Sat Sep 14 06:52:32 UTC 2013 - crrodriguez@opensuse.org
- while testing this new release I get in the logs ocassionally
at boot "systemd[1]: Failed to open private bus connection:
Failed to connect to socket /var/run/dbus/system_bus_socket:
at boot "systemd[1]: Failed to open private bus connection:
Failed to connect to socket /var/run/dbus/system_bus_socket:
No such file or directory" indeed DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
is defined to /var/run/dbus/system_bus_socket instead of
is defined to /var/run/dbus/system_bus_socket instead of
/run/dbus/system_bus_socket and that does not fly when /var/run
is not yet available. (systemd-dbus-system-bus-address.patch)
@ -42,10 +504,10 @@ Fri Sep 13 07:47:40 UTC 2013 - fcrozat@suse.com
-------------------------------------------------------------------
Fri Sep 13 03:14:36 UTC 2013 - crrodriguez@opensuse.org
- version 207, distribution specific changes follow, for overall
- version 207, distribution specific changes follow, for overall
release notes see NEWS.
- Fixed:
* Failed at step PAM spawning /usr/lib/systemd/systemd:
- Fixed:
* Failed at step PAM spawning /usr/lib/systemd/systemd:
Operation not permitted
* Fix shutdown hang "a stop job is running for Session 1 of user root"
that was reported in opensuse-factory list.
@ -152,7 +614,7 @@ Fri Jul 5 02:17:19 UTC 2013 - crrodriguez@opensuse.org
-------------------------------------------------------------------
Fri Jul 5 02:09:55 UTC 2013 - crrodriguez@opensuse.org
- fix broken symlink, service is called systemd-random-seed now.
- fix broken symlink, service is called systemd-random-seed now.
-------------------------------------------------------------------
Thu Jul 4 10:20:23 CEST 2013 - fcrozat@suse.com
@ -287,13 +749,13 @@ Fri Jun 21 12:40:27 UTC 2013 - rmilasan@suse.com
- Automatically online CPUs/Memory on CPU/Memory hotplug add events
(bnc#703100, fate#311831).
add: 1008-physical-hotplug-cpu-and-memory.patch
add: 1008-physical-hotplug-cpu-and-memory.patch
-------------------------------------------------------------------
Wed Jun 19 08:44:06 UTC 2013 - mhrusecky@suse.com
- Dropped backward compatibility
- Added check for upstream rpm macros changes
- Added check for upstream rpm macros changes
-------------------------------------------------------------------
Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com
@ -303,7 +765,7 @@ Mon Jun 18 12:13:25 UTC 2013 - mhrusecky@suse.com
-------------------------------------------------------------------
Tue Jun 18 00:33:10 UTC 2013 - crrodriguez@opensuse.org
- 0001-journal-letting-interleaved-seqnums-go.patch and
- 0001-journal-letting-interleaved-seqnums-go.patch and
0002-journal-remember-last-direction-of-search-and-keep-o.patch
fix possible infinite loops in the journal code, related to
bnc #817778
@ -340,8 +802,8 @@ Tue Jun 11 02:29:49 UTC 2013 - crrodriguez@opensuse.org
- 0004-journald-DO-recalculate-the-ACL-mask-but-only-if-it-.patch
fixes :
* systemd-journald[347]: Failed to set ACL on
/var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal,
* systemd-journald[347]: Failed to set ACL on
/var/log/journal/11d90b1c0239b5b2e38ed54f513722e3/user-1000.journal,
ignoring: Invalid argument
- 006-systemctl-core-allow-nuking-of-symlinks-to-removed-u.patch
systemctl disable should remove dangling symlinks.
@ -403,7 +865,7 @@ support has been removed from the kernel.
fixed in systemd v199, commit 89d09e1b5c65a2d97840f682e0932c8bb499f166
- Apply rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
only on ARM, patch rejected upstream because is too generic.
- no such define TARGET_SUSE exists but it is used in
- no such define TARGET_SUSE exists but it is used in
Revert-service-drop-support-for-SysV-scripts-for-the-early.patch
use HAVE_SYSV_COMPAT instead.
@ -462,7 +924,7 @@ Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com
- Rename remaning udev patches (clean-up).
- Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at
boot time not from udev (bnc#761109).
boot time not from udev (bnc#761109).
- Drop unused patches:
1001-Reinstate-TIMEOUT-handling.patch
1005-udev-fix-sg-autoload-regression.patch
@ -490,7 +952,7 @@ Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com
-------------------------------------------------------------------
Sun Apr 21 22:24:15 UTC 2013 - crrodriguez@opensuse.org
- Fix packaging error, there is no syslog.target anymore
- Fix packaging error, there is no syslog.target anymore
do not pretend there is one.
-------------------------------------------------------------------
@ -531,14 +993,14 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com
from an indexed database. %udev_hwdb_update macro should be
used by packages adding entries to this database.
+ Journal gained support for "Message Catalog", indexed database
to link up additional information with journal entries.
to link up additional information with journal entries.
%journal_catalog_update macro should be used by packages adding
%entries to this database.
+ "age" field for tmpfiles entries can be set to 0, forcing
removal of files matching this entry.
+ coredumpctl gained "gdb" verb to invoke gdb on selected
coredump.
+ New rpm macros has been added: %udev_rules_update(),
+ New rpm macros has been added: %udev_rules_update(),
%_udevhwdbdir, %_udevrulesdir, %_journalcatalogdir,
%_tmpfilesdir, %_sysctldir.
+ In service files, %U can be used for configured user name of
@ -562,7 +1024,7 @@ Fri Apr 12 16:58:31 UTC 2013 - fcrozat@suse.com
(normal clean-up with tmpfiles is still done in addition to
this though).
+ Resource limits (as exposed by cgroup controlers) can be
controlled dynamically at runtime for all units, using
controlled dynamically at runtime for all units, using
"systemctl set-cgroup-attr foobar.server cgroup.attribute
value". Those settings are stored persistenly on disk.
+ systemd-vconsole-setup will now copy all fonts settings to all
@ -696,14 +1158,14 @@ Thu Mar 28 09:24:43 UTC 2013 - rmilasan@suse.com
- udev: ensure that the network interfaces are renamed even if they
exist (bnc#809843).
add: 1027-udev-always-rename-network.patch
add: 1027-udev-always-rename-network.patch
-------------------------------------------------------------------
Wed Mar 20 10:14:59 UTC 2013 - rmilasan@suse.com
- udev: re-add persistent network rules (bnc#809843).
add: 1026-re-add-persistent-net.patch
- rebase all patches, ensure that they apply properly.
- rebase all patches, ensure that they apply properly.
-------------------------------------------------------------------
Thu Feb 21 14:45:12 UTC 2013 - fcrozat@suse.com
@ -728,7 +1190,7 @@ Tue Feb 19 09:51:18 UTC 2013 - rmilasan@suse.com
- udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer
add: 1024-udev-usb_id-parse-only-size-bytes-of-the-descriptors.patch
- udev: expose new ISO9660 properties from libblkid
add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch
add: 1025-udev-expose-new-ISO9660-properties-from-libblkid.patch
-------------------------------------------------------------------
Mon Feb 18 09:27:05 UTC 2013 - jengelh@inai.de
@ -763,7 +1225,7 @@ Wed Feb 13 11:34:06 UTC 2013 - rmilasan@suse.com
- udev: use unique names for temporary files created in /dev.
add: 1022-udev-use-unique-names-for-temporary-files-created-in.patch
- cdrom_id: add data track count for bad virtual drive.
add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
add: 1023-cdrom_id-add-data-track-count-for-bad-virtual-drive.patch
-------------------------------------------------------------------
Tue Feb 12 09:16:23 UTC 2013 - rmilasan@suse.com
@ -785,7 +1247,7 @@ Fri Feb 1 16:27:45 UTC 2013 - fcrozat@suse.com
Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com
- udev: Fix device matching in the accelerometer
add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch
add: 1019-udev-Fix-device-matching-in-the-accelerometer.patch
- keymap: add aditional support for some keyboard keys
add: 1018-keymap-add-aditional-support.patch
- journalctl: require argument for --priority
@ -794,7 +1256,7 @@ Tue Jan 29 13:32:30 UTC 2013 - rmilasan@suse.com
libudev-validate-argument-udev_enumerate_new.patch
kmod-fix-builtin-typo.patch
- rename udev-root-symlink.service to systemd-udev-root-symlink.service.
- fix in udev package missing link in basic.target.wants for
- fix in udev package missing link in basic.target.wants for
systemd-udev-root-symlink.service
-------------------------------------------------------------------
@ -926,7 +1388,7 @@ Wed Jan 9 09:42:50 UTC 2013 - rmilasan@suse.com
add: 1014-udev-fix-whitespace.patch
- udev: properly handle symlink removal by 'change' event
add: 1015-udev-properly-handle-symlink-removal-by-change-event.patch
- udev: builtin - do not fail builtin initialization if one of
- udev: builtin - do not fail builtin initialization if one of
them returns an error
add: 1016-udev-builtin-do-not-fail-builtin-initialization-if-o.patch
- udev: use usec_t and now()
@ -938,7 +1400,7 @@ Tue Jan 8 12:47:43 UTC 2013 - rmilasan@suse.com
- udevd: add missing ':' to getopt_long 'e'.
add: 1007-udevd-add-missing-to-getopt_long-e.patch
- clean up systemd.spec, make it easy to see which are udev and
systemd patches.
systemd patches.
- make 'reload' and 'force-reload' LSB compliant (bnc#793936).
-------------------------------------------------------------------
@ -946,8 +1408,8 @@ Tue Dec 11 00:22:50 UTC 2012 - crrodriguez@opensuse.org
- detect-btrfs-ssd.patch: Fix btrfs detection on SSD.
- timedated-donot-close-bogus-dbus-connection.patch: Avoid
closing an non-existent dbus connection and getting assertion
failures.
closing an non-existent dbus connection and getting assertion
failures.
-------------------------------------------------------------------
Mon Dec 10 14:22:21 UTC 2012 - coolo@suse.com
@ -980,7 +1442,7 @@ Tue Dec 4 16:51:32 UTC 2012 - fcrozat@suse.com
-------------------------------------------------------------------
Thu Nov 22 14:22:00 UTC 2012 - rmilasan@suse.com
- Fix creation of /dev/root link.
- Fix creation of /dev/root link.
-------------------------------------------------------------------
Tue Nov 20 18:25:49 CET 2012 - fcrozat@suse.com
@ -1139,7 +1601,7 @@ Thu Oct 4 11:23:42 UTC 2012 - fcrozat@suse.com
+ Optional journal gateway daemon
(systemd-journal-gatewayd.service) to access journal via HTTP
and JSON. Use "wget http://localhost:19531/entries" to get
/var/log/messages compatible format and
/var/log/messages compatible format and
'curl -H"Accept: application/json"
http://localhost:19531/entries' for JSON formatted content.
HTML5 static page is also available as explained on
@ -1369,7 +1831,7 @@ Thu Apr 19 10:07:47 UTC 2012 - fcrozat@suse.com
-------------------------------------------------------------------
Tue Apr 3 09:37:09 UTC 2012 - dvaleev@suse.com
- apply ppc patch to systemd-gtk too (fixes build)
- apply ppc patch to systemd-gtk too (fixes build)
-------------------------------------------------------------------
Thu Mar 22 08:47:36 UTC 2012 - fcrozat@suse.com
@ -1451,7 +1913,7 @@ Sun Feb 19 07:56:05 UTC 2012 - jengelh@medozas.de
-------------------------------------------------------------------
Fri Feb 17 09:22:50 UTC 2012 - tittiatcoke@gmail.com
- Enable Plymouth integration.
- Enable Plymouth integration.
* Bootsplash related files will be moved to the bootsplash
package
@ -1502,7 +1964,7 @@ Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com
property.
+ Rudimentary service watchdog support (not complete)
+ Improve bootcharts, by immediatly changing argv[0] after
forking to to reflect which process will be executed.
forking to to reflect which process will be executed.
+ Various bug fixes.
- Add remote-fs-after-network.patch and update insserv patch:
ensure remote-fs-pre.target is enabled and started before network
@ -1561,7 +2023,7 @@ Wed Jan 25 10:37:06 UTC 2012 - fcrozat@suse.com
-------------------------------------------------------------------
Thu Jan 19 13:47:39 UTC 2012 - tittiatcoke@gmail.com
- Make the systemd journal persistent by creating the
- Make the systemd journal persistent by creating the
/var/log/journal directory
-------------------------------------------------------------------
@ -1571,8 +2033,8 @@ Wed Jan 18 09:03:51 UTC 2012 - tittiatcoke@gmail.com
- Bugfixes
- Implementation of a Journal Utility Library
- Implementation of a 128 Bit ID Utility Library
- 11 Patches integrated upstream
- Add systemd-syslog_away_early_on_shutdown.patch: make sure
- 11 Patches integrated upstream
- Add systemd-syslog_away_early_on_shutdown.patch: make sure
syslog socket goes away early during shutdown.
- Add listen.conf for rsyslog. This will ensure that it will still
work fine with rsyslog and the new journal.
@ -1850,7 +2312,7 @@ Wed Aug 3 07:11:33 UTC 2011 - aj@suse.de
* New PrivateNetwork= service setting which allows you to shut off
networking for a specific service (i.e. all routable network
interfaces will disappear for that service).
* Merged insserv-parsing.patch and bash-completion-restart.patch
* Merged insserv-parsing.patch and bash-completion-restart.patch
patches.
-------------------------------------------------------------------

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -21,9 +21,14 @@
%define udevpkgname udev
%define udev_major 1
%if 0%{?sles_version} == 0
%global with_bash_completion 1
%endif
%bcond_with bash_completion
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 207
Version: 208
Release: 0
Summary: A System and Session Manager
License: LGPL-2.1+
@ -68,6 +73,7 @@ BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(libmicrohttpd)
%endif
BuildRequires: pkgconfig(libpci) >= 3
BuildRequires: pkgconfig(libpcre)
%if ! 0%{?bootstrap}
BuildRequires: pkgconfig(libqrencode)
%endif
@ -83,6 +89,9 @@ Conflicts: kiwi
# the buildignore is important for bootstrapping
#!BuildIgnore: udev
Requires: %{udevpkgname} >= 172
%if %{with bash_completion}
Recommends: bash-completion
%endif
Requires: dbus-1 >= 1.4.0
Requires: kbd
Requires: kmod >= 14
@ -93,6 +102,9 @@ Requires: util-linux >= 2.21
Requires(post): coreutils
Requires(post): findutils
%endif
%if ! 0%{?bootstrap}
Requires(post): pam-config
%endif
Conflicts: filesystem < 11.5
Conflicts: mkinitrd < 2.7.0
Obsoletes: systemd-analyze < 201
@ -107,6 +119,8 @@ Source7: libgcrypt.m4
Source8: systemd-journald.init
Source9: nss-myhostname-config
Source10: macros.systemd.upstream
Source11: after-local.service
Source12: systemd-powerfail
Source1060: boot.udev
Source1061: write_dev_root_rule
@ -151,6 +165,7 @@ Patch40: sysctl-handle-boot-sysctl.conf-kernel_release.patch
# PATCH-FIX-OPENSUSE ensure-shortname-is-set-as-hostname-bnc-820213.patch bnc#820213 fcrozat@suse.com -- Do not set anything beyond first dot as hostname
Patch41: ensure-shortname-is-set-as-hostname-bnc-820213.patch
Patch42: systemd-pam_config.patch
# Upstream First - Policy:
# Never add any patches to this package without the upstream commit id
# in the patch. Any patches added here without a very good reason to make
@ -165,23 +180,96 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.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 systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run
# PATCH-FIX-OPENSUSE systemd-dbus-system-bus-address.patch always use /run/dbus not /var/run
Patch47: systemd-dbus-system-bus-address.patch
# PATCH-FIX-UPSTREAM 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch -- r must be set to the return value of previous call.
Patch48: 0001-cgroup-add-the-missing-setting-of-variable-s-value.patch
# PATCH-FIX-UPSTREAM 0002-cgroup-correct-the-log-information.patch -- fix misleading log information.
Patch49: 0002-cgroup-correct-the-log-information.patch
# PATCH-FIX-UPSTREAM 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch -- memory cgroup setting is wrong.
Patch50: 0003-cgroup-fix-incorrectly-setting-memory-cgroup.patch
# PATCH-FIX-UPSTREAM 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch -- systemd-random-seed-load should fail if write fails.
Patch51: 0004-random-seed-we-should-return-errno-of-failed-loop_wr.patch
# PATCH-FIX-UPSTREAM 0005-core-cgroup-first-print-then-free.patch -- fix use after free
Patch52: 0005-core-cgroup-first-print-then-free.patch
# PATCH-FIX-UPSTREAM 0006-swap-fix-reverse-dependencies.patch -- SWAP does not mount properly
Patch53: 0006-swap-fix-reverse-dependencies.patch
# PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units
Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
# PATCH-FIX-UPSTREAM 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch fcrozat@suse.com -- fix acpi memleak
Patch48: 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
# PATCH-FIX-UPSTREAM 0002-fix-lingering-references-to-var-lib-backlight-random.patch fcrozat@suse.com -- fix invalid path in documentation
Patch49: 0002-fix-lingering-references-to-var-lib-backlight-random.patch
# PATCH-FIX-UPSTREAM 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch fcrozat@suse.com -- fix invalid memory free
Patch50: 0003-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
# PATCH-FIX-UPSTREAM 0004-systemctl-fix-name-mangling-for-sysv-units.patch fcrozat@suse.com -- fix name mangling for sysv units
Patch51: 0004-systemctl-fix-name-mangling-for-sysv-units.patch
# PATCH-FIX-UPSTREAM 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch fcrozat@suse.com -- fix OOM handling
Patch52: 0005-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
# PATCH-FIX-UPSTREAM 0006-journald-add-missing-error-check.patch fcrozat@suse.com -- add missing error check
Patch53: 0006-journald-add-missing-error-check.patch
# PATCH-FIX-UPSTREAM 0007-bus-fix-potentially-uninitialized-memory-access.patch fcrozat@suse.com -- fix uninitialized memory access
Patch54: 0007-bus-fix-potentially-uninitialized-memory-access.patch
# PATCH-FIX-UPSTREAM 0008-dbus-fix-return-value-of-dispatch_rqueue.patch fcrozat@suse.com -- fix return value
Patch55: 0008-dbus-fix-return-value-of-dispatch_rqueue.patch
# PATCH-FIX-UPSTREAM 0009-modules-load-fix-error-handling.patch fcrozat@suse.com -- fix error handling
Patch56: 0009-modules-load-fix-error-handling.patch
# PATCH-FIX-UPSTREAM 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- fix incorrect memory access
Patch57: 0010-efi-never-call-qsort-on-potentially-NULL-arrays.patch
# PATCH-FIX-UPSTREAM 0011-strv-don-t-access-potentially-NULL-string-arrays.patch fcrozat@suse.com -- fix incorrect memory access
Patch58: 0011-strv-don-t-access-potentially-NULL-string-arrays.patch
# PATCH-FIX-UPSTREAM 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch fcrozat@suse.com -- fix invalid pointer
Patch59: 0012-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
# PATCH-FIX-UPSTREAM 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch fcrozat@suse.com -- fix permission on /run/log/journal
Patch60: 0014-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
# PATCH-FIX-UPSTREAM 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch fcrozat@suse.com -- order remote mount points properly before remote-fs.target
Patch61: 0001-systemd-order-remote-mounts-from-mountinfo-before-re.patch
# PATCH-FIX-UPSTREAM 0001-gpt-auto-generator-exit-immediately-if-in-container.patch fcrozat@suse.com -- don't start gpt auto-generator in container
Patch62: 0001-gpt-auto-generator-exit-immediately-if-in-container.patch
# PATCH-FIX-UPSTREAM 0001-manager-when-verifying-whether-clients-may-change-en.patch fcrozat@suse.com -- fix reload check in selinux case
Patch63: 0001-manager-when-verifying-whether-clients-may-change-en.patch
# PATCH-FIX-UPSTREAM 0001-logind-fix-bus-introspection-data-for-TakeControl.patch fcrozat@suse.com -- fix introspection for TakeControl
Patch64: 0001-logind-fix-bus-introspection-data-for-TakeControl.patch
# PATCH-FIX-UPSTREAM 0001-mount-check-for-NULL-before-reading-pm-what.patch fcrozat@suse.com -- fix crash when parsing some incorrect unit
Patch65: 0001-mount-check-for-NULL-before-reading-pm-what.patch
# PATCH-FIX-UPSTREAM 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch fcrozat@suse.com -- Fix udev rules parsing
Patch66: 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
# PATCH-FIX-UPSTREAM 0001-systemd-serialize-deserialize-forbid_restart-value.patch fcrozat@suse.com -- Fix incorrect deserialization for forbid_restart
Patch67: 0001-systemd-serialize-deserialize-forbid_restart-value.patch
# PATCH-FIX-UPSTREAM 0001-core-unify-the-way-we-denote-serialization-attribute.patch fcrozat@suse.com -- Ensure forbid_restart is named like other attributes
Patch68: 0001-core-unify-the-way-we-denote-serialization-attribute.patch
# PATCH-FIX-UPSTREAM 0001-journald-fix-minor-memory-leak.patch fcrozat@suse.com -- fix memleak in journald
Patch69: 0001-journald-fix-minor-memory-leak.patch
# PATCH-FIX-UPSTREAM 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch fcrozat@suse.com -- Improve ACPI firmware performance parsing
Patch70: 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch
# PATCH-FIX-UPSTREAM 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch fcrozat@suse.com -- Fix journal rotation
Patch71: 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch
# PATCH-FIX-UPSTREAM 0001-login-fix-invalid-free-in-sd_session_get_vt.patchfcrozat@suse.com -- Fix memory corruption in sd_session_get_vt
Patch72: 0001-login-fix-invalid-free-in-sd_session_get_vt.patch
# PATCH-FIX-UPSTREAM 0001-login-make-sd_session_get_vt-actually-work.patch fcrozat@suse.com -- Ensure sd_session_get_vt returns correct value
Patch73: 0001-login-make-sd_session_get_vt-actually-work.patch
# PATCH-FIX-UPSTREAM 0001-Never-call-qsort-on-potentially-NULL-arrays.patch fcrozat@suse.com -- Don't call qsort on NULL arrays
Patch74: 0001-Never-call-qsort-on-potentially-NULL-arrays.patch
# PATCH-FIX-UPSTREAM 0001-dbus-common-avoid-leak-in-error-path.patch fcrozat@suse.com -- Fix memleak in dbus-common code
Patch75: 0001-dbus-common-avoid-leak-in-error-path.patch
# PATCH-FIX-UPSTREAM 0001-drop-ins-check-return-value.patch fcrozat@suse.com -- Fix return value for drop-ins checks
Patch76: 0001-drop-ins-check-return-value.patch
# PATCH-FIX-UPSTREAM 0001-shared-util-Fix-glob_extend-argument.patch fcrozat@suse.com -- Fix glob_extend argument
Patch77: 0001-shared-util-Fix-glob_extend-argument.patch
# PATCH-FIX-UPSTREAM 0001-Fix-bad-assert-in-show_pid_array.patch fcrozat@suse.com -- Fix bad assert in show_pid_array
Patch78: 0001-Fix-bad-assert-in-show_pid_array.patch
# PATCH-FIX-UPSTREAM 0001-analyze-set-white-background.patch werner@suse.com -- Make background of systemd-analyze SVG white
Patch79: 0001-analyze-set-white-background.patch
# PATCH-FIX-UPSTREAM 0001-analyze-set-text-on-side-with-most-space.patch werner@suse.com -- Place the text on the side with most space
Patch80: 0001-analyze-set-text-on-side-with-most-space.patch
# PATCH-FIX-UPSTREAM 0001-logind-garbage-collect-stale-users.patch -- Don't stop a running user manager from garbage-collecting the user.
Patch81: 0001-logind-garbage-collect-stale-users.patch
# PATCH-FIX-UPSTREAM analyze-fix-crash-in-command-line-parsing.patch fcrozat@suse.com bnc#859365 -- Fix crash in systemd-analyze
Patch82: analyze-fix-crash-in-command-line-parsing.patch
# PATCH-FIX-UPSTREAM 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch -- Prevent accidental kill of emergency shell (bnc#852021)
Patch83: 0001-core-replace-OnFailureIsolate-setting-by-a-more-gene.patch
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
# PATCH-FIX-UPSTREAM 0001-upstream-systemctl-halt-reboot-error-handling.patch
Patch85: 0001-upstream-systemctl-halt-reboot-error-handling.patch
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
Patch86: 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
# PATCH-FIX-UPSTREAM 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch -- Allow sending SIGTERM to main PID only (bnc#841544)
Patch87: 0001-core-introduce-new-KillMode-mixed-which-sends-SIGTER.patch
# PATCH-FIX-UPSTREAM 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch -- Allow using it with PAM enabled services (bnc#841544)
Patch88: 0002-service-allow-KillMode-mixed-in-conjunction-with-PAM.patch
# PATCH-FIX-UPSTREAM 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch -- Make sure final SIGKILL actually kills everything (bnc#841544)
Patch89: 0003-core-make-sure-to-always-go-through-both-SIGTERM-and.patch
# PATCH-FIX-SUSE 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
Patch90: 0001-On_s390_con3270_disable_ANSI_colour_esc.patch
# PATCH-FIX-SUSE plymouth-quit-and-wait-for-emergency-service.patch -- Make sure that no plymouthd is locking the tty
Patch91: plymouth-quit-and-wait-for-emergency-service.patch
# udev patches
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
@ -198,8 +286,28 @@ Patch1006: 1006-udev-always-rename-network.patch
Patch1007: 1007-physical-hotplug-cpu-and-memory.patch
# PATCH-FIX-OPENSUSE 1008-add-msft-compability-rules.patch
Patch1008: 1008-add-msft-compability-rules.patch
# PATCH-FIX-UPSTREAM libudev: fix move_later comparison
Patch1009: 0007-libudev-fix-move_later-comparison.patch
# PATCH-FIX-OPENSUSE 1009-make-xsltproc-use-correct-ROFF-links.patch -- Make ROFF links working again in manual pages (bnc#842844)
Patch1009: 1009-make-xsltproc-use-correct-ROFF-links.patch
# PATCH-FIX-OPENSUSE 1010-do-not-install-sulogin-unit-with-poweroff.patch -- Avoid installing console-shell.service (bnc#849071)
Patch1010: 1010-do-not-install-sulogin-unit-with-poweroff.patch
# PATCH-FIX-OPENSUSE 1011-check-4-valid-kmsg-device.patch -- Avoid busy systemd-journald (bnc#851393)
Patch1011: 1011-check-4-valid-kmsg-device.patch
# PATCH-FIX-UPSTREAM 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
Patch1012: 1012-pam_systemd_do_override_XDG_RUNTIME_DIR_of_the_original_user.patch
# PATCH-FIX-UPSTREAM U_logind_revert_lazy_session_activation_on_non_vt_seats.patch
Patch1013: U_logind_revert_lazy_session_activation_on_non_vt_seats.patch
# PATCH-FIX-OPENSUSE 1014-journald-with-journaling-FS.patch
Patch1014: 1014-journald-with-journaling-FS.patch
# PATCH-FIX-UPSTREAM build-sys-make-multi-seat-x-optional.patch
Patch1015: build-sys-make-multi-seat-x-optional.patch
# PATCH-FIX-SUSE 1016-support-powerfail-with-powerstatus.patch
Patch1016: 1016-support-powerfail-with-powerstatus.patch
# PATCH-FIX-UPSTREAM 1017-skip-native-unit-handling-if-sysv-already-handled.patch
Patch1017: 1017-skip-native-unit-handling-if-sysv-already-handled.patch
# PATCH-FIX-SUSE 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
Patch1018: 1018-Make-LSB-Skripts-know-about-Required-and-Should.patch
# PATCH-FIX-SUSE 1019-make-completion-smart-to-be-able-to-redirect.patch
Patch1019: 1019-make-completion-smart-to-be-able-to-redirect.patch
%description
Systemd is a system and service manager, compatible with SysV and LSB
@ -243,7 +351,7 @@ Summary: A rule-based device node and kernel event manager
License: GPL-2.0
Group: System/Kernel
Url: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
PreReq: /bin/pidof /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq
PreReq: /bin/rm /usr/bin/stat %insserv_prereq %fillup_prereq /usr/sbin/groupadd /usr/bin/getent /sbin/mkinitrd /usr/bin/sg_inq
Requires(post): lib%{udevpkgname}%{udev_major}
Conflicts: systemd < 39
Conflicts: aaa_base < 11.5
@ -436,6 +544,43 @@ cp %{SOURCE7} m4/
%patch52 -p1
%patch53 -p1
%patch54 -p1
%patch55 -p1
%patch56 -p1
%patch57 -p1
%patch58 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
%patch69 -p1
%patch70 -p1
%patch71 -p1
%patch72 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch77 -p1
%patch78 -p1
%patch79 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch86 -p1
%patch87 -p1
%patch88 -p1
%patch89 -p1
%patch90 -p1
%patch91 -p1
# udev patches
%patch1001 -p1
@ -449,6 +594,19 @@ cp %{SOURCE7} m4/
%patch1008 -p1
%endif
%patch1009 -p1
%patch1010 -p1
%patch1011 -p1
%patch1012 -p1
%patch1013 -p1
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
%patch1018 -p1
%patch1019 -p1
# ensure generate files are removed
rm -f units/emergency.service
%build
autoreconf -fiv
@ -474,6 +632,11 @@ export V=1
--with-rc-local-script-path-start=/etc/init.d/boot.local \
--with-rc-local-script-path-stop=/etc/init.d/halt.local \
--with-debug-shell=/bin/bash \
--disable-smack \
--disable-ima \
%if 0%{?suse_version} > 1310
--disable-multi-seat-x \
%endif
CFLAGS="%{optflags}"
make %{?_smp_mflags}
@ -550,6 +713,9 @@ ln -s systemd-random-seed.service %{buildroot}/%{_prefix}/lib/systemd/system/ran
# don't mount /tmp as tmpfs for now
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
# don't enable wall ask password service, it spams every console (bnc#747783)
rm %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path
# create %{_libexecdir}/modules-load.d
mkdir -p %{buildroot}%{_libexecdir}/modules-load.d
cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf
@ -574,7 +740,7 @@ rm -f %{buildroot}/var/log/README
%endif
# legacy links
for f in loginctl journalctl ; do
for f in loginctl journalctl ; do
ln -s $f %{buildroot}%{_bindir}/systemd-$f
%if ! 0%{?bootstrap}
ln -s $f.1 %{buildroot}%{_mandir}/man1/systemd-$f.1
@ -611,6 +777,27 @@ cat << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/nocl
TTYVTDisallocate=no
EOF
# ensure after.local wrapper is called
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
# support for SIGPWR handling with /var/run/powerstatus of e.g. powerd
install -m 755 %{S:12} %{buildroot}/%{_prefix}/lib/systemd/
install -m 644 units/powerfail.service %{buildroot}/%{_prefix}/lib/systemd/system/
%if ! 0%{?bootstrap}
install -m 644 man/systemd-powerfail.service.8 %{buildroot}/%{_mandir}/man8/
%endif
# clean out some completions which requires bash-completion package
%if %{without bash_completion}
for c in %{buildroot}/%{_datadir}/bash-completion/completions/*
do
test -e "$c" || continue
grep -q _init_completion "$c" || continue
rm -vf "$c"
done
%endif
%fdupes -s %{buildroot}%{_mandir}
# packaged in systemd-rpm-macros
@ -621,12 +808,18 @@ getent group systemd-journal >/dev/null || groupadd -r systemd-journal || :
exit 0
%post
/usr/sbin/pam-config -a --systemd >/dev/null 2>&1 || :
%if ! 0%{?bootstrap}
/usr/sbin/pam-config -a --systemd || :
%endif
/sbin/ldconfig
[ -e /var/lib/random-seed ] && mv /var/lib/random-seed /var/lib/systemd/ > /dev/null || :
/usr/bin/systemd-machine-id-setup >/dev/null 2>&1 || :
/usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || :
/usr/bin/systemctl daemon-reexec >/dev/null 2>&1 || :
/usr/bin/journalctl --update-catalog >/dev/null 2>&1 || :
# Make sure new journal files
chgrp systemd-journal /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || :
chmod g+s /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || :
# Try to read default runlevel from the old inittab if it exists
if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then
@ -646,28 +839,29 @@ if [ "$1" -eq 1 ]; then
remote-fs.target >/dev/null 2>&1 || :
fi
%triggerpostun -- systemd < 194
# migrate any symlink which may refer to the old path
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target="/usr$(readlink $f)"
[ -f "$new_target" ] && ln -s -f $new_target $f || :
done
# since v207 /etc/sysctl.conf is no longer parsed, however
# backward compatibility is provided by /etc/sysctl.d/99-sysctl.conf
if [ ! -L /etc/sysctl.d/99-sysctl.conf -a -e /etc/sysctl.conf ]; then
/bin/ln -sf /etc/sysctl.conf /etc/sysctl.d/99-sysctl.conf || :
fi
# migrate any symlink which may refer to the old path
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target="/usr$(readlink $f)"
[ -f "$new_target" ] && ln -s -f $new_target $f || :
done
%postun
/sbin/ldconfig
if [ $1 -ge 1 ]; then
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
/usr/bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
fi
%if ! 0%{?bootstrap}
if [ $1 -eq 0 ]; then
/usr/sbin/pam-config -d --systemd >/dev/null 2>&1 || :
/usr/sbin/pam-config -d --systemd || :
fi
%endif
%preun
if [ $1 -eq 0 ]; then
@ -973,10 +1167,13 @@ exit 0
%dir /var/lib/systemd/sysv-convert
%dir /var/lib/systemd/migrated
%dir /var/lib/systemd/catalog
%ghost /var/lib/systemd/catalog/database
%dir /var/lib/systemd/coredump
%dir /usr/share/zsh
%dir /usr/share/zsh/site-functions
/usr/share/zsh/site-functions/*
%ghost /var/lib/systemd/backlight
%ghost /var/lib/systemd/random-seed
%files devel
%defattr(-,root,root,-)

View File

@ -3,8 +3,10 @@ Subject: use /usr/sbin/sulogin in emergency service
In current Factory sulogin is in /usr/sbin which makes it impossible
to enter emergency service.
--- systemd-206.orig/units/emergency.service.in
+++ systemd-206/units/emergency.service.in
Index: systemd-207/units/emergency.service.in
===================================================================
--- systemd-207.orig/units/emergency.service.in
+++ systemd-207/units/emergency.service.in
@@ -17,7 +17,7 @@ Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
@ -14,3 +16,29 @@ to enter emergency service.
ExecStopPost=@SYSTEMCTL@ --fail --no-block default
Type=idle
StandardInput=tty-force
Index: systemd-207/units/console-shell.service.m4.in
===================================================================
--- systemd-207.orig/units/console-shell.service.m4.in
+++ systemd-207/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-207/units/rescue.service.m4.in
===================================================================
--- systemd-207.orig/units/rescue.service.m4.in
+++ systemd-207/units/rescue.service.m4.in
@@ -18,7 +18,7 @@ Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.'
-ExecStart=-/sbin/sulogin
+ExecStart=-/usr/sbin/sulogin
ExecStopPost=-@SYSTEMCTL@ --fail --no-block default
Type=idle
StandardInput=tty-force