Hello community, here is the log from the commit of package systemd for openSUSE:Factory checked in at 2014-05-13 20:46:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/systemd (Old) and /work/SRC/openSUSE:Factory/.systemd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "systemd" Changes: -------- --- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes 2014-05-10 08:32:42.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes 2014-05-13 20:46:26.000000000 +0200 @@ -1,0 +2,35 @@ +Tue May 13 08:28:05 UTC 2014 - wer...@suse.de + +- Add patch log-target-null-instead-kmsg.patch from Thomas Blume + to enable the kernel developers to see a clean kmsg ring buffer + without any systemd/udev messages included (bnc#877021) + +------------------------------------------------------------------- +Mon May 12 13:35:25 UTC 2014 - wer...@suse.de + +- Add upstram patches for backlight + 0001-backlight-Avoid-restoring-brightness-to-an-unreadabl.patch + 0002-backlight-do-nothing-if-max_brightness-is-0.patch + 0003-backlight-unify-error-messages.patch + 0004-backlight-warn-if-kernel-exposes-backlight-device-wi.patch + 0005-backlight-handle-saved-brightness-exceeding-max-brig.patch + +------------------------------------------------------------------- +Mon May 12 13:28:20 UTC 2014 - wer...@suse.de + +- Add upstream patches + 0001-errno-make-sure-to-handle-the-3-errnos-that-are-alia.patch + 0002-udev-warn-when-name_to_handle_at-is-not-implemented.patch + 0003-analyze-fix-plot-with-bad-y-size.patch + 0004-job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch + 0005-job-always-add-waiting-jobs-to-run-queue-during-cold.patch + +------------------------------------------------------------------- +Mon May 12 12:25:13 UTC 2014 - rmila...@suse.com + +- Drop upstream-net_id-changes.patch and replace them with the correct + patches from upstream and their commits: + add: 1014-udev-update-net_id-comments.patch + add: 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch + +------------------------------------------------------------------- systemd.changes: same change Old: ---- upstream-net_id-changes.patch New: ---- 0001-backlight-Avoid-restoring-brightness-to-an-unreadabl.patch 0001-errno-make-sure-to-handle-the-3-errnos-that-are-alia.patch 0002-backlight-do-nothing-if-max_brightness-is-0.patch 0002-udev-warn-when-name_to_handle_at-is-not-implemented.patch 0003-analyze-fix-plot-with-bad-y-size.patch 0003-backlight-unify-error-messages.patch 0004-backlight-warn-if-kernel-exposes-backlight-device-wi.patch 0004-job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch 0005-backlight-handle-saved-brightness-exceeding-max-brig.patch 0005-job-always-add-waiting-jobs-to-run-queue-during-cold.patch 1014-udev-update-net_id-comments.patch 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch log-target-null-instead-kmsg.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ systemd-mini.spec ++++++ --- /var/tmp/diff_new_pack.MUrnLT/_old 2014-05-13 20:46:29.000000000 +0200 +++ /var/tmp/diff_new_pack.MUrnLT/_new 2014-05-13 20:46:29.000000000 +0200 @@ -407,6 +407,28 @@ Patch207: 0001-tmpfiles-fix-permissions-on-new-journal-files.patch # PATCH-FIX-SUSE Do not ignores option 'noauto' in /etc/crypttab (bnc#742774) Patch208: parse-crypttab-for-noauto-option.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch209: 0001-errno-make-sure-to-handle-the-3-errnos-that-are-alia.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch210: 0002-udev-warn-when-name_to_handle_at-is-not-implemented.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch211: 0003-analyze-fix-plot-with-bad-y-size.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch212: 0004-job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch213: 0005-job-always-add-waiting-jobs-to-run-queue-during-cold.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch214: 0001-backlight-Avoid-restoring-brightness-to-an-unreadabl.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch215: 0002-backlight-do-nothing-if-max_brightness-is-0.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch216: 0003-backlight-unify-error-messages.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch217: 0004-backlight-warn-if-kernel-exposes-backlight-device-wi.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch218: 0005-backlight-handle-saved-brightness-exceeding-max-brig.patch +# PATCH-FIX-SUSE Do not poison kmsg ring buffer with systemd/udev messages (bnc#877021) +Patch219: log-target-null-instead-kmsg.patch # UDEV PATCHES # ============ @@ -440,8 +462,10 @@ Patch1012: 1012-Skip-persistent-device-link-creation-on-multipath-de.patch # PATCH-FIX-SUSE Do not use runtime PM for some IBM consoles (bnc#868931) Patch1013: 1013-no-runtime-PM-for-IBM-consoles.patch -# PATCH-FIX-UPSTREAM Move forward to git Head for net_id -Patch1014: upstream-net_id-changes.patch +# PATCH-FIX-USTREAM 1014-udev-update-net_id-comments.patch +Patch1014: 1014-udev-update-net_id-comments.patch +# PATCH-FIX-USTREAM 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch +Patch1015: 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -798,6 +822,17 @@ %patch206 -p0 %patch207 -p0 %patch208 -p1 +%patch209 -p0 +%patch210 -p0 +%patch211 -p0 +%patch212 -p0 +%patch213 -p0 +%patch214 -p0 +%patch215 -p0 +%patch216 -p0 +%patch217 -p0 +%patch218 -p0 +%patch219 -p1 # udev patches %patch1001 -p1 @@ -814,9 +849,8 @@ %patch1011 -p1 %patch1012 -p1 %patch1013 -p1 -%if 0%{?suse_version} > 1310 -%patch1014 -p0 -%endif +%patch1014 -p1 +%patch1015 -p1 # ensure generate files are removed rm -f units/emergency.service ++++++ systemd.spec ++++++ --- /var/tmp/diff_new_pack.MUrnLT/_old 2014-05-13 20:46:29.000000000 +0200 +++ /var/tmp/diff_new_pack.MUrnLT/_new 2014-05-13 20:46:29.000000000 +0200 @@ -402,6 +402,28 @@ Patch207: 0001-tmpfiles-fix-permissions-on-new-journal-files.patch # PATCH-FIX-SUSE Do not ignores option 'noauto' in /etc/crypttab (bnc#742774) Patch208: parse-crypttab-for-noauto-option.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch209: 0001-errno-make-sure-to-handle-the-3-errnos-that-are-alia.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch210: 0002-udev-warn-when-name_to_handle_at-is-not-implemented.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch211: 0003-analyze-fix-plot-with-bad-y-size.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch212: 0004-job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch213: 0005-job-always-add-waiting-jobs-to-run-queue-during-cold.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch214: 0001-backlight-Avoid-restoring-brightness-to-an-unreadabl.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch215: 0002-backlight-do-nothing-if-max_brightness-is-0.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch216: 0003-backlight-unify-error-messages.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch217: 0004-backlight-warn-if-kernel-exposes-backlight-device-wi.patch +# PATCH-FIX-UPSTREAM added at 2014/05/12 +Patch218: 0005-backlight-handle-saved-brightness-exceeding-max-brig.patch +# PATCH-FIX-SUSE Do not poison kmsg ring buffer with systemd/udev messages (bnc#877021) +Patch219: log-target-null-instead-kmsg.patch # UDEV PATCHES # ============ @@ -435,8 +457,10 @@ Patch1012: 1012-Skip-persistent-device-link-creation-on-multipath-de.patch # PATCH-FIX-SUSE Do not use runtime PM for some IBM consoles (bnc#868931) Patch1013: 1013-no-runtime-PM-for-IBM-consoles.patch -# PATCH-FIX-UPSTREAM Move forward to git Head for net_id -Patch1014: upstream-net_id-changes.patch +# PATCH-FIX-USTREAM 1014-udev-update-net_id-comments.patch +Patch1014: 1014-udev-update-net_id-comments.patch +# PATCH-FIX-USTREAM 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch +Patch1015: 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -793,6 +817,17 @@ %patch206 -p0 %patch207 -p0 %patch208 -p1 +%patch209 -p0 +%patch210 -p0 +%patch211 -p0 +%patch212 -p0 +%patch213 -p0 +%patch214 -p0 +%patch215 -p0 +%patch216 -p0 +%patch217 -p0 +%patch218 -p0 +%patch219 -p1 # udev patches %patch1001 -p1 @@ -809,9 +844,8 @@ %patch1011 -p1 %patch1012 -p1 %patch1013 -p1 -%if 0%{?suse_version} > 1310 -%patch1014 -p0 -%endif +%patch1014 -p1 +%patch1015 -p1 # ensure generate files are removed rm -f units/emergency.service ++++++ 0001-backlight-Avoid-restoring-brightness-to-an-unreadabl.patch ++++++ >From 7b909d7407965c03caaba30daae7aee113627a83 Mon Sep 17 00:00:00 2001 From: Josh Triplett <j...@joshtriplett.org> Date: Tue, 11 Mar 2014 21:16:33 -0700 Subject: [PATCH] backlight: Avoid restoring brightness to an unreadably dim level Some systems turn the backlight all the way off at the lowest levels. Clamp saved brightness to at least 1 or 5% of max_brightness. This avoids preserving an unreadably dim screen, which would otherwise force the user to disable state restoration. --- src/backlight/backlight.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git src/backlight/backlight.c src/backlight/backlight.c index 81470b3..abf8bcf 100644 --- src/backlight/backlight.c +++ src/backlight/backlight.c @@ -192,6 +192,48 @@ static bool validate_device(struct udev *udev, struct udev_device *device) { return true; } +/* Some systems turn the backlight all the way off at the lowest levels. + * clamp_brightness clamps the saved brightness to at least 1 or 5% of + * max_brightness. This avoids preserving an unreadably dim screen, which + * would otherwise force the user to disable state restoration. */ +static void clamp_brightness(struct udev_device *device, char **value) { + int r; + const char *max_brightness_str; + unsigned brightness, max_brightness, new_brightness; + + max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness"); + if (!max_brightness_str) { + log_warning("Failed to read max_brightness attribute; not checking saved brightness"); + return; + } + + r = safe_atou(*value, &brightness); + if (r < 0) { + log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r)); + return; + } + + r = safe_atou(max_brightness_str, &max_brightness); + if (r < 0) { + log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r)); + return; + } + + new_brightness = MAX3(brightness, 1U, max_brightness/20); + if (new_brightness != brightness) { + char *old_value = *value; + + r = asprintf(value, "%u", new_brightness); + if (r < 0) { + log_oom(); + return; + } + + log_debug("Saved brightness %s too low; increasing to %s.", old_value, *value); + free(old_value); + } +} + int main(int argc, char *argv[]) { _cleanup_udev_unref_ struct udev *udev = NULL; _cleanup_udev_device_unref_ struct udev_device *device = NULL; @@ -306,6 +348,8 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + clamp_brightness(device, &value); + r = udev_device_set_sysattr_value(device, "brightness", value); if (r < 0) { log_error("Failed to write system attribute: %s", strerror(-r)); -- 1.7.9.2 ++++++ 0001-errno-make-sure-to-handle-the-3-errnos-that-are-alia.patch ++++++ Based on 0d522a7a0547982eae9ab1b5971e4bed9c2fbc7c Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lenn...@poettering.net> Date: Thu, 24 Apr 2014 08:11:39 +0200 Subject: [PATCH] errno: make sure to handle the 3 errnos that are aliases for others properly --- Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- Makefile.am +++ Makefile.am 2014-05-12 00:00:00.000000000 +0000 @@ -1078,7 +1078,7 @@ BUILT_SOURCES += \ src/shared/errno-list.txt: $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include errno.h - < /dev/null | $(AWK) '/^#define[ \t]+E[^ _]+[ \t]+[0-9]/ { print $$2; }' > $@ + $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include errno.h - < /dev/null | $(AWK) '/^#define[ \t]+E[^ _]+[ \t]+/ { print $$2; }' > $@ src/shared/errno-from-name.gperf: src/shared/errno-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) @@ -1090,7 +1090,7 @@ src/shared/errno-from-name.h: src/shared src/shared/errno-to-name.h: src/shared/errno-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const errno_names[] = { "} { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' < $< > $@ + $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const errno_names[] = { "} !/EDEADLOCK/ && !/EWOULDBLOCK/ && !/ENOTSUP/ { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' < $< > $@ # ------------------------------------------------------------------------------ systemd_SOURCES = \ ++++++ 0002-backlight-do-nothing-if-max_brightness-is-0.patch ++++++ >From 3cadce7d33e263ec7a6a83c00c11144930258b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <tho...@archlinux.org> Date: Thu, 27 Mar 2014 23:41:59 +0100 Subject: [PATCH] backlight: do nothing if max_brightness is 0 On virtually any newer Asus mainboard, the eeepc-wmi driver is loaded. It exposes a backlight device despite the lack of any physical backlight devices. This fake backlight device has max_brightness set to 0. Since the introduction of the clamp_brightness function, systemd-backlight tries to write '1' to brightness and fails. This patch changes systemd-backlight to exit gracefully when max_brightness is 0 before performing any action. This affects both the load and save actions. --- src/backlight/backlight.c | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git src/backlight/backlight.c src/backlight/backlight.c index abf8bcf..ce0385b 100644 --- src/backlight/backlight.c +++ src/backlight/backlight.c @@ -192,30 +192,37 @@ static bool validate_device(struct udev *udev, struct udev_device *device) { return true; } -/* Some systems turn the backlight all the way off at the lowest levels. - * clamp_brightness clamps the saved brightness to at least 1 or 5% of - * max_brightness. This avoids preserving an unreadably dim screen, which - * would otherwise force the user to disable state restoration. */ -static void clamp_brightness(struct udev_device *device, char **value) { +static unsigned get_max_brightness(struct udev_device *device) { int r; const char *max_brightness_str; - unsigned brightness, max_brightness, new_brightness; + unsigned max_brightness; max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness"); if (!max_brightness_str) { - log_warning("Failed to read max_brightness attribute; not checking saved brightness"); - return; + log_warning("Failed to read max_brightness attribute"); + return 0; } - r = safe_atou(*value, &brightness); + r = safe_atou(max_brightness_str, &max_brightness); if (r < 0) { - log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r)); - return; + log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r)); + return 0; } - r = safe_atou(max_brightness_str, &max_brightness); + return max_brightness; +} + +/* Some systems turn the backlight all the way off at the lowest levels. + * clamp_brightness clamps the saved brightness to at least 1 or 5% of + * max_brightness. This avoids preserving an unreadably dim screen, which + * would otherwise force the user to disable state restoration. */ +static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) { + int r; + unsigned brightness, new_brightness; + + r = safe_atou(*value, &brightness); if (r < 0) { - log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r)); + log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r)); return; } @@ -239,6 +246,7 @@ int main(int argc, char *argv[]) { _cleanup_udev_device_unref_ struct udev_device *device = NULL; _cleanup_free_ char *saved = NULL, *ss = NULL, *escaped_ss = NULL, *escaped_sysname = NULL, *escaped_path_id = NULL; const char *sysname, *path_id; + unsigned max_brightness; int r; if (argc != 3) { @@ -294,6 +302,14 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + /* If max_brightness is 0, then there is no actual backlight + * device. This happens on desktops with Asus mainboards + * that load the eeepc-wmi module. + */ + max_brightness = get_max_brightness(device); + if (max_brightness == 0) + return EXIT_SUCCESS; + escaped_ss = cescape(ss); if (!escaped_ss) { log_oom(); @@ -348,7 +364,7 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - clamp_brightness(device, &value); + clamp_brightness(device, &value, max_brightness); r = udev_device_set_sysattr_value(device, "brightness", value); if (r < 0) { -- 1.7.9.2 ++++++ 0002-udev-warn-when-name_to_handle_at-is-not-implemented.patch ++++++ Based on e6c474723dc66cd4765fd09453d6b48bd5905ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbys...@in.waw.pl> Date: Sun, 20 Apr 2014 13:57:26 -0400 Subject: [PATCH] udev: warn when name_to_handle_at is not implemented We have a bunch of reports from people who have a custom kernel and are confused why udev is not running. Issue a warning on error. Barring an error in the code, the only error that is possible is ENOSYS. https://bugzilla.redhat.com/show_bug.cgi?id=1072966 --- src/libudev/libudev-monitor.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- src/libudev/libudev-monitor.c +++ src/libudev/libudev-monitor.c 2014-05-12 00:00:00.000000000 +0000 @@ -115,8 +115,11 @@ static bool udev_has_devtmpfs(struct ude int r; r = name_to_handle_at(AT_FDCWD, "/dev", &h.handle, &mount_id, 0); - if (r < 0) + if (r < 0) { + if (errno != EOPNOTSUPP) + udev_err(udev, "name_to_handle_at on /dev: %m\n"); return false; + } f = fopen("/proc/self/mountinfo", "re"); ++++++ 0003-analyze-fix-plot-with-bad-y-size.patch ++++++ >From a213b7e977221ca96bbc1b19a5a879c912ba2488 Mon Sep 17 00:00:00 2001 From: Jeffrey Clark <h0tw...@gmail.com> Date: Wed, 23 Apr 2014 22:37:43 +0200 Subject: [PATCH] analyze: fix plot with bad y size systemd-analyze plot > test.svg produces output with all y and height element attributes equal to zero. This of course causes the resulting svg to appear blank (zero height). Bug does not affect x86. Looks like a compiler optimization may be the culprit. https://github.com/archlinuxarm/PKGBUILDs/issues/815 --- src/analyze/analyze.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/analyze/analyze.c src/analyze/analyze.c index ba236d9..ebaa9d0 100644 --- src/analyze/analyze.c +++ src/analyze/analyze.c @@ -43,7 +43,7 @@ #include "pager.h" #define SCALE_X (0.1 / 1000.0) /* pixels per us */ -#define SCALE_Y 20.0 +#define SCALE_Y (20.0) #define compare(a, b) (((a) > (b))? 1 : (((b) > (a))? -1 : 0)) -- 1.7.9.2 ++++++ 0003-backlight-unify-error-messages.patch ++++++ Based on 938d2699d2e818bd996614e89ea3d668200ad2a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbys...@in.waw.pl> Date: Mon, 7 Apr 2014 20:57:22 -0400 Subject: [PATCH] backlight: unify error messages --- src/backlight/backlight.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) --- src/backlight/backlight.c +++ src/backlight/backlight.c 2014-05-12 13:31:50.502235843 +0000 @@ -24,6 +24,7 @@ #include "fileio.h" #include "libudev.h" #include "udev-util.h" +#include "def.h" static struct udev_device *find_pci_or_platform_parent(struct udev_device *device) { struct udev_device *parent; @@ -50,7 +51,7 @@ static struct udev_device *find_pci_or_p if (!c) return NULL; - c += strspn(c, "0123456789"); + c += strspn(c, DIGITS); if (*c == '-') { /* A connector DRM device, let's ignore all but LVDS and eDP! */ @@ -67,7 +68,8 @@ static struct udev_device *find_pci_or_p unsigned long class = 0; if (safe_atolu(value, &class) < 0) { - log_warning("Cannot parse PCI class %s of device %s:%s.", value, subsystem, sysname); + log_warning("Cannot parse PCI class %s of device %s:%s.", + value, subsystem, sysname); return NULL; } @@ -175,7 +177,9 @@ static bool validate_device(struct udev if (same_device(parent, other_parent)) { /* Both have the same PCI parent, that means * we are out. */ - log_debug("Skipping backlight device %s, since backlight device %s is on same PCI device and, takes precedence.", udev_device_get_sysname(device), udev_device_get_sysname(other)); + log_debug("Skipping backlight device %s, since device %s is on same PCI device and takes precedence.", + udev_device_get_sysname(device), + udev_device_get_sysname(other)); return false; } @@ -184,7 +188,9 @@ static bool validate_device(struct udev /* The other is connected to the platform bus * and we are a PCI device, that also means we * are out. */ - log_debug("Skipping backlight device %s, since backlight device %s is a platform device and takes precedence.", udev_device_get_sysname(device), udev_device_get_sysname(other)); + log_debug("Skipping backlight device %s, since device %s is a platform device and takes precedence.", + udev_device_get_sysname(device), + udev_device_get_sysname(other)); return false; } } @@ -199,13 +205,14 @@ static unsigned get_max_brightness(struc max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness"); if (!max_brightness_str) { - log_warning("Failed to read max_brightness attribute"); + log_warning("Failed to read 'max_brightness' attribute"); return 0; } r = safe_atou(max_brightness_str, &max_brightness); if (r < 0) { - log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r)); + log_warning("Failed to parse 'max_brightness' \"%s\": %s", + max_brightness_str, strerror(-r)); return 0; } @@ -262,7 +269,8 @@ int main(int argc, char *argv[]) { r = mkdir_p("/var/lib/systemd/backlight", 0755); if (r < 0) { - log_error("Failed to create backlight directory: %s", strerror(-r)); + log_error("Failed to create backlight directory /var/lib/systemd/backlight: %s", + strerror(-r)); return EXIT_FAILURE; } @@ -274,7 +282,7 @@ int main(int argc, char *argv[]) { sysname = strchr(argv[2], ':'); if (!sysname) { - log_error("Requires pair of subsystem and sysname for specifying backlight device."); + log_error("Requires a subsystem and sysname pair specifying a backlight device."); return EXIT_FAILURE; } @@ -368,7 +376,8 @@ int main(int argc, char *argv[]) { r = udev_device_set_sysattr_value(device, "brightness", value); if (r < 0) { - log_error("Failed to write system attribute: %s", strerror(-r)); + log_error("Failed to write system 'brightness' attribute: %s", + strerror(-r)); return EXIT_FAILURE; } @@ -382,7 +391,7 @@ int main(int argc, char *argv[]) { value = udev_device_get_sysattr_value(device, "brightness"); if (!value) { - log_error("Failed to read system attribute: %s", strerror(-r)); + log_error("Failed to read system 'brightness' attribute: %s", strerror(-r)); return EXIT_FAILURE; } ++++++ 0004-backlight-warn-if-kernel-exposes-backlight-device-wi.patch ++++++ >From c7fdf44d08e1217d40dc092fb90a65978a0f541f Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lenn...@poettering.net> Date: Wed, 23 Apr 2014 06:55:54 +0200 Subject: [PATCH] backlight: warn if kernel exposes backlight device with bogus max_brightness We shouldn't silently tape over broken kernel drivers. --- src/backlight/backlight.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git src/backlight/backlight.c src/backlight/backlight.c index 754a646..c708391 100644 --- src/backlight/backlight.c +++ src/backlight/backlight.c @@ -205,14 +205,18 @@ static unsigned get_max_brightness(struct udev_device *device) { max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness"); if (!max_brightness_str) { - log_warning("Failed to read 'max_brightness' attribute"); + log_warning("Failed to read 'max_brightness' attribute."); return 0; } r = safe_atou(max_brightness_str, &max_brightness); if (r < 0) { - log_warning("Failed to parse 'max_brightness' \"%s\": %s", - max_brightness_str, strerror(-r)); + log_warning("Failed to parse 'max_brightness' \"%s\": %s", max_brightness_str, strerror(-r)); + return 0; + } + + if (max_brightness <= 0) { + log_warning("Maximum brightness is 0, ignoring device."); return 0; } -- 1.7.9.2 ++++++ 0004-job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch ++++++ Based on 20a83d7bf4542875f8033b68682a4da4993010e8 Mon Sep 17 00:00:00 2001 From: Brandon Philips <bran...@ifup.co> Date: Fri, 25 Apr 2014 09:31:59 -0600 Subject: [PATCH] job: add waiting jobs to run queue in unit_coldplug When we have job installed and added to run queue for service which is still in dead state and systemd initiates reload then after reload we never add deserialized job to the run queue again. This is caused by check in service_coldplug() where we check if deserialized state is something else than dead state, which is not the case thus we never call service_set_state() and finally unit_notify() where we would have added job to the run queue. Thanks to Michal Sekletar <msekl...@redhat.com> for the original patch. --- src/core/job.c | 3 +++ 1 file changed, 3 insertions(+) --- src/core/job.c +++ src/core/job.c 2014-05-12 12:58:30.354235531 +0000 @@ -1057,6 +1057,9 @@ int job_coldplug(Job *j) { if (j->timer_event_source) j->timer_event_source = sd_event_source_unref(j->timer_event_source); + if (j->state == JOB_WAITING) + job_add_to_run_queue(j); + r = sd_event_add_monotonic(j->manager->event, &j->timer_event_source, j->begin_usec + j->unit->job_timeout, 0, job_dispatch_timer, j); if (r < 0) log_debug("Failed to restart timeout for job: %s", strerror(-r)); ++++++ 0005-backlight-handle-saved-brightness-exceeding-max-brig.patch ++++++ >From 0c9d8f1d4b5018199cb5a9b57580dc1480a7f915 Mon Sep 17 00:00:00 2001 From: Jani Nikula <jani.nik...@intel.com> Date: Wed, 7 May 2014 12:01:01 +0300 Subject: [PATCH] backlight: handle saved brightness exceeding max brightness If too high a brightness value has been saved (e.g. due to kernel mechanism changing from one kernel version to another, or booting the userspace on another system), the brightness update fails and the process exits. Clamp saved brightness between the policy minimum introduced in commit 7b909d7407965c03caaba30daae7aee113627a83 Author: Josh Triplett <j...@joshtriplett.org> Date: Tue Mar 11 21:16:33 2014 -0700 backlight: Avoid restoring brightness to an unreadably dim level and the absolute maximum. https://bugs.freedesktop.org/show_bug.cgi?id=78200 --- src/backlight/backlight.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git src/backlight/backlight.c src/backlight/backlight.c index c708391..691472c 100644 --- src/backlight/backlight.c +++ src/backlight/backlight.c @@ -229,7 +229,7 @@ static unsigned get_max_brightness(struct udev_device *device) { * would otherwise force the user to disable state restoration. */ static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) { int r; - unsigned brightness, new_brightness; + unsigned brightness, new_brightness, min_brightness; r = safe_atou(*value, &brightness); if (r < 0) { @@ -237,7 +237,8 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned return; } - new_brightness = MAX3(brightness, 1U, max_brightness/20); + min_brightness = MAX(1U, max_brightness/20); + new_brightness = CLAMP(brightness, min_brightness, max_brightness); if (new_brightness != brightness) { char *old_value = *value; @@ -247,7 +248,11 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned return; } - log_debug("Saved brightness %s too low; increasing to %s.", old_value, *value); + log_info("Saved brightness %s %s to %s.", old_value, + new_brightness > brightness ? + "too low; increasing" : "too high; decreasing", + *value); + free(old_value); } } -- 1.7.9.2 ++++++ 0005-job-always-add-waiting-jobs-to-run-queue-during-cold.patch ++++++ Based on 1727a595225132eb73ec134b6979d9c713b42e8c Mon Sep 17 00:00:00 2001 From: Michael Marineau <michael.marin...@coreos.com> Date: Mon, 12 May 2014 09:26:16 +0200 Subject: [PATCH] job: always add waiting jobs to run queue during coldplug commit 20a83d7bf was not equivalent to the original bug fix proposed by Michal Sekletar <msekl...@redhat.com>. The committed version only added the job to the run queue if the job had a timeout, which most jobs do not have. Just re-ordering the code gets us the intended functionality --- src/core/job.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- src/core/job.c +++ src/core/job.c 2014-05-12 13:11:24.918735646 +0000 @@ -1051,15 +1051,15 @@ int job_coldplug(Job *j) { assert(j); + if (j->state == JOB_WAITING) + job_add_to_run_queue(j); + if (j->begin_usec == 0 || j->unit->job_timeout == 0) return 0; if (j->timer_event_source) j->timer_event_source = sd_event_source_unref(j->timer_event_source); - if (j->state == JOB_WAITING) - job_add_to_run_queue(j); - r = sd_event_add_monotonic(j->manager->event, &j->timer_event_source, j->begin_usec + j->unit->job_timeout, 0, job_dispatch_timer, j); if (r < 0) log_debug("Failed to restart timeout for job: %s", strerror(-r)); ++++++ 1014-udev-update-net_id-comments.patch ++++++ >From d4b687c96adf207f0878aebf3ce3371f6160687f Mon Sep 17 00:00:00 2001 From: Kay Sievers <k...@vrfy.org> Date: Thu, 27 Mar 2014 15:30:09 +0100 Subject: [PATCH] udev: update net_id comments Signed-off-by: Robert Milasan <rmila...@suse.com> --- src/udev/udev-builtin-net_id.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 4f2b2c1..9ac07de 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -33,8 +33,11 @@ * ww -- wwan * * Type of names: + * b<number> -- BCMA bus core number + * ccw<name> -- CCW bus group name * o<index> -- on-board device index number * s<slot>[f<function>][d<dev_id>] -- hotplug slot index number + * v<number> -- virtio number * x<MAC> -- MAC address * [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>] * -- PCI geographical location @@ -119,12 +122,9 @@ struct netnames { const char *pci_onboard_label; char usb_ports[IFNAMSIZ]; - char bcma_core[IFNAMSIZ]; - - char virtio_core[IFNAMSIZ]; - - char ccw_core[IFNAMSIZ]; + char virtio[IFNAMSIZ]; + char ccw_group[IFNAMSIZ]; }; /* retrieve on-board index number and label from firmware */ @@ -353,18 +353,17 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) { static int names_virtio(struct udev_device *dev, struct netnames *names) { struct udev_device *virtdev; - unsigned int core; + unsigned int num; virtdev = udev_device_get_parent_with_subsystem_devtype(dev, "virtio", NULL); if (!virtdev) return -ENOENT; - /* core num */ - if (sscanf(udev_device_get_sysname(virtdev), "virtio%u", &core) != 1) + if (sscanf(udev_device_get_sysname(virtdev), "virtio%u", &num) != 1) return -EINVAL; - /* suppress the common core == 0 */ - if (core > 0) - snprintf(names->virtio_core, sizeof(names->virtio_core), "v%u", core); + /* suppress the common num == 0 */ + if (num > 0) + snprintf(names->virtio, sizeof(names->virtio), "v%u", num); names->type = NET_VIRTIO; return 0; @@ -402,8 +401,8 @@ static int names_ccw(struct udev_device *dev, struct netnames *names) { return -EINVAL; /* Store the CCW bus-ID for use as network device name */ - rc = snprintf(names->ccw_core, sizeof(names->ccw_core), "ccw%s", bus_id); - if (rc >= 0 && rc < (int)sizeof(names->ccw_core)) + rc = snprintf(names->ccw_group, sizeof(names->ccw_group), "ccw%s", bus_id); + if (rc >= 0 && rc < (int)sizeof(names->ccw_group)) names->type = NET_CCWGROUP; return 0; } @@ -517,7 +516,7 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool if (err >= 0 && names.type == NET_CCWGROUP) { char str[IFNAMSIZ]; - if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_core) < (int)sizeof(str)) + if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_group) < (int)sizeof(str)) udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); goto out; } @@ -585,11 +584,11 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool char str[IFNAMSIZ]; if (names.pci_path[0]) - if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_path, names.virtio_core) < (int)sizeof(str)) + if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_path, names.virtio) < (int)sizeof(str)) udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); if (names.pci_slot[0]) - if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_slot, names.virtio_core) < (int)sizeof(str)) + if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_slot, names.virtio) < (int)sizeof(str)) udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); goto out; } -- 1.8.4.5 ++++++ 1015-udev-persistent-naming-we-cannot-use-virtio-numbers-.patch ++++++ >From bf81e792f3c0aed54edf004c1c95cc6f6d81d0ee Mon Sep 17 00:00:00 2001 From: Tom Gundersen <t...@jklm.no> Date: Thu, 27 Mar 2014 21:47:14 +0100 Subject: [PATCH] udev: persistent naming - we cannot use virtio numbers as they are not stable This reverts commit 8741f2defaf26aafe5ee0fd29954cfdf84ee519c: 'Add virtio-blk support to path_id' and commit e3d563346c4237af23335cc6904e0662efdf62ad: 'udev: net_id - handle virtio buses'. Distros may want to take note of this, as it changes behavior. Signed-off-by: Robert Milasan <rmila...@suse.com> --- src/udev/udev-builtin-net_id.c | 36 ------------------------------------ src/udev/udev-builtin-path_id.c | 3 --- 2 files changed, 39 deletions(-) Index: systemd-210/src/udev/udev-builtin-net_id.c =================================================================== --- systemd-210.orig/src/udev/udev-builtin-net_id.c +++ systemd-210/src/udev/udev-builtin-net_id.c @@ -37,7 +37,6 @@ * ccw<name> -- CCW bus group name * o<index> -- on-board device index number * s<slot>[f<function>][d<dev_id>] -- hotplug slot index number - * v<number> -- virtio number * x<MAC> -- MAC address * [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>] * -- PCI geographical location @@ -123,7 +122,6 @@ struct netnames { char usb_ports[IFNAMSIZ]; char bcma_core[IFNAMSIZ]; - char virtio[IFNAMSIZ]; char ccw_group[IFNAMSIZ]; }; @@ -351,24 +349,6 @@ static int names_bcma(struct udev_device return 0; } -static int names_virtio(struct udev_device *dev, struct netnames *names) { - struct udev_device *virtdev; - unsigned int num; - - virtdev = udev_device_get_parent_with_subsystem_devtype(dev, "virtio", NULL); - if (!virtdev) - return -ENOENT; - - if (sscanf(udev_device_get_sysname(virtdev), "virtio%u", &num) != 1) - return -EINVAL; - /* suppress the common num == 0 */ - if (num > 0) - snprintf(names->virtio, sizeof(names->virtio), "v%u", num); - - names->type = NET_VIRTIO; - return 0; -} - static int names_ccw(struct udev_device *dev, struct netnames *names) { struct udev_device *cdev; const char *bus_id; @@ -577,22 +557,6 @@ static int builtin_net_id(struct udev_de udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); goto out; } - - /* virtio bus */ - err = names_virtio(dev, &names); - if (err >= 0 && names.type == NET_VIRTIO) { - char str[IFNAMSIZ]; - - if (names.pci_path[0]) - if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_path, names.virtio) < (int)sizeof(str)) - udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); - - if (names.pci_slot[0]) - if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_slot, names.virtio) < (int)sizeof(str)) - udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); - goto out; - } - out: return EXIT_SUCCESS; } Index: systemd-210/src/udev/udev-builtin-path_id.c =================================================================== --- systemd-210.orig/src/udev/udev-builtin-path_id.c +++ systemd-210/src/udev/udev-builtin-path_id.c @@ -571,9 +571,6 @@ static int builtin_path_id(struct udev_d } else if (streq(subsys, "xen")) { path_prepend(&path, "xen-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "xen"); - } else if (streq(subsys, "virtio")) { - path_prepend(&path, "virtio-pci-%s", udev_device_get_sysname(parent)); - parent = skip_subsystem(parent, "virtio"); } else if (streq(subsys, "scm")) { path_prepend(&path, "scm-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "scm"); ++++++ log-target-null-instead-kmsg.patch ++++++ --- src/journal/journald-kmsg.c | 16 +++++++++++++++- src/libudev/libudev-util.c | 16 +++++++++++++++- src/shared/log.c | 16 +++++++++++++++- src/shared/util.c | 6 +++++- 4 files changed, 50 insertions(+), 4 deletions(-) --- systemd-210/src/journal/journald-kmsg.c +++ systemd-210/src/journal/journald-kmsg.c 2014-05-09 07:35:02.880122386 +0000 @@ -391,12 +391,26 @@ return server_read_dev_kmsg(s); } +static int parse_proc_cmdline_word(const char *word) { + int r; + + if (streq(word, "systemd.log_target=null")) + return -115; + + return 0; +} + int server_open_dev_kmsg(Server *s) { int r; assert(s); - s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); + if (parse_proc_cmdline(parse_proc_cmdline_word) == -115) { + s->dev_kmsg_fd = open("/dev/null", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); + } else { + s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); + } + if (s->dev_kmsg_fd < 0) { log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, "Failed to open /dev/kmsg, ignoring: %m"); --- systemd-210/src/libudev/libudev-util.c +++ systemd-210/src/libudev/libudev-util.c 2014-05-09 07:35:28.304122530 +0000 @@ -416,6 +416,15 @@ return bits; } +static int parse_proc_cmdline_word(const char *word) { + int r; + + if (streq(word, "systemd.log_target=null")) + return -115; + + return 0; +} + ssize_t print_kmsg(const char *fmt, ...) { _cleanup_close_ int fd = -1; @@ -424,7 +433,12 @@ ssize_t len; ssize_t ret; - fd = open("/dev/kmsg", O_WRONLY|O_NOCTTY|O_CLOEXEC); + if (parse_proc_cmdline(parse_proc_cmdline_word) == -115) { + fd = open("/dev/null", O_WRONLY|O_NOCTTY|O_CLOEXEC); + } else { + fd = open("/dev/kmsg", O_WRONLY|O_NOCTTY|O_CLOEXEC); + } + if (fd < 0) return -errno; --- systemd-210/src/shared/log.c +++ systemd-210/src/shared/log.c 2014-05-09 07:35:52.900122669 +0000 @@ -92,12 +92,26 @@ kmsg_fd = -1; } +static int parse_proc_cmdline_word(const char *word) { + int r; + + if (streq(word, "systemd.log_target=null")) + return -115; + + return 0; +} + static int log_open_kmsg(void) { if (kmsg_fd >= 0) return 0; - kmsg_fd = open("/dev/kmsg", O_WRONLY|O_NOCTTY|O_CLOEXEC); + if (parse_proc_cmdline(parse_proc_cmdline_word) == -115) { + kmsg_fd = open("/dev/null", O_WRONLY|O_NOCTTY|O_CLOEXEC); + } else { + kmsg_fd = open("/dev/kmsg", O_WRONLY|O_NOCTTY|O_CLOEXEC); + } + if (kmsg_fd < 0) return -errno; --- systemd-210/src/shared/util.c +++ systemd-210/src/shared/util.c 2014-05-09 08:51:55.436148462 +0000 @@ -5975,7 +5975,11 @@ r = parse_word(word); if (r < 0) { - log_error("Failed on cmdline argument %s: %s", word, strerror(-r)); + if (r == -115) { + log_error("Warning: %s set, redirecting messages to /dev/null.", word); + } else { + log_error("Failed on cmdline argument %s: %s", word, strerror(-r)); + } return r; } } -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org