Hello community, here is the log from the commit of package systemd for openSUSE:Factory checked in at 2014-08-27 16:53:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-08-11 10:08:53.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes 2014-08-27 16:53:17.000000000 +0200 @@ -1,0 +2,50 @@ +Tue Aug 26 12:13:42 UTC 2014 - [email protected] + +- Add upstream patches for hwdb + 0001-hwdb-keymaps-for-Samsung-900X3E-900X3F.patch + 0002-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch + 0003-keymap-Fix-HP-Pavillon-DV7.patch + 0004-hwdb-update-format-description-and-document-reloadin.patch + 0008-hwdb-update.patch + +------------------------------------------------------------------- +Tue Aug 26 11:25:57 UTC 2014 - [email protected] + +- Port back and add the missed upstream patches from 2014/08/22 + 0004-login-set_controller-should-fail-if-prepare_vt-fails.patch + 0006-login-share-VT-signal-handler-between-sessions.patch + +------------------------------------------------------------------- +Fri Aug 22 15:12:23 UTC 2014 - [email protected] + +- Add upstream patches + 0001-nspawn-fix-truncation-of-machine-names-in-interface-.patch + 0002-switch-root-umount-the-old-root-correctly.patch + 0003-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch + 0005-sd-resolve-fix-allocation-if-query-ids-never-reuse-t.patch + 0007-journald-also-increase-the-SendBuffer-of-dev-log-to-.patch + 0008-mount-setup-fix-counting-of-early-mounts-without-SMA.patch + 0009-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch + 0010-machine_kill-Don-t-kill-the-unit-when-killing-the-le.patch + 0011-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch + 0012-util-try-to-be-a-bit-more-NFS-compatible-when-checki.patch + 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch + +------------------------------------------------------------------- +Fri Aug 22 01:29:06 UTC 2014 - [email protected] + +- man pages from section 3 are developer docs, move them to + the -devel package. + +------------------------------------------------------------------- +Wed Aug 20 15:06:25 UTC 2014 - [email protected] + +- Add patch 0001-let-systemctl-completion-ignore-at-names.patch to + remove error messages for tab completion for systemctl isolate (bnc#892162) + +------------------------------------------------------------------- +Mon Aug 18 14:40:55 UTC 2014 - [email protected] + +- Disable the usage of the systemd groups wheel and adm (bnc#892300) + +------------------------------------------------------------------- systemd.changes: same change New: ---- 0001-hwdb-keymaps-for-Samsung-900X3E-900X3F.patch 0001-let-systemctl-completion-ignore-at-names.patch 0001-nspawn-fix-truncation-of-machine-names-in-interface-.patch 0002-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch 0002-switch-root-umount-the-old-root-correctly.patch 0003-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch 0003-keymap-Fix-HP-Pavillon-DV7.patch 0004-hwdb-update-format-description-and-document-reloadin.patch 0004-login-set_controller-should-fail-if-prepare_vt-fails.patch 0005-sd-resolve-fix-allocation-if-query-ids-never-reuse-t.patch 0006-login-share-VT-signal-handler-between-sessions.patch 0007-journald-also-increase-the-SendBuffer-of-dev-log-to-.patch 0008-hwdb-update.patch 0008-mount-setup-fix-counting-of-early-mounts-without-SMA.patch 0009-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch 0010-machine_kill-Don-t-kill-the-unit-when-killing-the-le.patch 0011-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch 0012-util-try-to-be-a-bit-more-NFS-compatible-when-checki.patch 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ systemd-mini.spec ++++++ --- /var/tmp/diff_new_pack.Ss6dxY/_old 2014-08-27 16:53:21.000000000 +0200 +++ /var/tmp/diff_new_pack.Ss6dxY/_new 2014-08-27 16:53:21.000000000 +0200 @@ -40,6 +40,7 @@ %bcond_with blkrrpart %bcond_with udevsettle %endif +%bcond_with systemgrps Name: systemd-mini Url: http://www.freedesktop.org/wiki/Software/systemd @@ -761,6 +762,42 @@ Patch366: tomcat6-var-lock-subsys-legacy.patch # PATCH-FIX-UPSTREAM added at 2014/08/01 Patch367: 0007-hwdb-update.patch +# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162) +Patch368: 0001-let-systemctl-completion-ignore-at-names.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch369: 0001-nspawn-fix-truncation-of-machine-names-in-interface-.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch370: 0002-switch-root-umount-the-old-root-correctly.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch371: 0003-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch372: 0004-login-set_controller-should-fail-if-prepare_vt-fails.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch373: 0005-sd-resolve-fix-allocation-if-query-ids-never-reuse-t.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch374: 0006-login-share-VT-signal-handler-between-sessions.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch375: 0007-journald-also-increase-the-SendBuffer-of-dev-log-to-.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch376: 0008-mount-setup-fix-counting-of-early-mounts-without-SMA.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch377: 0009-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch378: 0010-machine_kill-Don-t-kill-the-unit-when-killing-the-le.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch379: 0011-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch380: 0012-util-try-to-be-a-bit-more-NFS-compatible-when-checki.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch381: 0001-hwdb-keymaps-for-Samsung-900X3E-900X3F.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch382: 0002-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch383: 0003-keymap-Fix-HP-Pavillon-DV7.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch384: 0004-hwdb-update-format-description-and-document-reloadin.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch385: 0008-hwdb-update.patch # UDEV PATCHES # ============ @@ -892,6 +929,8 @@ Patch1061: 1061-rules-allow-systemd-to-manage-loop-device-partitions.patch # PATCH-FIX-SUSE 1062-rules-set-default-permissions-for-GenWQE-devices.patch (bnc#890977) Patch1062: 1062-rules-set-default-permissions-for-GenWQE-devices.patch +# PATCH-FIX-UPSTREAM 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch +Patch1063: 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -1418,6 +1457,24 @@ %patch365 -p0 %patch366 -p1 %patch367 -p0 +%patch368 -p1 +%patch369 -p0 +%patch370 -p0 +%patch371 -p0 +%patch372 -p0 +%patch373 -p0 +%patch374 -p0 +%patch375 -p0 +%patch376 -p0 +%patch377 -p0 +%patch378 -p0 +%patch379 -p0 +%patch380 -p0 +%patch381 -p0 +%patch382 -p0 +%patch383 -p0 +%patch384 -p0 +%patch385 -p0 # udev patches %patch1001 -p1 @@ -1503,6 +1560,10 @@ %patch1060 -p1 %patch1061 -p0 %patch1062 -p1 +%patch1063 -p0 + +# remove patch backups +find -name '*.orig' -exec rm -f '{}' \+ # ensure generate files are removed rm -f units/emergency.service @@ -1904,8 +1965,10 @@ chgrp systemd-journal %{_localstatedir}/log/journal/$ID > /dev/null 2>&1 || : chmod g+s %{_localstatedir}/log/journal/$ID > /dev/null 2>&1 || : fi +%if %{with systemgrps} getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : +%endif # Try to read default runlevel from the old inittab if it exists if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then @@ -2065,8 +2128,10 @@ %if %{with permission} %set_permissions %{_localstatedir}/log/journal/ %endif +%if %{with systemgrps} getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : +%endif if [ "$1" -eq 1 ]; then # tell journal to start logging on disk if directory didn't exist before systemctl --no-block restart systemd-journal-flush.service >/dev/null 2>&1 || : @@ -2283,7 +2348,6 @@ %exclude %{_mandir}/man*/*udev*.[0-9]* %exclude %{_mandir}/man8/systemd-journal-gatewayd.* %{_mandir}/man1/*.1* -%{_mandir}/man3/*.3* %{_mandir}/man5/*.5* %{_mandir}/man7/*.7* %{_mandir}/man8/*.8* @@ -2345,6 +2409,9 @@ %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc +%if ! 0%{?bootstrap} +%{_mandir}/man3/*.3* +%endif %files sysvinit %defattr(-,root,root,-) ++++++ systemd.spec ++++++ --- /var/tmp/diff_new_pack.Ss6dxY/_old 2014-08-27 16:53:21.000000000 +0200 +++ /var/tmp/diff_new_pack.Ss6dxY/_new 2014-08-27 16:53:21.000000000 +0200 @@ -38,6 +38,7 @@ %bcond_with blkrrpart %bcond_with udevsettle %endif +%bcond_with systemgrps Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd @@ -756,6 +757,42 @@ Patch366: tomcat6-var-lock-subsys-legacy.patch # PATCH-FIX-UPSTREAM added at 2014/08/01 Patch367: 0007-hwdb-update.patch +# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162) +Patch368: 0001-let-systemctl-completion-ignore-at-names.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch369: 0001-nspawn-fix-truncation-of-machine-names-in-interface-.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch370: 0002-switch-root-umount-the-old-root-correctly.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch371: 0003-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch372: 0004-login-set_controller-should-fail-if-prepare_vt-fails.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch373: 0005-sd-resolve-fix-allocation-if-query-ids-never-reuse-t.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch374: 0006-login-share-VT-signal-handler-between-sessions.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch375: 0007-journald-also-increase-the-SendBuffer-of-dev-log-to-.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch376: 0008-mount-setup-fix-counting-of-early-mounts-without-SMA.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch377: 0009-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch378: 0010-machine_kill-Don-t-kill-the-unit-when-killing-the-le.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch379: 0011-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch +# PATCH-FIX-UPSTREAM added at 2014/08/22 +Patch380: 0012-util-try-to-be-a-bit-more-NFS-compatible-when-checki.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch381: 0001-hwdb-keymaps-for-Samsung-900X3E-900X3F.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch382: 0002-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch383: 0003-keymap-Fix-HP-Pavillon-DV7.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch384: 0004-hwdb-update-format-description-and-document-reloadin.patch +# PATCH-FIX-UPSTREAM added at 2014/08/25 +Patch385: 0008-hwdb-update.patch # UDEV PATCHES # ============ @@ -887,6 +924,8 @@ Patch1061: 1061-rules-allow-systemd-to-manage-loop-device-partitions.patch # PATCH-FIX-SUSE 1062-rules-set-default-permissions-for-GenWQE-devices.patch (bnc#890977) Patch1062: 1062-rules-set-default-permissions-for-GenWQE-devices.patch +# PATCH-FIX-UPSTREAM 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch +Patch1063: 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch %description Systemd is a system and service manager, compatible with SysV and LSB @@ -1413,6 +1452,24 @@ %patch365 -p0 %patch366 -p1 %patch367 -p0 +%patch368 -p1 +%patch369 -p0 +%patch370 -p0 +%patch371 -p0 +%patch372 -p0 +%patch373 -p0 +%patch374 -p0 +%patch375 -p0 +%patch376 -p0 +%patch377 -p0 +%patch378 -p0 +%patch379 -p0 +%patch380 -p0 +%patch381 -p0 +%patch382 -p0 +%patch383 -p0 +%patch384 -p0 +%patch385 -p0 # udev patches %patch1001 -p1 @@ -1498,6 +1555,10 @@ %patch1060 -p1 %patch1061 -p0 %patch1062 -p1 +%patch1063 -p0 + +# remove patch backups +find -name '*.orig' -exec rm -f '{}' \+ # ensure generate files are removed rm -f units/emergency.service @@ -1899,8 +1960,10 @@ chgrp systemd-journal %{_localstatedir}/log/journal/$ID > /dev/null 2>&1 || : chmod g+s %{_localstatedir}/log/journal/$ID > /dev/null 2>&1 || : fi +%if %{with systemgrps} getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : +%endif # Try to read default runlevel from the old inittab if it exists if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then @@ -2060,8 +2123,10 @@ %if %{with permission} %set_permissions %{_localstatedir}/log/journal/ %endif +%if %{with systemgrps} getent group wheel && setfacl -Rnm g:wheel:rx,d:g:wheel:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : getent group adm && setfacl -Rnm g:adm:rx,d:g:adm:rx %{_localstatedir}/log/journal/ > /dev/null 2>&1 || : +%endif if [ "$1" -eq 1 ]; then # tell journal to start logging on disk if directory didn't exist before systemctl --no-block restart systemd-journal-flush.service >/dev/null 2>&1 || : @@ -2278,7 +2343,6 @@ %exclude %{_mandir}/man*/*udev*.[0-9]* %exclude %{_mandir}/man8/systemd-journal-gatewayd.* %{_mandir}/man1/*.1* -%{_mandir}/man3/*.3* %{_mandir}/man5/*.5* %{_mandir}/man7/*.7* %{_mandir}/man8/*.8* @@ -2340,6 +2404,9 @@ %{_libdir}/pkgconfig/libsystemd-login.pc %{_libdir}/pkgconfig/libsystemd-id128.pc %{_libdir}/pkgconfig/libsystemd-journal.pc +%if ! 0%{?bootstrap} +%{_mandir}/man3/*.3* +%endif %files sysvinit %defattr(-,root,root,-) ++++++ 0001-hwdb-keymaps-for-Samsung-900X3E-900X3F.patch ++++++ >From 77e8ff6974ffaa6c9954e3d2264d9aa75ef25233 Mon Sep 17 00:00:00 2001 From: Kieran Clancy <[email protected]> Date: Thu, 27 Feb 2014 16:02:57 +1030 Subject: [PATCH] hwdb: keymaps for Samsung 900X3E/900X3F Keymaps for Samsung 900X3E and 900X3F should be the same as for other models in the series. I have also moved the comment for '# Series 9' to the right place --- hwdb/60-keyboard.hwdb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb index edfa842..bd8fd10 100644 --- hwdb/60-keyboard.hwdb +++ hwdb/60-keyboard.hwdb @@ -897,9 +897,10 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr* KEYBOARD_KEY_a8=! # Fn Lock - Function lock on KEYBOARD_KEY_a9=! # Fn Lock - Function lock off +# Series 7 / 9 keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr* -keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr* +keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDEFG]*:pvr* keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr* KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings KEYBOARD_KEY_a0=!mute # Fn+F6 mute @@ -909,7 +910,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr* KEYBOARD_KEY_96=!kbdillumup # Fn+F10 keyboard backlight up KEYBOARD_KEY_b3=!prog3 # Fn+F11 fan/cooling mode changer -# Series 9 keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr* KEYBOARD_KEY_ce=! # Fn+F8 keyboard backlight up KEYBOARD_KEY_8d=! # Fn+F7 keyboard backlight down -- 1.7.9.2 ++++++ 0001-let-systemctl-completion-ignore-at-names.patch ++++++ --- systemd-210/shell-completion/bash/systemctl +++ systemd-210/shell-completion/bash/systemctl 2014-08-20 15:01:04.502736981 +0000 @@ -43,7 +43,7 @@ __filter_units_by_property () { local units=("$@") local props IFS=$'\n' read -rd '' -a props < \ - <(__systemctl $mode show --property "$property" -- "${units[@]}") + <(__systemctl $mode show --property "$property" -- "${units[@]}" 2> /dev/null) for ((i=0; $i < ${#units[*]}; i++)); do if [[ "${props[i]}" = "$property=$value" ]]; then echo " ${units[i]}" ++++++ 0001-nspawn-fix-truncation-of-machine-names-in-interface-.patch ++++++ Based on 4212a3375e03fd12cb407b34cab59dbe4ed9f4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <[email protected]> Date: Sun, 3 Aug 2014 01:28:21 -0400 Subject: [PATCH] nspawn: fix truncation of machine names in interface names Based on patch by Michael Marineau <[email protected]>: When deriving the network interface name from machine name strncpy was not properly null terminating the string and the maximum string size as returned by strlen() is actually IFNAMSIZ-1, not IFNAMSIZ. --- src/nspawn/nspawn.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) --- src/nspawn/nspawn.c +++ src/nspawn/nspawn.c 2014-08-22 10:18:20.390235611 +0000 @@ -1383,12 +1383,8 @@ static int setup_veth(pid_t pid, char if /* Use two different interface name prefixes depending whether * we are in bridge mode or not. */ - if (arg_network_bridge) - memcpy(iface_name, "vb-", 3); - else - memcpy(iface_name, "ve-", 3); - - strncpy(iface_name+3, arg_machine, IFNAMSIZ - 3); + snprintf(iface_name, IFNAMSIZ, "%s-%s", + arg_network_bridge ? "vb" : "ve", arg_machine); r = sd_rtnl_open(&rtnl, 0); if (r < 0) { ++++++ 0002-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch ++++++ >From 15f392394e75ffb7f318920008fd1bbe4e82b488 Mon Sep 17 00:00:00 2001 From: Scott Thrasher <[email protected]> Date: Wed, 26 Mar 2014 18:48:13 -0700 Subject: [PATCH] Add hwdb entry for Samsung Series 7 Ultra --- hwdb/60-keyboard.hwdb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb index bd8fd10..832c686 100644 --- hwdb/60-keyboard.hwdb +++ hwdb/60-keyboard.hwdb @@ -924,6 +924,14 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr* KEYBOARD_KEY_96=!kbdillumup # Fn+F8 keyboard backlight up KEYBOARD_KEY_d5=!wlan # Fn+F12 Wi-Fi toggle +# Series 7 Ultra +keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*7[34]0U3E*:pvr* + KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch settings + KEYBOARD_KEY_97=!kbdillumdown # Fn+F9 keyboard backlight down + KEYBOARD_KEY_96=!kbdillumup # Fn+F10 keyboard backlight up + KEYBOARD_KEY_b3=!prog3 # Fn+F11 fan/cooling mode changer + KEYBOARD_KEY_d5=!wlan # Fn+F12 wlan/airplane switch + # SQ1US keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pnSQ1US:pvr* KEYBOARD_KEY_d4=menu -- 1.7.9.2 ++++++ 0002-switch-root-umount-the-old-root-correctly.patch ++++++ Based on 23f25b1496c31ef4c20b8f3ee8328f7b1d5f3a54 Mon Sep 17 00:00:00 2001 From: Dan Dedrick <[email protected]> Date: Tue, 29 Jul 2014 15:31:23 -0400 Subject: [PATCH] switch-root: umount the old root correctly The unmount occurs after the pivot_root, so the path used to unmount should take into account the new root directory. This will allow the umount to actually succeed. --- src/core/switch-root.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- src/core/switch-root.c +++ src/core/switch-root.c 2014-08-22 11:22:50.230735231 +0000 @@ -122,9 +122,9 @@ int switch_root(const char *new_root) { /* Immediately get rid of the old root. Since we are * running off it we need to do this lazily. */ - if (umount2(temporary_old_root, MNT_DETACH) < 0) { + if (umount2("/mnt", MNT_DETACH) < 0) { r = -errno; - log_error("Failed to umount old root dir %s: %m", temporary_old_root); + log_error("Failed to umount old root dir /mnt: %m"); goto fail; } ++++++ 0003-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch ++++++ >From 4155f7d4be5053d5f34a26e5437fd85e1fe00fa3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <[email protected]> Date: Mon, 11 Aug 2014 18:23:47 +0200 Subject: [PATCH] bootchart: it's not OK to return -1 from a main program --- src/bootchart/bootchart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git src/bootchart/bootchart.c src/bootchart/bootchart.c index c0e176d..8ef5ad1 100644 --- src/bootchart/bootchart.c +++ src/bootchart/bootchart.c @@ -380,8 +380,8 @@ int main(int argc, char *argv[]) { sampledata = new0(struct list_sample_data, 1); if (sampledata == NULL) { - log_error("Failed to allocate memory for a node: %m"); - return -1; + log_oom(); + return EXIT_FAILURE; } sampledata->sampletime = gettime_ns(); -- 1.7.9.2 ++++++ 0003-keymap-Fix-HP-Pavillon-DV7.patch ++++++ >From efb4bf4e419e14a13eead6289ea40165579a816f Mon Sep 17 00:00:00 2001 From: Martin Pitt <[email protected]> Date: Tue, 5 Aug 2014 12:29:27 +0200 Subject: [PATCH] keymap: Fix HP Pavillon DV7 Properly disable scan code 94 instead of producing KEY_0. https://launchpad.net/bugs/1322770 --- hwdb/60-keyboard.hwdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb index cbbbf2c..5c3d4ca 100644 --- hwdb/60-keyboard.hwdb +++ hwdb/60-keyboard.hwdb @@ -368,7 +368,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*Pavilion*dv7*Notebook*PC:pvr KEYBOARD_KEY_b7=print KEYBOARD_KEY_c2=media # FIXME: quick play KEYBOARD_KEY_c6=break - KEYBOARD_KEY_94=0 + KEYBOARD_KEY_94=reserved # Elitebook keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*Compaq*:pvr* -- 1.7.9.2 ++++++ 0004-hwdb-update-format-description-and-document-reloadin.patch ++++++ >From fa9d4be3f1f4a792b2f3624c2a08fe9cc6ce6e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <[email protected]> Date: Thu, 7 Aug 2014 21:48:57 -0400 Subject: [PATCH] hwdb: update format description and document reloading https://bugs.freedesktop.org/show_bug.cgi?id=82311 --- hwdb/60-keyboard.hwdb | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb index 5c3d4ca..ef0ebc5 100644 --- hwdb/60-keyboard.hwdb +++ hwdb/60-keyboard.hwdb @@ -28,19 +28,33 @@ # driver, <vendor> is the firmware-provided string exported # by the kernel DMI modalias. # -# Scan codes are specified as: -# KEYBOARD_KEY_<hex scan code>=<key code identifier> -# The scan code should be expressed in hex lowercase and in -# full bytes, a multiple of 2 digits. The key codes are retrieved -# and normalized from the kernel input API header. +# Scan codes are specified as: +# KEYBOARD_KEY_<hex scan code>=<key code identifier> +# The scan code should be expressed in hex lowercase. The key codes +# are retrieved and normalized from the kernel input API header. # -# A '!' as the first charcter of the key identifier string -# will add the scan code to the AT keyboard's list of scan codes -# where the driver will synthesize a release event and not expect -# it to be generated by the hardware. +# An '!' as the first character of the key identifier string +# will add the scan code to the AT keyboard's list of scan codes +# where the driver will synthesize a release event and not expect +# it to be generated by the hardware. # # To debug key presses and access scan code mapping data of # an input device use the commonly available tool: evtest(1). +# +# To update this file, create a new file +# /etc/udev/hwdb.d/70-keyboad.hwdb +# and add your rules there. To load the new rules execute (as root): +# udevadm hwdb --update +# udevadm trigger /dev/input/eventXX +# where /dev/input/eventXX is the keyboard in question. If in +# doubt, simply use /dev/input/event* to reload all input rules. +# +# If your changes are generally applicable, open a bug report on +# http://bugs.freedesktop.org/enter_bug.cgi?product=systemd +# and include your new rules, a description of the device, and the +# output of +# udevadm info /dev/input/eventXX +# (or /dev/input/event*). ########################################## # Acer -- 1.7.9.2 ++++++ 0004-login-set_controller-should-fail-if-prepare_vt-fails.patch ++++++ Based on baccf3e40bab6c0b69992ae29c396930de4660c9 Mon Sep 17 00:00:00 2001 From: Olivier Brunel <[email protected]> Date: Fri, 8 Aug 2014 20:45:43 +0200 Subject: [PATCH] login: set_controller should fail if prepare_vt fails If controllers can expect logind to have "prepared" the VT (e.g. set it to graphics mode, etc) then TakeControl() should fail if said preparation failed (and session_restore_vt() was called). (David: fixed up !CONFIG_VT case and errno-numbers) --- src/login/logind-session.c | 47 +++++++++++++++++++++++++++++++++------------ src/login/logind-session.h | 2 - 2 files changed, 36 insertions(+), 13 deletions(-) --- src/login/logind-session.c +++ src/login/logind-session.c 2014-08-26 10:14:21.014235811 +0000 @@ -950,8 +950,8 @@ int session_kill(Session *s, KillWho who static int session_open_vt(Session *s) { char path[sizeof("/dev/tty") + DECIMAL_STR_MAX(s->vtnr)]; - if (!s->vtnr) - return -1; + if (s->vtnr < 1) + return -ENODEV; if (s->vtfd >= 0) return s->vtfd; @@ -975,22 +975,38 @@ static int session_vt_fn(sd_event_source return 0; } -void session_mute_vt(Session *s) { +int session_mute_vt(Session *s) { int vt, r; struct vt_mode mode = { 0 }; sigset_t mask; + if (s->vtnr < 1) + return 0; + vt = session_open_vt(s); if (vt < 0) - return; + return vt; + + r = fchown(vt, s->user->uid, -1); + if (r < 0) { + r = -errno; + log_error("Cannot change owner of /dev/tty%u: %m", s->vtnr); + goto error; + } r = ioctl(vt, KDSKBMODE, K_OFF); - if (r < 0) + if (r < 0) { + r = -errno; + log_error("Cannot set K_OFF on /dev/tty%u: %m", s->vtnr); goto error; + } r = ioctl(vt, KDSETMODE, KD_GRAPHICS); - if (r < 0) + if (r < 0) { + r = -errno; + log_error("Cannot set KD_GRAPHICS on /dev/tty%u: %m", s->vtnr); goto error; + } sigemptyset(&mask); sigaddset(&mask, SIGUSR1); @@ -1007,14 +1023,17 @@ void session_mute_vt(Session *s) { mode.relsig = SIGUSR1; mode.acqsig = SIGUSR1; r = ioctl(vt, VT_SETMODE, &mode); - if (r < 0) + if (r < 0) { + r = -errno; + log_error("Cannot set VT_PROCESS on /dev/tty%u: %m", s->vtnr); goto error; + } - return; + return 0; error: - log_error("cannot mute VT %u for session %s (%d/%d)", s->vtnr, s->id, r, errno); session_restore_vt(s); + return r; } void session_restore_vt(Session *s) { @@ -1037,6 +1056,8 @@ void session_restore_vt(Session *s) { mode.mode = VT_AUTO; ioctl(vt, VT_SETMODE, &mode); + fchown(vt, 0, -1); + close_nointr_nofail(vt); s->vtfd = -1; } @@ -1091,8 +1112,6 @@ int session_set_controller(Session *s, c return r; } - session_swap_controller(s, t); - /* When setting a session controller, we forcibly mute the VT and set * it into graphics-mode. Applications can override that by changing * VT state after calling TakeControl(). However, this serves as a good @@ -1101,7 +1120,11 @@ int session_set_controller(Session *s, c * exits. * If logind crashes/restarts, we restore the controller during restart * or reset the VT in case it crashed/exited, too. */ - session_mute_vt(s); + r = session_mute_vt(s); + if (r < 0) + return r; + + session_swap_controller(s, t); return 0; } --- src/login/logind-session.h +++ src/login/logind-session.h 2014-08-25 17:19:29.042236429 +0000 @@ -172,7 +172,7 @@ SessionClass session_class_from_string(c const char *kill_who_to_string(KillWho k) _const_; KillWho kill_who_from_string(const char *s) _pure_; -void session_mute_vt(Session *s); +int session_mute_vt(Session *s); void session_restore_vt(Session *s); bool session_is_controller(Session *s, const char *sender); ++++++ 0005-sd-resolve-fix-allocation-if-query-ids-never-reuse-t.patch ++++++ Based on 85529c815b47c22839e0f148af67fd37e977cbfa Mon Sep 17 00:00:00 2001 From: Lennart Poettering <[email protected]> Date: Tue, 12 Aug 2014 19:29:27 +0200 Subject: [PATCH] sd-resolve: fix allocation if query ids, never reuse them --- src/libsystemd/sd-resolve/sd-resolve.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) --- src/libsystemd/sd-resolve/sd-resolve.c +++ src/libsystemd/sd-resolve/sd-resolve.c 2014-08-22 14:18:24.838235343 +0000 @@ -81,7 +81,7 @@ struct sd_resolve { pthread_t workers[WORKERS_MAX]; unsigned n_valid_workers; - unsigned current_id, current_index; + unsigned current_id; sd_resolve_query* queries[QUERIES_MAX]; unsigned n_queries; @@ -892,21 +892,17 @@ static int alloc_query(sd_resolve *resol if (r < 0) return r; - while (resolve->queries[resolve->current_index]) { - resolve->current_index++; + while (resolve->queries[resolve->current_id % QUERIES_MAX]) resolve->current_id++; - resolve->current_index %= QUERIES_MAX; - } - - q = resolve->queries[resolve->current_index] = new0(sd_resolve_query, 1); + q = resolve->queries[resolve->current_id % QUERIES_MAX] = new0(sd_resolve_query, 1); if (!q) return -ENOMEM; resolve->n_queries++; q->resolve = resolve; - q->id = resolve->current_id; + q->id = resolve->current_id++; *_q = q; return 0; ++++++ 0006-login-share-VT-signal-handler-between-sessions.patch ++++++ Based on 92683ad2e28c79891e4123d9a421b018dc58870c Mon Sep 17 00:00:00 2001 From: David Herrmann <[email protected]> Date: Mon, 11 Aug 2014 18:17:54 +0200 Subject: [PATCH] login: share VT-signal handler between sessions sd-event does not allow multiple handlers for a single signal. However, logind sets up signal handlers for each session with VT_PROCESS set (that is, it has an active controller). Therefore, registering multiple such controllers will fail. Lets make the VT-handler global, as it's mostly trivial, anyway. This way, the sessions don't have to take care of that and we can simply acknowledge all VT-switch requests as we always did. --- src/libsystemd/sd-event/sd-event.c | 5 +- src/login/logind-session.c | 26 +------------ src/login/logind-session.h | 1 src/login/logind.c | 70 +++++++++++++++++++++++++++++++++++++ src/shared/util.c | 18 +++++++++ src/shared/util.h | 1 6 files changed, 94 insertions(+), 27 deletions(-) --- src/libsystemd/sd-event/sd-event.c +++ src/libsystemd/sd-event/sd-event.c 2014-08-26 11:02:54.500683967 +0000 @@ -839,7 +839,6 @@ _public_ int sd_event_add_signal( assert_return(sig > 0, -EINVAL); assert_return(sig < _NSIG, -EINVAL); assert_return(callback, -EINVAL); - assert_return(ret, -EINVAL); assert_return(e->state != SD_EVENT_FINISHED, -ESTALE); assert_return(!event_pid_changed(e), -ECHILD); @@ -877,7 +876,9 @@ _public_ int sd_event_add_signal( } } - *ret = s; + if (ret) + *ret = s; + return 0; } --- src/login/logind-session.c +++ src/login/logind-session.c 2014-08-25 17:22:46.000000000 +0000 @@ -153,8 +153,6 @@ void session_free(Session *s) { hashmap_remove(s->manager->sessions, s->id); - s->vt_source = sd_event_source_unref(s->vt_source); - free(s->state_file); free(s); } @@ -966,19 +964,9 @@ static int session_open_vt(Session *s) { return s->vtfd; } -static int session_vt_fn(sd_event_source *source, const struct signalfd_siginfo *si, void *data) { - Session *s = data; - - if (s->vtfd >= 0) - ioctl(s->vtfd, VT_RELDISP, 1); - - return 0; -} - int session_mute_vt(Session *s) { int vt, r; struct vt_mode mode = { 0 }; - sigset_t mask; if (s->vtnr < 1) return 0; @@ -1008,20 +996,12 @@ int session_mute_vt(Session *s) { goto error; } - sigemptyset(&mask); - sigaddset(&mask, SIGUSR1); - sigprocmask(SIG_BLOCK, &mask, NULL); - - r = sd_event_add_signal(s->manager->event, &s->vt_source, SIGUSR1, session_vt_fn, s); - if (r < 0) - goto error; - /* Oh, thanks to the VT layer, VT_AUTO does not work with KD_GRAPHICS. * So we need a dummy handler here which just acknowledges *all* VT * switch requests. */ mode.mode = VT_PROCESS; - mode.relsig = SIGUSR1; - mode.acqsig = SIGUSR1; + mode.relsig = SIGRTMIN; + mode.acqsig = SIGRTMIN + 1; r = ioctl(vt, VT_SETMODE, &mode); if (r < 0) { r = -errno; @@ -1045,8 +1025,6 @@ void session_restore_vt(Session *s) { if (vt < 0) return; - s->vt_source = sd_event_source_unref(s->vt_source); - ioctl(vt, KDSETMODE, KD_TEXT); if (read_one_line_file("/sys/module/vt/parameters/default_utf8", &utf8) >= 0 && *utf8 == '1') --- src/login/logind-session.h +++ src/login/logind-session.h 2014-08-25 00:00:00.000000000 +0000 @@ -98,7 +98,6 @@ struct Session { Seat *seat; unsigned int vtnr; int vtfd; - sd_event_source *vt_source; pid_t leader; uint32_t audit_id; --- src/login/logind.c +++ src/login/logind.c 2014-08-26 11:18:41.422235366 +0000 @@ -25,6 +25,7 @@ #include <string.h> #include <unistd.h> #include <linux/vt.h> +#include <sys/ioctl.h> #include <sys/timerfd.h> #include "sd-daemon.h" @@ -714,6 +715,47 @@ static int manager_connect_bus(Manager * return 0; } +static int manager_vt_switch(sd_event_source *src, const struct signalfd_siginfo *si, void *data) { + Manager *m = data; + Session *active, *iter; + + /* + * We got a VT-switch signal and we have to acknowledge it immediately. + * Preferably, we'd just use m->seat0->active->vtfd, but unfortunately, + * old user-space might run multiple sessions on a single VT, *sigh*. + * Therefore, we have to iterate all sessions and find one with a vtfd + * on the requested VT. + * As only VTs with active controllers have VT_PROCESS set, our current + * notion of the active VT might be wrong (for instance if the switch + * happens while we setup VT_PROCESS). Therefore, read the current VT + * first and then use s->active->vtnr as reference. Note that this is + * not racy, as no further VT-switch can happen as long as we're in + * synchronous VT_PROCESS mode. + */ + + assert(m->seat0); + seat_read_active_vt(m->seat0); + + active = m->seat0->active; + if (!active || active->vtnr < 1) { + log_warning("Received VT_PROCESS signal without a registered session on that VT."); + return 0; + } + + if (active->vtfd >= 0) { + ioctl(active->vtfd, VT_RELDISP, 1); + } else { + LIST_FOREACH(sessions_by_seat, iter, m->seat0->sessions) { + if (iter->vtnr == active->vtnr && iter->vtfd >= 0) { + ioctl(iter->vtfd, VT_RELDISP, 1); + break; + } + } + } + + return 0; +} + static int manager_connect_console(Manager *m) { int r; @@ -744,6 +786,34 @@ static int manager_connect_console(Manag return r; } + /* + * SIGRTMIN is used as global VT-release signal, SIGRTMIN + 1 is used + * as VT-acquire signal. We ignore any acquire-events (yes, we still + * have to provide a valid signal-number for it!) and acknowledge all + * release events immediately. + */ + + if (SIGRTMIN + 1 > SIGRTMAX) { + log_error("Not enough real-time signals available: %u-%u", SIGRTMIN, SIGRTMAX); + return -EINVAL; + } + + r = ignore_signals(SIGRTMIN + 1, -1); + if (r < 0) { + log_error("Cannot ignore SIGRTMIN + 1: %s", strerror(-r)); + return r; + } + + r = sigprocmask_many(SIG_BLOCK, SIGRTMIN, -1); + if (r < 0) { + log_error("Cannot block SIGRTMIN: %s", strerror(-r)); + return r; + } + + r = sd_event_add_signal(m->event, NULL, SIGRTMIN, manager_vt_switch, m); + if (r < 0) + return r; + return 0; } --- src/shared/util.c +++ src/shared/util.c 2014-08-26 10:20:14.000000000 +0000 @@ -2434,6 +2434,24 @@ void sigset_add_many(sigset_t *ss, ...) va_end(ap); } +int sigprocmask_many(int how, ...) { + va_list ap; + sigset_t ss; + int sig; + + assert_se(sigemptyset(&ss) == 0); + + va_start(ap, how); + while ((sig = va_arg(ap, int)) > 0) + assert_se(sigaddset(&ss, sig) == 0); + va_end(ap); + + if (sigprocmask(how, &ss, NULL) < 0) + return -errno; + + return 0; +} + char* gethostname_malloc(void) { struct utsname u; --- src/shared/util.h +++ src/shared/util.h 2014-08-26 10:21:08.000000000 +0000 @@ -390,6 +390,7 @@ char* dirname_malloc(const char *path); void rename_process(const char name[8]); void sigset_add_many(sigset_t *ss, ...); +int sigprocmask_many(int how, ...); bool hostname_is_set(void); ++++++ 0007-journald-also-increase-the-SendBuffer-of-dev-log-to-.patch ++++++ Based on 5e8b767df6e18444d5aff2987b5e5603361ed528 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <[email protected]> Date: Wed, 13 Aug 2014 18:53:05 +0200 Subject: [PATCH] journald: also increase the SendBuffer of /dev/log to 8M http://lists.freedesktop.org/archives/systemd-devel/2014-August/021825.html --- units/systemd-journald.socket | 6 ++++++ 1 file changed, 6 insertions(+) --- units/systemd-journald.socket +++ units/systemd-journald.socket 2014-08-22 14:31:11.022236471 +0000 @@ -23,4 +23,10 @@ ListenDatagram=/dev/log SocketMode=0666 PassCredentials=yes PassSecurity=yes + +# Increase both the send and receive buffer, so that things don't +# block early. Note that journald internally uses the this socket both +# for receiving syslog messages, and for forwarding them to any other +# syslog, hence we bump both values. ReceiveBuffer=8M +SendBuffer=8M ++++++ 0008-hwdb-update.patch ++++++ ++++ 1425 lines (skipped) ++++++ 0008-mount-setup-fix-counting-of-early-mounts-without-SMA.patch ++++++ >From 7c96ab1d2484ab2df3c6a84f1a1d2e076f469085 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <[email protected]> Date: Wed, 13 Aug 2014 20:01:19 +0200 Subject: [PATCH] mount-setup: fix counting of early mounts without SMACK http://lists.freedesktop.org/archives/systemd-devel/2014-August/021772.html --- src/core/mount-setup.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git src/core/mount-setup.c src/core/mount-setup.c index 206f89a..cc2633e 100644 --- src/core/mount-setup.c +++ src/core/mount-setup.c @@ -63,8 +63,13 @@ typedef struct MountPoint { /* The first three entries we might need before SELinux is up. The * fourth (securityfs) is needed by IMA to load a custom policy. The - * other ones we can delay until SELinux and IMA are loaded. */ + * other ones we can delay until SELinux and IMA are loaded. When + * SMACK is enabled we need smackfs, too, so it's a fifth one. */ +#ifdef HAVE_SMACK #define N_EARLY_MOUNT 5 +#else +#define N_EARLY_MOUNT 4 +#endif static const MountPoint mount_table[] = { { "sysfs", "/sys", "sysfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, -- 1.7.9.2 ++++++ 0009-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch ++++++ >From b9c488f60050248b35640f28e4d00958702ba1c3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <[email protected]> Date: Wed, 6 Aug 2014 13:14:51 +0200 Subject: [PATCH] journald: Fix off-by-one error in "Missed X kernel messages" warning On receiving a message, "kernel_seqnum" is set to "serial + 1". So subtracting 1 will cause messages like "Missed 0 kernel messages", which should be "Missed 1 kernel messages". --- src/journal/journald-kmsg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/journal/journald-kmsg.c src/journal/journald-kmsg.c index 9935986..fb8ea08 100644 --- src/journal/journald-kmsg.c +++ src/journal/journald-kmsg.c @@ -152,7 +152,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { /* Did we lose any? */ if (serial > *s->kernel_seqnum) server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED, "Missed %"PRIu64" kernel messages", - serial - *s->kernel_seqnum - 1); + serial - *s->kernel_seqnum); /* Make sure we never read this one again. Note that * we always store the next message serial we expect -- 1.7.9.2 ++++++ 0010-machine_kill-Don-t-kill-the-unit-when-killing-the-le.patch ++++++ >From 9d685ca8193c0da3ad5746be3871f5350179a3b3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <[email protected]> Date: Thu, 14 Aug 2014 19:59:16 +0200 Subject: [PATCH] machine_kill(): Don't kill the unit when killing the leader If "machinectl poweroff" or "machinectl reboot" is used on a systemd-nspawn container started with --keep-unit and --register, it should *only* send the appropriate signal to the leader PID (i.e. the container's systemd process). It shouldn't fall through to manager_kill_unit() to also send the signal to the unit. The latter ends up killing systemd-nspawn, which takes down the container prematurely. --- src/machine/machine.c | 2 ++ 1 file changed, 2 insertions(+) diff --git src/machine/machine.c src/machine/machine.c index 1c9177e..13d3448 100644 --- src/machine/machine.c +++ src/machine/machine.c @@ -493,6 +493,8 @@ int machine_kill(Machine *m, KillWho who, int signo) { if (kill(m->leader, signo) < 0) return -errno; + + return 0; } /* Otherwise make PID 1 do it for us, for the entire cgroup */ -- 1.7.9.2 ++++++ 0011-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch ++++++ >From ff50244582bf69e8489bba6ce59a21663d7f8274 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <[email protected]> Date: Mon, 18 Aug 2014 22:21:42 +0200 Subject: [PATCH] units: fix BindsTo= logic when applied relative to services with Type=oneshot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Start jobs for Type=oneshot units are successful when the unit state transition activating → inactive took place. In such a case all units that BindsTo= on it previously would continue to run, even though the unit they dependet on was actually already gone. --- src/core/unit.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git src/core/unit.c src/core/unit.c index a5f6b2e..950b83a 100644 --- src/core/unit.c +++ src/core/unit.c @@ -1471,12 +1471,44 @@ static void unit_check_unneeded(Unit *u) { if (unit_active_or_pending(other)) return; - log_info_unit(u->id, "Service %s is not needed anymore. Stopping.", u->id); + log_info_unit(u->id, "Unit %s is not needed anymore. Stopping.", u->id); /* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */ manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL); } +static void unit_check_binds_to(Unit *u) { + bool stop = false; + Unit *other; + Iterator i; + + assert(u); + + if (u->job) + return; + + if (unit_active_state(u) != UNIT_ACTIVE) + return; + + SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], i) { + if (other->job) + continue; + + if (!UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other))) + continue; + + stop = true; + } + + if (!stop) + return; + + log_info_unit(u->id, "Unit %s is bound to inactive service. Stopping, too.", u->id); + + /* A unit we need to run is gone. Sniff. Let's stop this. */ + manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL); +} + static void retroactively_start_dependencies(Unit *u) { Iterator i; Unit *other; @@ -1788,11 +1820,19 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su manager_recheck_journal(m); unit_trigger_notify(u); - /* Maybe we finished startup and are now ready for being - * stopped because unneeded? */ - if (u->manager->n_reloading <= 0) + if (u->manager->n_reloading <= 0) { + /* Maybe we finished startup and are now ready for + * being stopped because unneeded? */ unit_check_unneeded(u); + /* Maybe we finished startup, but something we needed + * has vanished? Let's die then. (This happens when + * something BindsTo= to a Type=oneshot unit, as these + * units go directly from starting to inactive, + * without ever entering started.) */ + unit_check_binds_to(u); + } + unit_add_to_dbus_queue(u); unit_add_to_gc_queue(u); } -- 1.7.9.2 ++++++ 0012-util-try-to-be-a-bit-more-NFS-compatible-when-checki.patch ++++++ >From 70421bdce2719d76efffd8afdc28433c75aac5a2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <[email protected]> Date: Mon, 18 Aug 2014 23:15:51 +0200 Subject: [PATCH] util: try to be a bit more NFS compatible when checking whether an FS is writable https://bugs.freedesktop.org/show_bug.cgi?id=81169 --- src/shared/path-util.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git src/shared/path-util.c src/shared/path-util.c index 57554cd..67566bc 100644 --- src/shared/path-util.c +++ src/shared/path-util.c @@ -533,7 +533,16 @@ int path_is_read_only_fs(const char *path) { if (statvfs(path, &st) < 0) return -errno; - return !!(st.f_flag & ST_RDONLY); + if (st.f_flag & ST_RDONLY) + return true; + + /* On NFS, statvfs() might not reflect whether we can actually + * write to the remote share. Let's try again with + * access(W_OK) which is more reliable, at least sometimes. */ + if (access(path, W_OK) < 0 && errno == EROFS) + return true; + + return false; } int path_is_os_tree(const char *path) { -- 1.7.9.2 ++++++ 1063-udev-path_id-suppress-ID_PATH-for-devices-with-an-un.patch ++++++ Based on e98bbfd2074e2b1079b7059341eac25741baf319 Mon Sep 17 00:00:00 2001 From: Kay Sievers <[email protected]> Date: Mon, 4 Aug 2014 18:15:34 +0200 Subject: [PATCH] udev: path_id - suppress ID_PATH for devices with an unknown parent device type https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1321816 --- src/udev/udev-builtin-path_id.c | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) --- src/udev/udev-builtin-path_id.c +++ src/udev/udev-builtin-path_id.c 2014-08-22 14:08:59.250235369 +0000 @@ -524,7 +524,8 @@ static int builtin_path_id(struct udev_d { struct udev_device *parent; char *path = NULL; - bool some_transport = false; + bool supported_transport = false; + bool supported_parent = false; /* S390 ccw bus */ parent = udev_device_get_parent_with_subsystem_devtype(dev, "ccw", NULL); @@ -545,47 +546,62 @@ static int builtin_path_id(struct udev_d handle_scsi_tape(parent, &path); } else if (streq(subsys, "scsi")) { parent = handle_scsi(parent, &path); - some_transport = true; + supported_transport = true; } else if (streq(subsys, "cciss")) { parent = handle_cciss(parent, &path); - some_transport = true; + supported_transport = true; } else if (streq(subsys, "usb")) { parent = handle_usb(parent, &path); - some_transport = true; + supported_transport = true; } else if (streq(subsys, "bcma")) { parent = handle_bcma(parent, &path); - some_transport = true; + supported_transport = true; } else if (streq(subsys, "serio")) { path_prepend(&path, "serio-%s", udev_device_get_sysnum(parent)); parent = skip_subsystem(parent, "serio"); } else if (streq(subsys, "pci")) { path_prepend(&path, "pci-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "pci"); + supported_parent = true; } else if (streq(subsys, "platform")) { path_prepend(&path, "platform-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "platform"); - some_transport = true; + supported_transport = true; + supported_parent = true; } else if (streq(subsys, "acpi")) { path_prepend(&path, "acpi-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "acpi"); + supported_parent = true; } else if (streq(subsys, "xen")) { path_prepend(&path, "xen-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "xen"); + supported_parent = true; } else if (streq(subsys, "scm")) { path_prepend(&path, "scm-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "scm"); - some_transport = true; + supported_transport = true; + supported_parent = true; } parent = udev_device_get_parent(parent); } /* - * Do not return a single-parent-device-only for block - * devices, they might have entire buses behind it which - * do not get unique IDs only by using the parent device. + * Do return devices with have an unknown type of parent device, they + * might produce conflicting IDs below multiple independent parent + * devices. */ - if (!some_transport && streq(udev_device_get_subsystem(dev), "block")) { + if (!supported_parent) { + free(path); + path = NULL; + } + + /* + * Do not return a have-only a single-parent block devices, some + * have entire hidden buses behind it, and not create predictable + * IDs that way. + */ + if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) { free(path); path = NULL; } -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
