Hello community,

here is the log from the commit of package systemd for openSUSE:Factory checked 
in at 2014-07-16 16:36:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-07-12 
17:14:39.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes        
2014-07-16 16:36:41.000000000 +0200
@@ -1,0 +2,81 @@
+Tue Jul 15 12:30:31 UTC 2014 - rmila...@suse.com
+
+- Only rename SRIOV-VF devices if device name start with eth (bnc#885232).
+  Add 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
+
+-------------------------------------------------------------------
+Tue Jul 15 07:39:40 UTC 2014 - wer...@suse.de
+
+- Add patch vhangup-on-all-consoles.patch that is do a vhangup on
+  lines (bnc#886599)
+
+-------------------------------------------------------------------
+Tue Jul 15 06:29:54 UTC 2014 - j...@suse.com
+
+- Removed %{_libexecdir}/modules-load.d/efivars.conf because the kernel
+  patch of autoload efivars driver accepted by linux-efi upstream.
+  (bnc#881559)
+  
https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=next&id=be756a5327fe3d4686d74d3e9b273010424e230c
+
+-------------------------------------------------------------------
+Mon Jul 14 14:53:21 UTC 2014 - wer...@suse.de
+
+- Update patch 
+  1007-physical-hotplug-cpu-and-memory.patch (bnc#869603)
+- Add script systemd-remount-tmpfs (bnc#869603) as helper script
+  for the rule changed in patch 1007-physical-hotplug-cpu-and-memory.patch
+
+-------------------------------------------------------------------
+Mon Jul 14 11:43:12 UTC 2014 - wer...@suse.de
+
+- Add upstream patch
+  0001-event-pull-in-sd-event.h-from-event-util.h.patch
+  0002-util-fix-has-cc-check-and-add-test.patch
+  0003-sd-event-always-call-epoll_ctl-on-mask-updates-if-ed.patch
+  0004-fileio-quote-more-shell-characters-in-envfiles.patch
+
+-------------------------------------------------------------------
+Fri Jul 11 12:21:06 UTC 2014 - wer...@suse.de
+
+- Only on SLES12 seccomp is available on ppc64 and s390x
+
+-------------------------------------------------------------------
+Thu Jul 10 13:33:32 UTC 2014 - wer...@suse.de
+
+- Port and add upstream patch
+  0001-units-make-ExecStopPost-action-part-of-ExecStart.patch
+
+-------------------------------------------------------------------
+Wed Jul  9 13:14:02 UTC 2014 - wer...@suse.de
+
+- Add patches
+  0001-logind-allow-switching-to-unused-VTs-via-SwitchTo.patch
+  0002-hostnamed-add-a-new-chassis-type-for-watches.patch
+- Port and add upstream patches
+  0001-journal-compress-return-early-in-uncompress_startswi.patch
+  0002-journal-compress-improve-xz-compression-performance.patch
+
+-------------------------------------------------------------------
+Wed Jul  9 12:41:53 UTC 2014 - meiss...@suse.com
+
+- enable seccomp also for ppc64 and s390x
+
+-------------------------------------------------------------------
+Tue Jul  8 10:59:26 UTC 2014 - wer...@suse.de
+
+- Port and add upstream patches
+  0001-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch
+  0002-util-don-t-consider-tabs-special-in-string_has_cc-an.patch
+  0003-architecture-add-string-table-entries-for-mips-le-ar.patch
+  0004-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
+  0005-service-don-t-accept-negative-ERRNO-notification-mes.patch
+  0006-systemctl-show-StatusErrno-value-in-systemctl-status.patch
+  0007-service-flush-status-text-and-errno-values-each-time.patch
+
+------------------------------------------------------------------
+Tue Jul  8 10:41:31 UTC 2014 - wer...@suse.de
+
+- Add upstream patch
+  1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch 
+
+-------------------------------------------------------------------
systemd.changes: same change

New:
----
  0001-event-pull-in-sd-event.h-from-event-util.h.patch
  0001-journal-compress-return-early-in-uncompress_startswi.patch
  0001-logind-allow-switching-to-unused-VTs-via-SwitchTo.patch
  0001-units-make-ExecStopPost-action-part-of-ExecStart.patch
  0001-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch
  0002-hostnamed-add-a-new-chassis-type-for-watches.patch
  0002-journal-compress-improve-xz-compression-performance.patch
  0002-util-don-t-consider-tabs-special-in-string_has_cc-an.patch
  0002-util-fix-has-cc-check-and-add-test.patch
  0003-architecture-add-string-table-entries-for-mips-le-ar.patch
  0003-sd-event-always-call-epoll_ctl-on-mask-updates-if-ed.patch
  0004-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
  0004-fileio-quote-more-shell-characters-in-envfiles.patch
  0005-service-don-t-accept-negative-ERRNO-notification-mes.patch
  0006-systemctl-show-StatusErrno-value-in-systemctl-status.patch
  0007-service-flush-status-text-and-errno-values-each-time.patch
  1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch
  1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
  systemd-remount-tmpfs
  vhangup-on-all-consoles.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ systemd-mini.spec ++++++
--- /var/tmp/diff_new_pack.1rsuNd/_old  2014-07-16 16:36:45.000000000 +0200
+++ /var/tmp/diff_new_pack.1rsuNd/_new  2014-07-16 16:36:45.000000000 +0200
@@ -106,11 +106,17 @@
 BuildRequires:  pkgconfig(libqrencode)
 BuildRequires:  pkgconfig(usbutils) >= 0.82
 %endif
+%if 0%{?suse_version} >= 1315
+%ifarch %ix86 x86_64 x32 %arm ppc64le s390x
+BuildRequires:  pkgconfig(libseccomp)
+%endif
+%else
 %if 0%{?suse_version} >= 1310
 %ifarch %ix86 x86_64 x32 %arm
 BuildRequires:  pkgconfig(libseccomp)
 %endif
 %endif
+%endif
 %if ! 0%{?bootstrap}
 BuildRequires:  libapparmor-devel
 %endif
@@ -140,6 +146,7 @@
 Requires:       pam-config >= 0.79-5
 Requires:       pwdutils
 Requires:       systemd-presets-branding
+Requires:       sysvinit-tools
 Requires:       util-linux >= 2.21
 Requires(post): coreutils
 Requires(post): findutils
@@ -176,6 +183,7 @@
 Source1062:     systemd-udev-root-symlink
 Source1063:     udev-generate-peristent-rule.sh
 Source1064:     systemd-sleep-grub
+Source1065:     systemd-remount-tmpfs
 
 #
 # PATCH-FIX-UPSTREAM 
avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch 
lnus...@suse.com bnc#791101 -- avoid assertion if invalid address familily is 
passed to gethostbyaddr_r
@@ -653,6 +661,40 @@
 Patch320:       0001-machine-don-t-return-uninitialized-variable.patch
 # PATCH-FIX-UPSTREAM added at 2014/07/07
 Patch321:       0002-vconsole-setup-run-setfont-before-loadkeys.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch322:       0001-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch323:       0002-util-don-t-consider-tabs-special-in-string_has_cc-an.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch324:       0003-architecture-add-string-table-entries-for-mips-le-ar.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch325:       0004-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch326:       0005-service-don-t-accept-negative-ERRNO-notification-mes.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch327:       0006-systemctl-show-StatusErrno-value-in-systemctl-status.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch328:       0007-service-flush-status-text-and-errno-values-each-time.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch329:       0001-journal-compress-return-early-in-uncompress_startswi.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch330:       0002-journal-compress-improve-xz-compression-performance.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch331:       0001-logind-allow-switching-to-unused-VTs-via-SwitchTo.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch332:       0002-hostnamed-add-a-new-chassis-type-for-watches.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/10
+Patch333:       0001-units-make-ExecStopPost-action-part-of-ExecStart.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch334:       0001-event-pull-in-sd-event.h-from-event-util.h.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch335:       0002-util-fix-has-cc-check-and-add-test.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch336:       0003-sd-event-always-call-epoll_ctl-on-mask-updates-if-ed.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch337:       0004-fileio-quote-more-shell-characters-in-envfiles.patch
+# PATCH-FIX-SUSE Do a vhangup on all consoles lines (bnc#886599)
+Patch338:       vhangup-on-all-consoles.patch
 
 # UDEV PATCHES
 # ============
@@ -756,6 +798,10 @@
 Patch1047:      1047-udev-net_setup_link-builtin-should-print-the-reason-.patch
 # PATCH-FIX-UPSTREAM 1048-udev-net_setup_link-add-a-bit-more-logging.patch
 Patch1048:      1048-udev-net_setup_link-add-a-bit-more-logging.patch
+# PATCH-FIX-UPSTREAM 
1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch
+Patch1049:      1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch
+# PATCH-FIX-SUSE 
1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch (bnc#885232)
+Patch1050:      
1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
 
 %description
 Systemd is a system and service manager, compatible with SysV and LSB
@@ -1235,6 +1281,23 @@
 %patch319 -p0
 %patch320 -p0
 %patch321 -p0
+%patch322 -p0
+%patch323 -p0
+%patch324 -p0
+%patch325 -p0
+%patch326 -p0
+%patch327 -p0
+%patch328 -p0
+%patch329 -p0
+%patch330 -p0
+%patch331 -p0
+%patch332 -p0
+%patch333 -p0
+%patch334 -p0
+%patch335 -p0
+%patch336 -p0
+%patch337 -p0
+%patch338 -p0
 
 # udev patches
 %patch1001 -p1
@@ -1292,6 +1355,8 @@
 %patch1046 -p1
 %patch1047 -p0
 %patch1048 -p0
+%patch1049 -p0
+%patch1050 -p1
 
 # ensure generate files are removed
 rm -f units/emergency.service
@@ -1466,6 +1531,7 @@
 install -m644 -D %{S:1062} 
%{buildroot}/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service
 install -m755 -D %{S:1063} 
%{buildroot}/%{_prefix}/lib/udev/udev-generate-peristent-rule
 install -m755 -D %{S:1064} %{buildroot}/%{_bindir}/systemd-sleep-grub
+install -m755 -D %{S:1065} %{buildroot}/%{_prefix}/lib/udev/remount-tmpfs
 mkdir -p %{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants
 ln -sf ../systemd-udev-root-symlink.service 
%{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants
 rm -rf %{buildroot}%{_sysconfdir}/rpm
@@ -1517,12 +1583,6 @@
 # load sg module at boot time
 sg
 EOF
-%if 0%{has_efi}
-cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/efivars.conf
-# load efivars module at boot time
-efivars
-EOF
-%endif
 
 # To avoid making life hard for Factory developers, don't package the
 # kernel.core_pattern setting until systemd-coredump is a part of an actual
@@ -1985,9 +2045,6 @@
 %dir %{_libexecdir}/modules-load.d
 %dir %{_sysconfdir}/modules-load.d
 %{_libexecdir}/modules-load.d/sg.conf
-%if 0%{has_efi}
-%{_libexecdir}/modules-load.d/efivars.conf
-%endif
 
 %dir %{_libexecdir}/tmpfiles.d
 %dir %{_sysconfdir}/tmpfiles.d
@@ -2168,6 +2225,7 @@
 %{_prefix}/lib/udev/write_dev_root_rule
 %{_prefix}/lib/udev/udev-generate-peristent-rule
 %{_prefix}/lib/udev/net-set-sriov-names
+%{_prefix}/lib/udev/remount-tmpfs
 %{_prefix}/lib/udev/rule_generator.functions
 %{_prefix}/lib/udev/write_net_rules
 %dir %{_prefix}/lib/udev/rules.d/

++++++ systemd.spec ++++++
--- /var/tmp/diff_new_pack.1rsuNd/_old  2014-07-16 16:36:45.000000000 +0200
+++ /var/tmp/diff_new_pack.1rsuNd/_new  2014-07-16 16:36:45.000000000 +0200
@@ -101,11 +101,17 @@
 BuildRequires:  pkgconfig(libqrencode)
 BuildRequires:  pkgconfig(usbutils) >= 0.82
 %endif
+%if 0%{?suse_version} >= 1315
+%ifarch %ix86 x86_64 x32 %arm ppc64le s390x
+BuildRequires:  pkgconfig(libseccomp)
+%endif
+%else
 %if 0%{?suse_version} >= 1310
 %ifarch %ix86 x86_64 x32 %arm
 BuildRequires:  pkgconfig(libseccomp)
 %endif
 %endif
+%endif
 %if ! 0%{?bootstrap}
 BuildRequires:  libapparmor-devel
 %endif
@@ -135,6 +141,7 @@
 Requires:       pam-config >= 0.79-5
 Requires:       pwdutils
 Requires:       systemd-presets-branding
+Requires:       sysvinit-tools
 Requires:       util-linux >= 2.21
 Requires(post): coreutils
 Requires(post): findutils
@@ -171,6 +178,7 @@
 Source1062:     systemd-udev-root-symlink
 Source1063:     udev-generate-peristent-rule.sh
 Source1064:     systemd-sleep-grub
+Source1065:     systemd-remount-tmpfs
 
 #
 # PATCH-FIX-UPSTREAM 
avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch 
lnus...@suse.com bnc#791101 -- avoid assertion if invalid address familily is 
passed to gethostbyaddr_r
@@ -648,6 +656,40 @@
 Patch320:       0001-machine-don-t-return-uninitialized-variable.patch
 # PATCH-FIX-UPSTREAM added at 2014/07/07
 Patch321:       0002-vconsole-setup-run-setfont-before-loadkeys.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch322:       0001-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch323:       0002-util-don-t-consider-tabs-special-in-string_has_cc-an.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch324:       0003-architecture-add-string-table-entries-for-mips-le-ar.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch325:       0004-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch326:       0005-service-don-t-accept-negative-ERRNO-notification-mes.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch327:       0006-systemctl-show-StatusErrno-value-in-systemctl-status.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/08
+Patch328:       0007-service-flush-status-text-and-errno-values-each-time.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch329:       0001-journal-compress-return-early-in-uncompress_startswi.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch330:       0002-journal-compress-improve-xz-compression-performance.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch331:       0001-logind-allow-switching-to-unused-VTs-via-SwitchTo.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/09
+Patch332:       0002-hostnamed-add-a-new-chassis-type-for-watches.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/10
+Patch333:       0001-units-make-ExecStopPost-action-part-of-ExecStart.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch334:       0001-event-pull-in-sd-event.h-from-event-util.h.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch335:       0002-util-fix-has-cc-check-and-add-test.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch336:       0003-sd-event-always-call-epoll_ctl-on-mask-updates-if-ed.patch
+# PATCH-FIX-UPSTREAM added at 2014/07/14
+Patch337:       0004-fileio-quote-more-shell-characters-in-envfiles.patch
+# PATCH-FIX-SUSE Do a vhangup on all consoles lines (bnc#886599)
+Patch338:       vhangup-on-all-consoles.patch
 
 # UDEV PATCHES
 # ============
@@ -751,6 +793,10 @@
 Patch1047:      1047-udev-net_setup_link-builtin-should-print-the-reason-.patch
 # PATCH-FIX-UPSTREAM 1048-udev-net_setup_link-add-a-bit-more-logging.patch
 Patch1048:      1048-udev-net_setup_link-add-a-bit-more-logging.patch
+# PATCH-FIX-UPSTREAM 
1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch
+Patch1049:      1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch
+# PATCH-FIX-SUSE 
1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch (bnc#885232)
+Patch1050:      
1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
 
 %description
 Systemd is a system and service manager, compatible with SysV and LSB
@@ -1230,6 +1276,23 @@
 %patch319 -p0
 %patch320 -p0
 %patch321 -p0
+%patch322 -p0
+%patch323 -p0
+%patch324 -p0
+%patch325 -p0
+%patch326 -p0
+%patch327 -p0
+%patch328 -p0
+%patch329 -p0
+%patch330 -p0
+%patch331 -p0
+%patch332 -p0
+%patch333 -p0
+%patch334 -p0
+%patch335 -p0
+%patch336 -p0
+%patch337 -p0
+%patch338 -p0
 
 # udev patches
 %patch1001 -p1
@@ -1287,6 +1350,8 @@
 %patch1046 -p1
 %patch1047 -p0
 %patch1048 -p0
+%patch1049 -p0
+%patch1050 -p1
 
 # ensure generate files are removed
 rm -f units/emergency.service
@@ -1461,6 +1526,7 @@
 install -m644 -D %{S:1062} 
%{buildroot}/%{_prefix}/lib/systemd/system/systemd-udev-root-symlink.service
 install -m755 -D %{S:1063} 
%{buildroot}/%{_prefix}/lib/udev/udev-generate-peristent-rule
 install -m755 -D %{S:1064} %{buildroot}/%{_bindir}/systemd-sleep-grub
+install -m755 -D %{S:1065} %{buildroot}/%{_prefix}/lib/udev/remount-tmpfs
 mkdir -p %{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants
 ln -sf ../systemd-udev-root-symlink.service 
%{buildroot}/%{_prefix}/lib/systemd/system/basic.target.wants
 rm -rf %{buildroot}%{_sysconfdir}/rpm
@@ -1512,12 +1578,6 @@
 # load sg module at boot time
 sg
 EOF
-%if 0%{has_efi}
-cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/efivars.conf
-# load efivars module at boot time
-efivars
-EOF
-%endif
 
 # To avoid making life hard for Factory developers, don't package the
 # kernel.core_pattern setting until systemd-coredump is a part of an actual
@@ -1980,9 +2040,6 @@
 %dir %{_libexecdir}/modules-load.d
 %dir %{_sysconfdir}/modules-load.d
 %{_libexecdir}/modules-load.d/sg.conf
-%if 0%{has_efi}
-%{_libexecdir}/modules-load.d/efivars.conf
-%endif
 
 %dir %{_libexecdir}/tmpfiles.d
 %dir %{_sysconfdir}/tmpfiles.d
@@ -2163,6 +2220,7 @@
 %{_prefix}/lib/udev/write_dev_root_rule
 %{_prefix}/lib/udev/udev-generate-peristent-rule
 %{_prefix}/lib/udev/net-set-sriov-names
+%{_prefix}/lib/udev/remount-tmpfs
 %{_prefix}/lib/udev/rule_generator.functions
 %{_prefix}/lib/udev/write_net_rules
 %dir %{_prefix}/lib/udev/rules.d/

++++++ 0001-event-pull-in-sd-event.h-from-event-util.h.patch ++++++
>From 138992534878483de28417dfc61c546bba5cb8ad Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Thu, 10 Jul 2014 18:25:08 +0200
Subject: [PATCH] event: pull in sd-event.h from event-util.h

---
 src/libsystemd/sd-event/event-util.h |    1 +
 1 file changed, 1 insertion(+)

diff --git src/libsystemd/sd-event/event-util.h 
src/libsystemd/sd-event/event-util.h
index e58020d..e7cad9b 100644
--- src/libsystemd/sd-event/event-util.h
+++ src/libsystemd/sd-event/event-util.h
@@ -22,6 +22,7 @@
 ***/
 
 #include "util.h"
+#include "sd-event.h"
 
 DEFINE_TRIVIAL_CLEANUP_FUNC(sd_event*, sd_event_unref);
 DEFINE_TRIVIAL_CLEANUP_FUNC(sd_event_source*, sd_event_source_unref);
-- 
1.7.9.2

++++++ 0001-journal-compress-return-early-in-uncompress_startswi.patch ++++++
Based on 5e592c66bdf76dfc8445b332f7a5088ca504ee90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbys...@in.waw.pl>
Date: Fri, 4 Jul 2014 19:53:58 -0400
Subject: [PATCH] journal/compress: return early in uncompress_startswith

uncompress_startswith would always decode the whole stream, even
if it did not start with the given prefix.

Reallocation policy was also strange.
---
 src/journal/compress.c |   91 ++++++++++++++-----------------------------------
 1 file changed, 27 insertions(+), 64 deletions(-)

--- src/journal/compress.c
+++ src/journal/compress.c      2014-07-09 00:00:00.000000000 +0000
@@ -69,10 +69,9 @@ fail:
 bool uncompress_blob(const void *src, uint64_t src_size,
                      void **dst, uint64_t *dst_alloc_size, uint64_t* dst_size, 
uint64_t dst_max) {
 
-        lzma_stream s = LZMA_STREAM_INIT;
+        _cleanup_(lzma_end) lzma_stream s = LZMA_STREAM_INIT;
         lzma_ret ret;
         uint64_t space;
-        bool b = false;
 
         assert(src);
         assert(src_size > 0);
@@ -85,26 +84,18 @@ bool uncompress_blob(const void *src, ui
         if (ret != LZMA_OK)
                 return false;
 
-        if (*dst_alloc_size <= src_size) {
-                void *p;
-
-                p = realloc(*dst, src_size*2);
-                if (!p)
-                        return false;
-
-                *dst = p;
-                *dst_alloc_size = src_size*2;
-        }
+        space = MIN(src_size * 2, dst_max ?: (uint64_t) -1);
+        if (!greedy_realloc(dst, dst_alloc_size, space, 1))
+                return false;
 
         s.next_in = src;
         s.avail_in = src_size;
 
         s.next_out = *dst;
-        space = dst_max > 0 ? MIN(*dst_alloc_size, dst_max) : *dst_alloc_size;
         s.avail_out = space;
 
         for (;;) {
-                void *p;
+                uint64_t used;
 
                 ret = lzma_code(&s, LZMA_FINISH);
 
@@ -112,31 +103,25 @@ bool uncompress_blob(const void *src, ui
                         break;
 
                 if (ret != LZMA_OK)
-                        goto fail;
+                        return false;
 
                 if (dst_max > 0 && (space - s.avail_out) >= dst_max)
                         break;
 
-                p = realloc(*dst, space*2);
-                if (!p)
-                        goto fail;
-
-                s.next_out = (uint8_t*) p + ((uint8_t*) s.next_out - 
(uint8_t*) *dst);
-                s.avail_out += space;
+                if (dst_max > 0 && space == dst_max)
+                        return false;
 
-                space *= 2;
+                used = space - s.avail_out;
+                space = MIN(2 * space, dst_max ?: (uint64_t) -1);
+                if (!greedy_realloc(dst, dst_alloc_size, space, 1))
+                        return false;
 
-                *dst = p;
-                *dst_alloc_size = space;
+                s.avail_out = space - used;
+                s.next_out = *dst + used;
         }
 
         *dst_size = space - s.avail_out;
-        b = true;
-
-fail:
-        lzma_end(&s);
-
-        return b;
+        return true;
 }
 
 bool uncompress_startswith(const void *src, uint64_t src_size,
@@ -144,9 +129,8 @@ bool uncompress_startswith(const void *s
                            const void *prefix, uint64_t prefix_len,
                            uint8_t extra) {
 
-        lzma_stream s = LZMA_STREAM_INIT;
+        _cleanup_(lzma_end) lzma_stream s = LZMA_STREAM_INIT;
         lzma_ret ret;
-        bool b = false;
 
         /* Checks whether the uncompressed blob starts with the
          * mentioned prefix. The byte extra needs to follow the
@@ -163,16 +147,8 @@ bool uncompress_startswith(const void *s
         if (ret != LZMA_OK)
                 return false;
 
-        if (*buffer_size <= prefix_len) {
-                void *p;
-
-                p = realloc(*buffer, prefix_len*2);
-                if (!p)
-                        return false;
-
-                *buffer = p;
-                *buffer_size = prefix_len*2;
-        }
+        if (!(greedy_realloc(buffer, buffer_size, prefix_len + 1, 1)))
+                return false;
 
         s.next_in = src;
         s.avail_in = src_size;
@@ -181,36 +157,23 @@ bool uncompress_startswith(const void *s
         s.avail_out = *buffer_size;
 
         for (;;) {
-                void *p;
-
                 ret = lzma_code(&s, LZMA_FINISH);
 
                 if (ret != LZMA_STREAM_END && ret != LZMA_OK)
-                        goto fail;
+                        return false;
 
-                if ((*buffer_size - s.avail_out > prefix_len) &&
-                    memcmp(*buffer, prefix, prefix_len) == 0 &&
-                    ((const uint8_t*) *buffer)[prefix_len] == extra)
-                        break;
+                if (*buffer_size - s.avail_out >= prefix_len + 1)
+                        return memcmp(*buffer, prefix, prefix_len) == 0 &&
+                                ((const uint8_t*) *buffer)[prefix_len] == 
extra;
 
                 if (ret == LZMA_STREAM_END)
-                        goto fail;
-
-                p = realloc(*buffer, *buffer_size*2);
-                if (!p)
-                        goto fail;
+                        return false;
 
-                s.next_out = (uint8_t*) p + ((uint8_t*) s.next_out - 
(uint8_t*) *buffer);
                 s.avail_out += *buffer_size;
 
-                *buffer = p;
-                *buffer_size *= 2;
-        }
-
-        b = true;
-
-fail:
-        lzma_end(&s);
+                if (!(greedy_realloc(buffer, buffer_size, *buffer_size * 2, 
1)))
+                        return false;
 
-        return b;
+                s.next_out = *buffer + *buffer_size - s.avail_out;
+        }
 }
++++++ 0001-logind-allow-switching-to-unused-VTs-via-SwitchTo.patch ++++++
>From 154034270c4643b7cfe61c0be1676d78bb1b7b07 Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrm...@gmail.com>
Date: Tue, 8 Jul 2014 12:56:55 +0200
Subject: [PATCH] logind: allow switching to unused VTs via SwitchTo()

If compositors use the new SwitchTo() logic to map F1-F12, we should allow
them to switch to unregistered VTs, too. Otherwise, the auto-spawn logic
of gettys won't trigger.

Reported-by: Jasper St. Pierre <jstpie...@mecheye.net>
Signed-off-by: David Herrmann <dh.herrm...@gmail.com>
---
 src/login/logind-seat.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git src/login/logind-seat.c src/login/logind-seat.c
index 3114de8..9992195 100644
--- src/login/logind-seat.c
+++ src/login/logind-seat.c
@@ -275,8 +275,13 @@ int seat_switch_to(Seat *s, unsigned int num) {
         if (!num)
                 return -EINVAL;
 
-        if (num >= s->position_count || !s->positions[num])
+        if (num >= s->position_count || !s->positions[num]) {
+                /* allow switching to unused VTs to trigger auto-activate */
+                if (seat_has_vts(s) && num < 64)
+                        return chvt(num);
+
                 return -EINVAL;
+        }
 
         return session_activate(s->positions[num]);
 }
-- 
1.7.9.2

++++++ 0001-units-make-ExecStopPost-action-part-of-ExecStart.patch ++++++
Based on d3381512282f2ca1c7669f77fb736a90fdce6982 Mon Sep 17 00:00:00 2001
From: Michal Sekletar <msekl...@redhat.com>
Date: Tue, 8 Jul 2014 17:42:23 +0200
Subject: [PATCH] units: make ExecStopPost action part of ExecStart

Currently after exiting rescue shell we isolate default target. User
might want to isolate to some other target than default one. However
issuing systemctl isolate command to desired target would bring system
to default target as a consequence of running ExecStopPost action.

Having common ancestor for rescue shell and possible followup systemctl
default command should fix this. If user exits rescue shell we will
proceed with isolating default target, otherwise, on manual isolate,
parent shell process is terminated and we don't isolate default target,
but target chosen by user.

Suggested-by: Michal Schmidt <mschm...@redhat.com>
---
 units/emergency.service.in |    3 +--
 units/rescue.service.m4.in |    3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

--- units/emergency.service.in
+++ units/emergency.service.in  2014-07-10 13:31:50.662235825 +0000
@@ -18,8 +18,7 @@ WorkingDirectory=/root
 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
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block 
default"
 Type=idle
 StandardInput=tty-force
 StandardOutput=inherit
--- units/rescue.service.m4.in
+++ units/rescue.service.m4.in  2014-07-10 13:32:15.678235509 +0000
@@ -19,8 +19,7 @@ WorkingDirectory=/root
 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
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block 
default"
 Type=idle
 StandardInput=tty-force
 StandardOutput=inherit
++++++ 0001-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch ++++++
>From 3a8a916338d8446b938f3cf40f6aae0c611892e3 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Mon, 7 Jul 2014 11:47:10 +0200
Subject: [PATCH] util: consider 0x7F a control chracter (which it is: DEL)

Let's better be safe than sorry.
---
 src/shared/util.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git src/shared/util.c src/shared/util.c
index 3d875c7..d25ee66 100644
--- src/shared/util.c
+++ src/shared/util.c
@@ -1608,8 +1608,9 @@ int read_one_char(FILE *f, char *ret, usec_t t, bool 
*need_nl) {
                         return -ETIMEDOUT;
         }
 
+        errno = 0;
         if (!fgets(line, sizeof(line), f))
-                return -EIO;
+                return errno ? -errno : -EIO;
 
         truncate_nl(line);
 
@@ -5355,6 +5356,9 @@ bool string_is_safe(const char *p) {
                 if (*t > 0 && *t < ' ')
                         return false;
 
+                if (*t == 127)
+                        return false;
+
                 if (strchr("\\\"\'", *t))
                         return false;
         }
@@ -5371,10 +5375,14 @@ bool string_has_cc(const char *p) {
 
         assert(p);
 
-        for (t = p; *t; t++)
+        for (t = p; *t; t++) {
                 if (*t > 0 && *t < ' ' && *t != '\t')
                         return true;
 
+                if (*t == 127)
+                        return true;
+        }
+
         return false;
 }
 
-- 
1.7.9.2

++++++ 0002-hostnamed-add-a-new-chassis-type-for-watches.patch ++++++
>From c49e59c1831f20fe02276d7bc6ba7d23d24c4ab3 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Wed, 9 Jul 2014 13:20:05 +0200
Subject: [PATCH] hostnamed: add a new chassis type for watches

---
 src/hostname/hostnamed.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git src/hostname/hostnamed.c src/hostname/hostnamed.c
index 514554d..eaae113 100644
--- src/hostname/hostnamed.c
+++ src/hostname/hostnamed.c
@@ -144,7 +144,8 @@ static bool valid_chassis(const char *chassis) {
                         "laptop\0"
                         "server\0"
                         "tablet\0"
-                        "handset\0",
+                        "handset\0"
+                        "watch\0",
                         chassis);
 }
 
-- 
1.7.9.2

++++++ 0002-journal-compress-improve-xz-compression-performance.patch ++++++
Based on 1930eed2a7855d2df06ccf51f9e394428bf547e2 Mon Sep 17 00:00:00 2001
From: Jon Severinsson <j...@severinsson.net>
Date: Tue, 8 Jul 2014 18:29:46 +0200
Subject: [PATCH] journal/compress: improve xz compression performance

The new lzma2 compression options at the top of compress_blob_xz are
equivalent to using preset "0", exept for using a 1 MiB dictionary
(the same as preset "1"). This makes the memory usage at most 7.5 MiB
in the compressor, and 1 MiB in the decompressor, instead of the
previous 92 MiB in the compressor and 8 MiB in the decompressor.

According to test-compress-benchmark this commit makes XZ compression
20 times faster, with no increase in compressed data size.
Using more realistic test data (an ELF binary rather than repeating
ASCII letters 'a' through 'z' in order) it only provides a factor 10
speedup, and at a cost if a 10% increase in compressed data size.
But that is still a worthwhile trade-off.

According to test-compress-benchmark XZ compression is still 25 times
slower than LZ4, but the compressed data is one eighth the size.
Using more realistic test data XZ compression is only 18 times slower
than LZ4, and the compressed data is only one quarter the size.

---
 src/journal/compress.c |   33 ++++++++++++++-------------------
 1 file changed, 14 insertions(+), 19 deletions(-)

--- src/journal/compress.c
+++ src/journal/compress.c      2014-07-09 12:09:45.814235274 +0000
@@ -28,8 +28,15 @@
 #include "compress.h"
 
 bool compress_blob(const void *src, uint64_t src_size, void *dst, uint64_t 
*dst_size) {
-        lzma_stream s = LZMA_STREAM_INIT;
+        static const lzma_options_lzma opt = {
+                1u << 20u, NULL, 0, LZMA_LC_DEFAULT, LZMA_LP_DEFAULT,
+                LZMA_PB_DEFAULT, LZMA_MODE_FAST, 128, LZMA_MF_HC3, 4};
+        static const lzma_filter filters[2] = {
+                {LZMA_FILTER_LZMA2, (lzma_options_lzma*) &opt},
+                {LZMA_VLI_UNKNOWN, NULL}
+        };
         lzma_ret ret;
+        size_t out_pos = 0;
         bool b = false;
 
         assert(src);
@@ -40,29 +47,17 @@ bool compress_blob(const void *src, uint
         /* Returns false if we couldn't compress the data or the
          * compressed result is longer than the original */
 
-        ret = lzma_easy_encoder(&s, LZMA_PRESET_DEFAULT, LZMA_CHECK_NONE);
-        if (ret != LZMA_OK)
+        if (src_size < 80)
                 return false;
 
-        s.next_in = src;
-        s.avail_in = src_size;
-        s.next_out = dst;
-        s.avail_out = src_size;
-
-        /* Does it fit? */
-        if (lzma_code(&s, LZMA_FINISH) != LZMA_STREAM_END)
-                goto fail;
-
-        /* Is it actually shorter? */
-        if (s.avail_out == 0)
-                goto fail;
+        ret = lzma_stream_buffer_encode((lzma_filter*) filters, 
LZMA_CHECK_NONE, NULL,
+                                        src, src_size, dst, &out_pos, src_size 
- 1);
+        if (ret != LZMA_OK)
+                return false;
 
-        *dst_size = src_size - s.avail_out;
+        *dst_size = out_pos;
         b = true;
 
-fail:
-        lzma_end(&s);
-
         return b;
 }
 
++++++ 0002-util-don-t-consider-tabs-special-in-string_has_cc-an.patch ++++++
>From 6294aa76d818e831de4592b41a37e225fd0871f9 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Mon, 7 Jul 2014 12:04:55 +0200
Subject: [PATCH] util: don't consider tabs special in string_has_cc() anymore

Instead, take a list of exceptions to our usual CC check
---
 src/hostname/hostnamed.c |    3 +--
 src/shared/env-util.c    |    4 +++-
 src/shared/fileio.c      |    2 +-
 src/shared/util.c        |   19 ++++++++++---------
 src/shared/util.h        |    5 +++--
 5 files changed, 18 insertions(+), 15 deletions(-)

diff --git src/hostname/hostnamed.c src/hostname/hostnamed.c
index 14629dd..514554d 100644
--- src/hostname/hostnamed.c
+++ src/hostname/hostnamed.c
@@ -550,8 +550,7 @@ static int set_machine_info(Context *c, sd_bus *bus, 
sd_bus_message *m, int prop
 
                 if (prop == PROP_ICON_NAME && !filename_is_safe(name))
                         return sd_bus_error_setf(error, 
SD_BUS_ERROR_INVALID_ARGS, "Invalid icon name '%s'", name);
-                if (prop == PROP_PRETTY_HOSTNAME &&
-                    (string_has_cc(name) || chars_intersect(name, "\t")))
+                if (prop == PROP_PRETTY_HOSTNAME && string_has_cc(name, NULL))
                         return sd_bus_error_setf(error, 
SD_BUS_ERROR_INVALID_ARGS, "Invalid pretty host name '%s'", name);
                 if (prop == PROP_CHASSIS && !valid_chassis(name))
                         return sd_bus_error_setf(error, 
SD_BUS_ERROR_INVALID_ARGS, "Invalid chassis '%s'", name);
diff --git src/shared/env-util.c src/shared/env-util.c
index b2e4553..20b208f 100644
--- src/shared/env-util.c
+++ src/shared/env-util.c
@@ -78,7 +78,9 @@ bool env_value_is_valid(const char *e) {
         if (!utf8_is_valid(e))
                 return false;
 
-        if (string_has_cc(e))
+        /* bash allows tabs in environment variables, and so should
+         * we */
+        if (string_has_cc(e, "\t"))
                 return false;
 
         /* POSIX says the overall size of the environment block cannot
diff --git src/shared/fileio.c src/shared/fileio.c
index fb1c1bc..b1de590 100644
--- src/shared/fileio.c
+++ src/shared/fileio.c
@@ -738,7 +738,7 @@ static void write_env_var(FILE *f, const char *v) {
         p++;
         fwrite(v, 1, p-v, f);
 
-        if (string_has_cc(p) || chars_intersect(p, WHITESPACE "\'\"\\`$")) {
+        if (string_has_cc(p, NULL) || chars_intersect(p, WHITESPACE 
"\'\"\\`$")) {
                 fputc('\"', f);
 
                 for (; *p; p++) {
diff --git src/shared/util.c src/shared/util.c
index d25ee66..d223ecf 100644
--- src/shared/util.c
+++ src/shared/util.c
@@ -5350,16 +5350,14 @@ bool filename_is_safe(const char *p) {
 bool string_is_safe(const char *p) {
         const char *t;
 
-        assert(p);
+        if (!p)
+                return false;
 
         for (t = p; *t; t++) {
                 if (*t > 0 && *t < ' ')
                         return false;
 
-                if (*t == 127)
-                        return false;
-
-                if (strchr("\\\"\'", *t))
+                if (strchr("\\\"\'\0x7f", *t))
                         return false;
         }
 
@@ -5367,16 +5365,19 @@ bool string_is_safe(const char *p) {
 }
 
 /**
- * Check if a string contains control characters.
- * Spaces and tabs are not considered control characters.
+ * Check if a string contains control characters. If 'ok' is non-NULL
+ * it may be a string containing additional CCs to be considered OK.
  */
-bool string_has_cc(const char *p) {
+bool string_has_cc(const char *p, const char *ok) {
         const char *t;
 
         assert(p);
 
         for (t = p; *t; t++) {
-                if (*t > 0 && *t < ' ' && *t != '\t')
+                if (ok && strchr(ok, *t))
+                        return false;
+
+                if (*t > 0 && *t < ' ')
                         return true;
 
                 if (*t == 127)
diff --git src/shared/util.h src/shared/util.h
index e23069c..8544940 100644
--- src/shared/util.h
+++ src/shared/util.h
@@ -382,7 +382,8 @@ bool fstype_is_network(const char *fstype);
 int chvt(int vt);
 
 int read_one_char(FILE *f, char *ret, usec_t timeout, bool *need_nl);
-int ask(char *ret, const char *replies, const char *text, ...) _printf_(3, 4);
+int ask_char(char *ret, const char *replies, const char *text, ...) 
_printf_(3, 4);
+int ask_string(char **ret, const char *text, ...) _printf_(2, 3);
 
 int reset_terminal_fd(int fd, bool switch_to_text);
 int reset_terminal(const char *name);
@@ -692,7 +693,7 @@ _alloc_(2, 3) static inline void *memdup_multiply(const 
void *p, size_t a, size_
 bool filename_is_safe(const char *p) _pure_;
 bool path_is_safe(const char *p) _pure_;
 bool string_is_safe(const char *p) _pure_;
-bool string_has_cc(const char *p) _pure_;
+bool string_has_cc(const char *p, const char *ok) _pure_;
 
 /**
  * Check if a string contains any glob patterns.
-- 
1.7.9.2

++++++ 0002-util-fix-has-cc-check-and-add-test.patch ++++++
Based on 1cb1767a29458b3d16d6b161b4ee34dd496ff60d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbys...@in.waw.pl>
Date: Fri, 11 Jul 2014 09:21:15 -0400
Subject: [PATCH] util: fix has cc check and add test

---
 src/shared/util.c    |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git src/shared/util.c src/shared/util.c
index 3342798..75dc58b 100644
--- src/shared/util.c
+++ src/shared/util.c
@@ -5419,7 +5419,7 @@ bool string_has_cc(const char *p, const char *ok) {
 
         for (t = p; *t; t++) {
                 if (ok && strchr(ok, *t))
-                        return false;
+                        continue;
 
                 if (*t > 0 && *t < ' ')
                         return true;
-- 
1.7.9.2

++++++ 0003-architecture-add-string-table-entries-for-mips-le-ar.patch ++++++
Based on 037c26d0aeb750ca9c8d605884ea1db7baecfea8 Mon Sep 17 00:00:00 2001
Based on 9a00f57a5ba7ed431e6bac8d8b36518708503b4e Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Mon, 7 Jul 2014 14:59:06 +0200
Subject: [PATCH] architecture: add string table entries for mips-le archs
 which were missing

---
 src/shared/architecture.c |    2 ++
 src/shared/architecture.h |    4 ++++
 2 files changed, 6 insertions(+)

diff --git src/shared/architecture.c src/shared/architecture.c
index 6cdca4e..dc45f35 100644
--- src/shared/architecture.c
+++ src/shared/architecture.c
@@ -153,7 +153,9 @@ static const char *const 
architecture_table[_ARCHITECTURE_MAX] = {
         [ARCHITECTURE_SPARC] = "sparc",
         [ARCHITECTURE_SPARC64] = "sparc64",
         [ARCHITECTURE_MIPS] = "mips",
+        [ARCHITECTURE_MIPS_LE] = "mips-le",
         [ARCHITECTURE_MIPS64] = "mips64",
+        [ARCHITECTURE_MIPS64_LE] = "mips64-le",
         [ARCHITECTURE_ALPHA] = "alpha",
         [ARCHITECTURE_ARM] = "arm",
         [ARCHITECTURE_ARM_BE] = "arm-be",
diff --git src/shared/architecture.h src/shared/architecture.h
index 20e848b..0807924 100644
--- src/shared/architecture.h
+++ src/shared/architecture.h
@@ -23,6 +23,8 @@
 
 #include "util.h"
 
+/* A cleaned up architecture definition */
+
 typedef enum Architecture {
         ARCHITECTURE_X86 = 0,
         ARCHITECTURE_X86_64,
@@ -38,7 +40,9 @@ typedef enum Architecture {
         ARCHITECTURE_SPARC,
         ARCHITECTURE_SPARC64,
         ARCHITECTURE_MIPS,
+        ARCHITECTURE_MIPS_LE,
         ARCHITECTURE_MIPS64,
+        ARCHITECTURE_MIPS64_LE,
         ARCHITECTURE_ALPHA,
         ARCHITECTURE_ARM,
         ARCHITECTURE_ARM_BE,
-- 
1.7.9.2

++++++ 0003-sd-event-always-call-epoll_ctl-on-mask-updates-if-ed.patch ++++++
>From b63c8d4f0364457b0ead8793504012bb7113974f Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrm...@gmail.com>
Date: Thu, 10 Jul 2014 00:47:23 +0200
Subject: [PATCH] sd-event: always call epoll_ctl() on mask-updates if
 edge-triggered

A call to sd_event_source_set_io_events() skipps calling into the kernel
if the new event-mask matches the old one. This is safe for
level-triggered sources as the kernel moves them onto the ready-list
automatically if events change. However, edge-triggered sources might not
be on the ready-list even though events are present.

A call to sd_event_source_set_io_events() with EPOLLET set might thus be
used to just move the io-source onto the ready-list so the next poll
will return it again. This is very useful to avoid starvation in
priority-based event queues.

Imagine a read() loop on an edge-triggered fd. If we cannot read data fast
enough to drain the receive queue, we might decide to skip reading for now
and schedule it for later. On edge-triggered io-sources we have to make
sure it's put on the ready-list so the next dispatch-round will return it
again if it's still the highest priority task. We could make sd-event
handle edge-triggered sources directly and allow marking them ready again.
However, it's much simpler to let the kernel do that for now via
EPOLL_CTL_MOD.
---
 src/libsystemd/sd-event/sd-event.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git src/libsystemd/sd-event/sd-event.c src/libsystemd/sd-event/sd-event.c
index 53f1904..a21f7db 100644
--- src/libsystemd/sd-event/sd-event.c
+++ src/libsystemd/sd-event/sd-event.c
@@ -1282,7 +1282,8 @@ _public_ int 
sd_event_source_set_io_events(sd_event_source *s, uint32_t events)
         assert_return(s->event->state != SD_EVENT_FINISHED, -ESTALE);
         assert_return(!event_pid_changed(s->event), -ECHILD);
 
-        if (s->io.events == events)
+        /* edge-triggered updates are never skipped, so we can reset edges */
+        if (s->io.events == events && !(events & EPOLLET))
                 return 0;
 
         if (s->enabled != SD_EVENT_OFF) {
-- 
1.7.9.2

++++++ 0004-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch ++++++
Based on 4774e357268e4a1e9fa82adb0563a538932a4c8e Mon Sep 17 00:00:00 2001
From: Miguel Angel Ajo <mangel...@redhat.com>
Date: Mon, 7 Jul 2014 14:20:36 +0200
Subject: [PATCH] core: Added support for ERRNO NOTIFY_SOCKET message parsing,
 and added StatusErrno dbus property along StatusText to
 allow notification of numeric status condition while
 degraded service operation or any other special situation.

---
 src/core/dbus-service.c |    1 +
 src/core/service.c      |   17 +++++++++++++++++
 src/core/service.h      |    1 +
 3 files changed, 19 insertions(+)

diff --git src/core/dbus-service.c src/core/dbus-service.c
index 093289f..5a881e8 100644
--- src/core/dbus-service.c
+++ src/core/dbus-service.c
@@ -60,6 +60,7 @@ const sd_bus_vtable bus_service_vtable[] = {
         SD_BUS_PROPERTY("ControlPID", "u", bus_property_get_pid, 
offsetof(Service, control_pid), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
         SD_BUS_PROPERTY("BusName", "s", NULL, offsetof(Service, bus_name), 
SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("StatusText", "s", NULL, offsetof(Service, 
status_text), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
+        SD_BUS_PROPERTY("StatusErrno", "i", NULL, offsetof(Service, 
status_errno), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
         SD_BUS_PROPERTY("Result", "s", property_get_result, offsetof(Service, 
result), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
         BUS_EXEC_STATUS_VTABLE("ExecMain", offsetof(Service, 
main_exec_status), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
         BUS_EXEC_COMMAND_LIST_VTABLE("ExecStartPre", offsetof(Service, 
exec_command[SERVICE_EXEC_START_PRE]), 
SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION),
diff --git src/core/service.c src/core/service.c
index 0b19767..ace45e2 100644
--- src/core/service.c
+++ src/core/service.c
@@ -2637,6 +2637,23 @@ static void service_notify_message(Unit *u, pid_t pid, 
char **tags) {
                         free(t);
         }
 
+        /* Interpret ERRNO= */
+        e = strv_find_prefix(tags, "ERRNO=");
+        if (e) {
+                int status_errno;
+
+                if (safe_atoi(e + 6, &status_errno) < 0)
+                        log_warning_unit(u->id, "Failed to parse ERRNO= field 
in notification message: %s", e);
+                else {
+                        log_debug_unit(u->id, "%s: got %s", u->id, e);
+
+                        if (s->status_errno != status_errno) {
+                                s->status_errno = status_errno;
+                                notify_dbus = true;
+                        }
+                }
+        }
+
         /* Interpret WATCHDOG= */
         if (strv_find(tags, "WATCHDOG=1")) {
                 log_debug_unit(u->id, "%s: got WATCHDOG=1", u->id);
--- src/core/service.h
+++ src/core/service.h  2014-07-08 12:54:39.238736046 +0200
@@ -187,6 +187,7 @@ struct Service {
         char *bus_name;
 
         char *status_text;
+        int status_errno;
 
         RateLimit start_limit;
         StartLimitAction start_limit_action;
-- 
1.7.9.2

++++++ 0004-fileio-quote-more-shell-characters-in-envfiles.patch ++++++
>From 0ce5a80601597fe4d1a715a8f70ce8d5ccaa2d86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <graw...@gmail.com>
Date: Sun, 13 Jul 2014 18:49:00 +0300
Subject: [PATCH] fileio: quote more shell characters in envfiles

Turns out, making strings shell-proof is harder than expected:

    # machinectl set-hostname "foo|poweroff" && . /etc/machine-info

(This could be simplified by quoting *and* escaping all characters,
which is harmless in shell but unnecessary.)
---
 src/shared/fileio.c |    4 ++--
 src/shared/util.h   |    6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git src/shared/fileio.c src/shared/fileio.c
index b0ab780..cbb40c2 100644
--- src/shared/fileio.c
+++ src/shared/fileio.c
@@ -738,11 +738,11 @@ static void write_env_var(FILE *f, const char *v) {
         p++;
         fwrite(v, 1, p-v, f);
 
-        if (string_has_cc(p, NULL) || chars_intersect(p, WHITESPACE 
"\'\"\\`$")) {
+        if (string_has_cc(p, NULL) || chars_intersect(p, WHITESPACE 
SHELL_NEED_QUOTES)) {
                 fputc('\"', f);
 
                 for (; *p; p++) {
-                        if (strchr("\'\"\\`$", *p))
+                        if (strchr(SHELL_NEED_ESCAPE, *p))
                                 fputc('\\', f);
 
                         fputc(*p, f);
diff --git src/shared/util.h src/shared/util.h
index c5eadc9..b3187a9 100644
--- src/shared/util.h
+++ src/shared/util.h
@@ -93,6 +93,12 @@
 #define COMMENTS   "#;"
 #define GLOB_CHARS "*?["
 
+/* What characters are special in the shell? */
+/* must be escaped outside and inside double-quotes */
+#define SHELL_NEED_ESCAPE "\"\\`$"
+/* can be escaped or double-quoted */
+#define SHELL_NEED_QUOTES SHELL_NEED_ESCAPE GLOB_CHARS "'()<>|&;"
+
 #define FORMAT_BYTES_MAX 8
 
 #define ANSI_HIGHLIGHT_ON "\x1B[1;39m"
-- 
1.7.9.2

++++++ 0005-service-don-t-accept-negative-ERRNO-notification-mes.patch ++++++
>From 2040ccf171404b709acb0ecf1d1f17b87c5d05f0 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Mon, 7 Jul 2014 17:32:44 +0200
Subject: [PATCH] service: don't accept negative ERRNO= notification messages

---
 src/core/service.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git src/core/service.c src/core/service.c
index 5c54a34..d5aff99 100644
--- src/core/service.c
+++ src/core/service.c
@@ -2637,7 +2637,7 @@ static void service_notify_message(Unit *u, pid_t pid, 
char **tags) {
         if (e) {
                 int status_errno;
 
-                if (safe_atoi(e + 6, &status_errno) < 0)
+                if (safe_atoi(e + 6, &status_errno) < 0 || status_errno < 0)
                         log_warning_unit(u->id, "Failed to parse ERRNO= field 
in notification message: %s", e);
                 else {
                         log_debug_unit(u->id, "%s: got %s", u->id, e);
-- 
1.7.9.2

++++++ 0006-systemctl-show-StatusErrno-value-in-systemctl-status.patch ++++++
Based on b4af5a803aa71a57733ca46fef29b7afb20a626c Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Mon, 7 Jul 2014 17:33:26 +0200
Subject: [PATCH] systemctl: show StatusErrno value in "systemctl status"

---
 src/systemctl/systemctl.c |    5 +++++
 1 file changed, 5 insertions(+)

--- src/systemctl/systemctl.c
+++ src/systemctl/systemctl.c   2014-07-08 10:57:30.170735691 +0000
@@ -2710,6 +2710,7 @@ typedef struct UnitStatusInfo {
         const char *status_text;
         const char *pid_file;
         bool running:1;
+        int status_errno;
 
         usec_t start_timestamp;
         usec_t exit_timestamp;
@@ -2982,6 +2983,8 @@ static void print_status_info(
 
         if (i->status_text)
                 printf("   Status: \"%s\"\n", i->status_text);
+        if (i->status_errno > 0)
+                printf("    Error: %i (%s)\n", i->status_errno, 
strerror(i->status_errno));
 
         if (i->control_group &&
             (i->main_pid > 0 || i->control_pid > 0 || 
cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, i->control_group, false) == 
0)) {
@@ -3203,6 +3206,8 @@ static int status_property(const char *n
                         i->exit_code = (int) j;
                 else if (streq(name, "ExecMainStatus"))
                         i->exit_status = (int) j;
+                else if (streq(name, "StatusErrno"))
+                        i->status_errno = (int) j;
 
                 break;
         }
++++++ 0007-service-flush-status-text-and-errno-values-each-time.patch ++++++
>From 8cfdb077b8e3da1c47fc1d735d051f21f33144c1 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lenn...@poettering.net>
Date: Mon, 7 Jul 2014 17:33:46 +0200
Subject: [PATCH] service: flush status text and errno values each time a
 service is started

We shouldn't show status texts from previous service starts
---
 src/core/service.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git src/core/service.c src/core/service.c
index d5aff99..0f542ed 100644
--- src/core/service.c
+++ src/core/service.c
@@ -1699,6 +1699,10 @@ static int service_start(Unit *u) {
         s->main_pid_alien = false;
         s->forbid_restart = false;
 
+        free(s->status_text);
+        s->status_text = NULL;
+        s->status_errno = 0;
+
         service_enter_start_pre(s);
         return 0;
 }
-- 
1.7.9.2

++++++ 1007-physical-hotplug-cpu-and-memory.patch ++++++
--- /var/tmp/diff_new_pack.1rsuNd/_old  2014-07-16 16:36:45.000000000 +0200
+++ /var/tmp/diff_new_pack.1rsuNd/_new  2014-07-16 16:36:45.000000000 +0200
@@ -1,6 +1,6 @@
---- /dev/null
-+++ systemd-206/rules/80-hotplug-cpu-mem.rules
-@@ -0,0 +1,9 @@
+--- systemd-210/rules/80-hotplug-cpu-mem.rules
++++ systemd-210/rules/80-hotplug-cpu-mem.rules 2014-05-21 15:47:01.885605543 
+0000
+@@ -0,0 +1,12 @@
 +# do not edit this file, it will be overwritten on update
 +
 +# Hotplug physical CPU
@@ -9,9 +9,12 @@
 +
 +# Hotplug physical memory
 +SUBSYSTEM=="memory", ACTION=="add", TEST=="state", ATTR{state}=="offline", \
-+ ATTR{state}="online"
---- systemd-206.orig/Makefile.am
-+++ systemd-206/Makefile.am
++ ATTR{state}="online", TAG+="tmpfs"
++
++#
++TAG=="tmpfs", RUN+="/usr/lib/udev/remount-tmpfs"
+--- systemd-210/Makefile.am
++++ systemd-210/Makefile.am
 @@ -2480,6 +2480,10 @@ dist_udevrules_DATA += \
        rules/73-seat-numlock.rules
  

++++++ 1049-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch ++++++
Based on a669ea9860900d5cdebbc4cb9aaea72db7e28a02 Mon Sep 17 00:00:00 2001
From: Tom Gundersen <t...@jklm.no>
Date: Mon, 7 Jul 2014 14:50:16 +0200
Subject: [PATCH] udev: link_config - ignore errors due to missing MAC address

Otherwis, we get misleading error messages on links with MACs.

Reported by Leonid Isaev.
---
 src/udev/net/link-config.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- src/udev/net/link-config.c
+++ src/udev/net/link-config.c  2014-07-08 10:44:19.450735575 +0000
@@ -440,7 +440,9 @@ int link_config_apply(link_config_ctx *c
                 case MACPOLICY_PERSISTENT:
                         if (!mac_is_permanent(device)) {
                                 r = get_mac(device, false, &generated_mac);
-                                if (r < 0)
+                                if (r == -ENOENT)
+                                        break;
+                                else if (r < 0)
                                         return r;
                                 mac = &generated_mac;
                         }
@@ -448,7 +450,9 @@ int link_config_apply(link_config_ctx *c
                 case MACPOLICY_RANDOM:
                         if (!mac_is_random(device)) {
                                 r = get_mac(device, true, &generated_mac);
-                                if (r < 0)
+                                if (r == -ENOENT)
+                                        break;
+                                else if (r < 0)
                                         return r;
                                 mac = &generated_mac;
                         }
++++++ 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch ++++++
Index: systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/76-net-sriov-names.rules
+++ systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
@@ -4,6 +4,7 @@
 
 ACTION=="remove", GOTO="net-sriov-names_end"
 SUBSYSTEM!="net", GOTO="net-sriov-names_end"
+KERNEL!="eth*", GOTO="net-sriov-names_end"
 
 IMPORT{cmdline}="net.ifnames"
 ENV{net.ifnames}=="1", GOTO="net-sriov-names_end"
++++++ systemd-remount-tmpfs ++++++
#!/bin/sh

PATH=/usr/bin:/bin:/usr/sbin:/sbin
DIR=$(sed -rn 
'/^#/d;\@^[[:graph:]]+[[:space:]]+/[[:graph:]]+[[:space:]]+tmpfs[[:space:]]+.*size=[0-9]+[kmg,[:space:]]@{
 s@^[[:graph:]]+[[:space:]]+(/[[:graph:]]+).*@\1@p }' /etc/fstab)

if [ -n "$DIR" ]; then
        for i in $DIR; do
                echo $i
                mount -o remount "$i" >/dev/null 2>&1
                STATE=$?
                if [ "$STATE" -gt 0 ]; then
                        logger "Remount of $i failed with state $STATE"
                fi
        done
fi
++++++ vhangup-on-all-consoles.patch ++++++
Related to bnc#886599 and others. That is use the vhangup(8) tool
to explicit do a virtually hangup on the specified on the terminal
line to give e.g. the bash a few seconds to e.g. safe its history.

---
 units/getty@.service.m4        |    1 +
 units/serial-getty@.service.m4 |    1 +
 2 files changed, 2 insertions(+)
--- units/getty@.service.m4
+++ units/getty@.service.m4     2014-07-15 07:30:28.006235859 +0000
@@ -29,6 +29,7 @@ ConditionPathExists=/dev/tty0
 [Service]
 # the VT is cleared by TTYVTDisallocate
 ExecStart=-/sbin/agetty --noclear %I $TERM
+ExecStopPost=-/sbin/vhangup /dev/%I
 Type=idle
 Restart=always
 RestartSec=0
--- units/serial-getty@.service.m4
+++ units/serial-getty@.service.m4      2014-07-15 07:30:01.366235017 +0000
@@ -24,6 +24,7 @@ IgnoreOnIsolate=yes
 
 [Service]
 ExecStart=-/sbin/agetty --keep-baud %I 115200,38400,9600 $TERM
+ExecStopPost=-/sbin/vhangup /dev/%I
 Type=idle
 Restart=always
 RestartSec=0
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to