Hello community, here is the log from the commit of package systemd for openSUSE:Factory checked in at 2014-06-30 21:43:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/systemd (Old) and /work/SRC/openSUSE:Factory/.systemd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "systemd" Changes: -------- --- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes 2014-05-28 06:43:51.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes 2014-06-30 21:43:31.000000000 +0200 @@ -1,0 +2,313 @@ +Fri Jun 27 08:17:47 UTC 2014 - werner@suse.de + +- Update of patch 0001-detect-s390-virt.patch (bnc#880438) + +------------------------------------------------------------------- +Thu Jun 26 10:02:26 UTC 2014 - werner@suse.de + +- Shut up stupid check scripts crying for not mentioned systemd-mini-rpmlintrc + +------------------------------------------------------------------- +Thu Jun 26 09:31:19 UTC 2014 - werner@suse.de + +- Add upstream patchs + 0001-core-use-correct-format-string-for-UIDs.patch + 0002-core-transaction-fix-cycle-break-attempts-outside-tr.patch + 0003-fsck-consider-a-fsck-implementation-linked-to-bin-tr.patch + +------------------------------------------------------------------- +Thu Jun 26 06:44:09 UTC 2014 - werner@suse.de + +- Add upstream patch + 0001-units-order-network-online.target-after-network.targ.patch + to make sure that etwork-online.target follows network.target + +------------------------------------------------------------------- +Wed Jun 25 18:09:52 UTC 2014 - rmilasan@suse.com + +- rules: re-enable dev_id conditionally in persistent rules + (bnc#884403 and bnc#882714). + Add 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch + +------------------------------------------------------------------- +Wed Jun 25 17:27:55 UTC 2014 - werner@suse.de + +- Add upstream patches + 0001-vconsole-also-copy-character-maps-not-just-fonts-fro.patch + 0002-core-make-sure-Environment-fields-passed-in-for-tran.patch + 0003-core-You-can-not-put-the-cached-result-of-use_smack-.patch + 0004-cryptsetup-don-t-add-unit-dependency-on-dev-null-dev.patch + 0005-man-fix-path-in-crypttab-5.patch + +------------------------------------------------------------------- +Wed Jun 25 17:06:07 UTC 2014 - werner@suse.de + +- Add upstream patch + 1039-udevadm-settle-fixed-return-code-for-empty-queue.patch it + fixes udevadm settle exit code which may had roken dracut scripts + (bnc#884271 comment#18) + +------------------------------------------------------------------- +Wed Jun 25 14:12:52 UTC 2014 - werner@suse.de + +- Temporary disable patch 1022 (bnc#884271 and bnc#882714). + +------------------------------------------------------------------- +Tue Jun 24 11:55:39 UTC 2014 - rmilasan@suse.com + +- Rename 0002-udev-fix-invalid-free-in-enable_name_policy.patch + to 1038-udev-fix-invalid-free-in-enable_name_policy.patch + +------------------------------------------------------------------- +Tue Jun 24 11:27:27 UTC 2014 - werner@suse.de + +- Replace patches + 0001-systemd-empty-sigmask-on-reexec.patch with + upstream 0008-Reset-signal-mask-on-re-exec-to-init.patch + ensure-sysctl-are-applied-after-modules-are-loaded.patch with + upstream 0001-units-systemd-sysctl.service.in-run-after-load-modul.patch + getty-generator-with-serial-3270-tty.patch with + upstream 0004-getty-generator-properly-escape-instance-names.patch +- Add upstream patches + 0002-units-add-missing-caps-so-that-GetAddresses-can-work.patch + 0003-units-order-systemd-tmpfiles-clean.service-after-tim.patch + 0005-po-add-Greek-translation.patch + 0006-hwdb-Update-database-of-Bluetooth-company-identifier.patch + 0007-po-add-German-translation.patch + 0009-core-clean-up-signal-reset-logic-when-reexec.patch + 0010-util-treat-fuse.sshfs-as-a-network-filesystem.patch + 0011-build-sys-add-pthread-flag-for-libsystemd-shared.patch + 0012-core-transaction-avoid-misleading-error-message-when.patch + +------------------------------------------------------------------- +Tue Jun 24 10:04:21 UTC 2014 - werner@suse.de + +- Invert of the boolean for locking scheme of fsck (bnc#881125) +- Remove the ghost entry /etc/hostname and require the netcfg + +------------------------------------------------------------------- +Mon Jun 23 16:39:50 UTC 2014 - arvidjaar@gmail.com + +- make sure legacy services that depend on network are started after + network is available (bnc#883565) + * 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch + * update insserv-generator.patch to translate $network into + network-online.target + +------------------------------------------------------------------- +Wed Jun 18 13:35:58 UTC 2014 - werner@suse.de + +- Add patch 0001-detect-s390-virt.patch from Thomas Blume (bnc#880438) + to detect the virtualization layers on s390x as well + +------------------------------------------------------------------- +Wed Jun 18 12:58:42 UTC 2014 - werner@suse.de + +- Do not generate synthesize change for cd/dvd (bnc#882714, comment #51) + add patch 1037-udev-exclude-cd-dvd-from-block-device.patch from + Roberts suggestion as well as readd + 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch + +------------------------------------------------------------------- +Tue Jun 17 14:21:56 UTC 2014 - werner@suse.de + +- Add upstream patches + 0001-core-fix-invalid-free-in-killall.patch + 0002-udev-fix-invalid-free-in-enable_name_policy.patch + 0003-install-fix-invalid-free-in-unit_file_mask.patch + +------------------------------------------------------------------- +Tue Jun 17 11:43:23 UTC 2014 - rmilasan@suse.com + +- rules: disable usage of dev_id in persistent rules (bnc#882714). + add: 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch +- Disable patch (bnc#882714). + 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch + +------------------------------------------------------------------- +Thu Jun 12 12:14:11 UTC 2014 - werner@suse.de + +- Add patch + 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch + from Hannes Reinecke to avoid a race condition between variable + 'SYSTEMD_READY=0' and 'systemd' tag within udev rules (bnc#881942) + +------------------------------------------------------------------- +Thu Jun 12 09:40:54 UTC 2014 - werner@suse.de + +- Add workaround for bnc#882393 by adding the systemd update utmp + runlevel service to the wanted unit of e.g. the graphical target +- Add some later on created files to our file list + +------------------------------------------------------------------- +Thu Jun 12 03:33:01 UTC 2014 - jlee@suse.com + +- Generate %{_libexecdir}/modules-load.d/efivars.conf so we load efivars + module at boot time not from udev (bnc#881559). + +------------------------------------------------------------------- +Wed Jun 11 21:59:29 UTC 2014 - crrodriguez@opensuse.org + +- Do not build EFI support code in architectures on which + the kernel does not support CONFIG_EFI, it won't work. + (ia64 also supports it, but that's dead so is not included) + +------------------------------------------------------------------- +Wed Jun 11 14:09:30 UTC 2014 - werner@suse.de + +- Add patch tmpfiles-do-not-clean-for-mandb-index-files.patch + there is no need to clean out all 30 days the index data base + files nor the cachedir tags of mandb. Those files are used + for whatis(1) as well as for apropos(1). + +------------------------------------------------------------------- +Wed Jun 11 13:31:53 UTC 2014 - werner@suse.de + +- Do not override predictable names for openSUSE + +------------------------------------------------------------------- +Wed Jun 11 11:03:45 UTC 2014 - werner@suse.de + +- Remove systemd-detect-xendom.patch as it becomes obsolete with + upstream patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch +- Add upstream patches + 0001-umount-modernizations.patch + 0002-namespace-when-setting-up-an-inaccessible-mount-poin.patch + 0003-core-allow-transient-mount-units.patch + 0004-systemd-detect-virt-only-discover-Xen-domU.patch + 0005-backlight-Do-not-clamp-brightness-for-LEDs.patch + 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch + +------------------------------------------------------------------- +Tue Jun 10 19:58:56 UTC 2014 - rmilasan@suse.com + +- Add upstream patches + 1033-udev-really-exclude-device-mapper-from-block-device.patch + 1034-udev-check-the-return-value-from-udev_enumerate_scan.patch + +------------------------------------------------------------------- +Tue Jun 10 15:29:49 UTC 2014 - werner@suse.de + +- Change detection of new locking scheme of fsck + +------------------------------------------------------------------- +Tue Jun 10 11:11:55 UTC 2014 - werner@suse.de + +- Change 1021-udev-re-add-persistent-net-rules.patch to use persistent + rules as a default on SLES-12 and predictable rules as a default ++++ 116 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes ++++ and /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes systemd.changes: same change Old: ---- 0001-systemd-empty-sigmask-on-reexec.patch delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch ensure-DM-and-LVM-are-started-before-local-fs-pre-target.patch ensure-sysctl-are-applied-after-modules-are-loaded.patch getty-generator-with-serial-3270-tty.patch systemd-detect-xendom.patch New: ---- 0001-build-sys-use-glibc-s-xattr-support-instead-of-requi.patch 0001-core-fix-invalid-free-in-killall.patch 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch 0001-core-use-correct-format-string-for-UIDs.patch 0001-detect-s390-virt.patch 0001-hwdb-fix-case-sensitive-match.patch 0001-sd-event-restore-correct-timeout-behaviour.patch 0001-umount-modernizations.patch 0001-units-order-network-online.target-after-network.targ.patch 0001-units-systemd-sysctl.service.in-run-after-load-modul.patch 0001-vconsole-also-copy-character-maps-not-just-fonts-fro.patch 0001-virt-rework-container-detection-logic.patch 0002-bus-make-use-of-sd_bus_try_close-in-exit-on-idle-ser.patch 0002-core-make-sure-Environment-fields-passed-in-for-tran.patch 0002-core-transaction-fix-cycle-break-attempts-outside-tr.patch 0002-fsck-include-device-name-in-the-message-about-missin.patch 0002-namespace-when-setting-up-an-inaccessible-mount-poin.patch 0002-units-add-missing-caps-so-that-GetAddresses-can-work.patch 0003-core-You-can-not-put-the-cached-result-of-use_smack-.patch 0003-core-allow-transient-mount-units.patch 0003-fsck-consider-a-fsck-implementation-linked-to-bin-tr.patch 0003-install-fix-invalid-free-in-unit_file_mask.patch 0003-units-order-systemd-tmpfiles-clean.service-after-tim.patch 0003-units-use-KillMode-mixed-for-systemd-nspawn-.service.patch 0004-cryptsetup-don-t-add-unit-dependency-on-dev-null-dev.patch 0004-getty-generator-properly-escape-instance-names.patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch 0004-util-ignore_file-should-not-allow-files-ending-with.patch 0005-backlight-Do-not-clamp-brightness-for-LEDs.patch 0005-man-fix-path-in-crypttab-5.patch 0005-po-add-Greek-translation.patch 0006-hwdb-Update-database-of-Bluetooth-company-identifier.patch 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch 0006-tty-ask-password-agent-Do-tell-what-directory-we-fai.patch 0007-keyboard-add-Plantronics-.Audio-mute-button.patch 0007-po-add-German-translation.patch 0008-Reset-signal-mask-on-re-exec-to-init.patch 0009-core-clean-up-signal-reset-logic-when-reexec.patch 0010-util-treat-fuse.sshfs-as-a-network-filesystem.patch 0011-build-sys-add-pthread-flag-for-libsystemd-shared.patch 0012-core-transaction-avoid-misleading-error-message-when.patch 1021-udev-re-add-persistent-net-rules.patch 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch 1023-udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch 1024-udev-always-close-lock-file-descriptor.patch 1025-udev-exclude-device-mapper-from-block-device-ownersh.patch 1026-udevd-inotify-modernizations.patch 1027-udev-synthesize-change-events-for-partitions-when-to.patch 1028-udev-link-config-fix-mem-leak.patch 1029-udev-try-first-re-reading-the-partition-table.patch 1030-udev-guard-REREADP-logic-with-open-O_ECXL.patch 1031-udev-make-sure-we-always-get-change-for-the-disk.patch 1032-udev-guard-REREADPT-by-exclusive-lock-instead-of-O_E.patch 1033-udev-really-exclude-device-mapper-from-block-device.patch 1034-udev-check-the-return-value-from-udev_enumerate_scan.patch 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch 1037-udev-exclude-cd-dvd-from-block-device.patch 1038-udev-fix-invalid-free-in-enable_name_policy.patch 1039-udevadm-settle-fixed-return-code-for-empty-queue.patch 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch apply-ACL-for-nvidia-uvm-device-node.patch tmpfiles-do-not-clean-for-mandb-index-files.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ systemd-mini.spec ++++++ ++++ 752 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/systemd/systemd-mini.spec ++++ and /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.spec systemd.spec: same change ++++++ 0001-build-sys-use-glibc-s-xattr-support-instead-of-requi.patch ++++++ Based on d2edfae0f9bdbecf6a8518e2a5bcf06f470e0d9e Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 28 May 2014 17:36:40 +0800 Subject: [PATCH] build-sys: use glibc's xattr support instead of requiring libattr --- configure.ac | 53 ++----------------------------------------- src/core/mount-setup.c | 2 - src/core/socket.c | 4 --- src/journal/journal-file.c | 7 ----- src/journal/journal-vacuum.c | 10 -------- src/shared/label.c | 2 - src/shared/smack-util.c | 4 --- 7 files changed, 7 insertions(+), 75 deletions(-) --- configure.ac +++ configure.ac 2014-06-03 00:00:00.000000000 +0000 @@ -526,44 +526,6 @@ AC_SUBST(ACL_LIBS) AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno]) # ------------------------------------------------------------------------------ -AC_ARG_ENABLE([xattr], - AS_HELP_STRING([--disable-xattr],[Disable optional XATTR support]), - [case "${enableval}" in - yes) have_xattr=yes ;; - no) have_xattr=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for --disable-xattr) ;; - esac], - [have_xattr=auto]) - -if test "x${have_xattr}" != xno ; then - AC_CHECK_HEADERS( - [attr/xattr.h], - [have_xattr=yes], - [if test "x$have_xattr" = xyes ; then - AC_MSG_ERROR([*** XATTR headers not found.]) - fi]) - - AC_CHECK_LIB( - [attr], - [fsetxattr], - [have_xattr=yes], - [if test "x$have_xattr" = xyes ; then - AC_MSG_ERROR([*** libattr not found.]) - fi]) - - if test "x$have_xattr" = xyes ; then - XATTR_LIBS="-lattr" - AC_DEFINE(HAVE_XATTR, 1, [XATTR available]) - else - have_xattr=no - fi -else - XATTR_LIBS= -fi -AC_SUBST(XATTR_LIBS) -AM_CONDITIONAL([HAVE_XATTR], [test "x$have_xattr" != xno]) - -# ------------------------------------------------------------------------------ AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK support]), [case "${enableval}" in yes) have_smack=yes ;; @@ -572,17 +534,9 @@ AC_ARG_ENABLE([smack], AS_HELP_STRING([- esac], [have_smack=auto]) -if test "x${have_xattr}" = xno; then - if test "x${have_smack}" = xyes; then - AC_MSG_ERROR(SMACK requires xattr support) - else - have_smack=no - fi -else - if test "x${have_smack}" = xauto; then - M4_DEFINES="$M4_DEFINES -DHAVE_SMACK" - have_smack=yes - fi +if test "x${have_smack}" = xauto; then + M4_DEFINES="$M4_DEFINES -DHAVE_SMACK" + have_smack=yes fi AC_ARG_WITH(smack-run-label, @@ -1131,7 +1085,6 @@ AC_MSG_RESULT([ SMACK: ${have_smack} XZ: ${have_xz} ACL: ${have_acl} - XATTR: ${have_xattr} GCRYPT: ${have_gcrypt} QRENCODE: ${have_qrencode} MICROHTTPD: ${have_microhttpd} --- src/core/mount-setup.c +++ src/core/mount-setup.c 2014-06-03 00:00:00.000000000 +0000 @@ -93,10 +93,8 @@ static const MountPoint mount_table[] = NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "tmpfs", "/sys/fs/cgroup", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, NULL, MNT_IN_CONTAINER }, -#ifdef HAVE_XATTR { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd,xattr", MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_IN_CONTAINER }, -#endif { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_IN_CONTAINER }, { "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, --- src/core/socket.c +++ src/core/socket.c 2014-06-03 00:00:00.000000000 +0000 @@ -29,9 +29,7 @@ #include <arpa/inet.h> #include <netinet/tcp.h> #include <mqueue.h> -#ifdef HAVE_XATTR -#include <attr/xattr.h> -#endif +#include <sys/xattr.h> #include "sd-event.h" #include "log.h" --- src/journal/journal-file.c +++ src/journal/journal-file.c 2014-06-03 00:00:00.000000000 +0000 @@ -26,10 +26,7 @@ #include <sys/statvfs.h> #include <fcntl.h> #include <stddef.h> - -#ifdef HAVE_XATTR -#include <attr/xattr.h> -#endif +#include <sys/xattr.h> #include "journal-def.h" #include "journal-file.h" @@ -2515,7 +2512,6 @@ int journal_file_open( } if (f->last_stat.st_size == 0 && f->writable) { -#ifdef HAVE_XATTR uint64_t crtime; /* Let's attach the creation time to the journal file, @@ -2530,7 +2526,6 @@ int journal_file_open( crtime = htole64((uint64_t) now(CLOCK_REALTIME)); fsetxattr(f->fd, "user.crtime_usec", &crtime, sizeof(crtime), XATTR_CREATE); -#endif #ifdef HAVE_GCRYPT /* Try to load the FSPRG state, and if we can't, then --- src/journal/journal-vacuum.c +++ src/journal/journal-vacuum.c 2014-06-03 00:00:00.000000000 +0000 @@ -24,10 +24,7 @@ #include <sys/stat.h> #include <sys/statvfs.h> #include <unistd.h> - -#ifdef HAVE_XATTR -#include <attr/xattr.h> -#endif +#include <sys/xattr.h> #include "journal-def.h" #include "journal-file.h" @@ -79,11 +76,8 @@ static void patch_realtime( unsigned long long *realtime) { usec_t x; - -#ifdef HAVE_XATTR uint64_t crtime; _cleanup_free_ const char *path = NULL; -#endif /* The timestamp was determined by the file name, but let's * see if the file might actually be older than the file name @@ -106,7 +100,6 @@ static void patch_realtime( if (x > 0 && x != (usec_t) -1 && x < *realtime) *realtime = x; -#ifdef HAVE_XATTR /* Let's read the original creation time, if possible. Ideally * we'd just query the creation time the FS might provide, but * unfortunately there's currently no sane API to query @@ -125,7 +118,6 @@ static void patch_realtime( if (crtime > 0 && crtime != (uint64_t) -1 && crtime < *realtime) *realtime = crtime; } -#endif } static int journal_file_empty(int dir_fd, const char *name) { --- src/shared/label.c +++ src/shared/label.c 2014-06-03 00:00:00.000000000 +0000 @@ -27,9 +27,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> -#ifdef HAVE_XATTR #include <sys/xattr.h> -#endif #ifdef HAVE_SELINUX #include <selinux/selinux.h> #include <selinux/label.h> --- src/shared/smack-util.c +++ src/shared/smack-util.c 2014-06-03 00:00:00.000000000 +0000 @@ -23,9 +23,7 @@ #include <unistd.h> #include <string.h> -#ifdef HAVE_XATTR -#include <attr/xattr.h> -#endif +#include <sys/xattr.h> #include "smack-util.h" ++++++ 0001-core-fix-invalid-free-in-killall.patch ++++++
From 3e09eb5c83e56bc0184bd9d9c44f76047464f77c Mon Sep 17 00:00:00 2001 From: Andreas Henriksson <andreas@fatal.se> Date: Fri, 13 Jun 2014 18:48:19 +0200 Subject: [PATCH] core: fix invalid free() in killall()
static int killall(....) in ./src/core/killall.c tries to get "s" initialized by calling get_process_comm(...) which calls read_one_line_file(...) which if it fails will mean it is left uninitialized. It is then used in argument to strna(s) call where it is dereferenced(!), in addition to nothing else initializing it before the scope it is in finishes. --- src/core/killall.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/core/killall.c src/core/killall.c index 57ed41c..eab48f7 100644 --- src/core/killall.c +++ src/core/killall.c @@ -168,7 +168,7 @@ static int killall(int sig, Set *pids, bool send_sighup) { continue; if (sig == SIGKILL) { - _cleanup_free_ char *s; + _cleanup_free_ char *s = NULL; get_process_comm(pid, &s); log_notice("Sending SIGKILL to PID "PID_FMT" (%s).", pid, strna(s)); -- 1.7.9.2 ++++++ 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch ++++++
From 0404c609f399b2092a3de52eef9d75b0dc12e94c Mon Sep 17 00:00:00 2001 From: Tom Gundersen <teg@jklm.no> Date: Mon, 12 May 2014 21:26:54 +0200 Subject: [PATCH] core: sysvcompat - $network should be equivalent to network-online, rather than network target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit
Most likely the facility needed is actual connectivity, rather than whether or not the network managment daemon is running. We also need to explicitly pull in the network-online.target, as it is not active by default. This means {systemd-networkd,NetworkManager}-wait-online.service, can be enabled by default as part of network-online.target, and only delay boot when some service actively pulls it in. See: <https://bugzilla.gnome.org/show_bug.cgi?id=728965> Cc: Pavel Šimerda <psimerda@redhat.com> Cc: Michal Sekletar <msekleta@redhat.com> --- TODO | 4 ---- src/core/service.c | 8 ++++++-- 2 files changed, 6 insertions(+), 6 deletions(-) Modified by Andrey Borzenkov <arvidjaar@gmail.com> for openSUSE. Index: systemd-210/src/core/service.c =================================================================== --- systemd-210.orig/src/core/service.c +++ systemd-210/src/core/service.c @@ -404,7 +404,7 @@ static int sysv_translate_facility(const static const char * const table[] = { /* LSB defined facilities */ "local_fs", NULL, - "network", SPECIAL_NETWORK_TARGET, + "network", SPECIAL_NETWORK_ONLINE_TARGET, "named", SPECIAL_NSS_LOOKUP_TARGET, "portmap", SPECIAL_RPCBIND_TARGET, "remote_fs", SPECIAL_REMOTE_FS_TARGET, @@ -881,6 +881,9 @@ static int service_load_sysv_path(Servic if (r == 0) continue; + if (streq(m, SPECIAL_NETWORK_ONLINE_TARGET) && d == UNIT_AFTER && e == _UNIT_DEPENDENCY_INVALID) + e = UNIT_WANTS; + if (e != _UNIT_DEPENDENCY_INVALID) r = unit_add_two_dependencies_by_name(u, d, e, m, NULL, true); else ++++++ 0001-core-use-correct-format-string-for-UIDs.patch ++++++ Based on d6239dc4b0cf55a953d6c40890859b85d504ef19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bartoszkiewicz?= <mbartoszkiewicz@gmail.com> Date: Wed, 25 Jun 2014 14:54:48 +0200 Subject: [PATCH] core: use correct format string for UIDs --- src/core/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- src/core/main.c +++ src/core/main.c 2014-06-26 09:29:28.182235325 +0000 @@ -1526,7 +1526,7 @@ int main(int argc, char *argv[]) { } else { _cleanup_free_ char *t = uid_to_name(getuid()); - log_debug(PACKAGE_STRING " running in user mode for user "PID_FMT"/%s. (" SYSTEMD_FEATURES ")", + log_debug(PACKAGE_STRING " running in user mode for user "UID_FMT"/%s. (" SYSTEMD_FEATURES ")", getuid(), t); } ++++++ 0001-detect-s390-virt.patch ++++++ bnc#880438 - systemd-detect-virt doesn't work on System z --- systemd-210/src/shared/virt.c +++ systemd-210/src/shared/virt.c 2014-06-26 07:55:30.081608729 +0000 @@ -196,6 +196,30 @@ } else return r; +#if defined(__s390x__) + /* First layer virtualization (PR/SM) is always present on s390x */ + _id = "PR/SM"; + r = 1; + + /* Check for second layer virtualization */ + _cleanup_fclose_ FILE *f = NULL; + char line[LINE_MAX]; + f = fopen("/proc/sysinfo", "re"); + if (f) { + FOREACH_LINE(line, f, return -errno) { + if (startswith(line, "VM00 Control Program:")) { + if (strstr(line,"z/VM")) + _id = "z/VM"; + else if (strstr(line,"KVM/Linux")) + _id = "KVM"; + break; + } + } + } + + goto finish; +#endif + /* this will set _id to "other" and return 0 for unknown hypervisors */ r = detect_vm_cpuid(&_id); if (r != 0) ++++++ 0001-hwdb-fix-case-sensitive-match.patch ++++++
From 4c02dd7153f970244950b5e00f7bdfea8d2ff0be Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 17:55:14 +0200 Subject: [PATCH] hwdb: fix case-sensitive match
--- hwdb/60-keyboard.hwdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb index d053766..c7ff4e4 100644 --- hwdb/60-keyboard.hwdb +++ hwdb/60-keyboard.hwdb @@ -870,7 +870,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:pvr* ########################################################### # Plantronics .Audio 626 DSP -keyboard:usb:v047fpC006* +keyboard:usb:v047FpC006* KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute ########################################################### -- 1.7.9.2 ++++++ 0001-sd-event-restore-correct-timeout-behaviour.patch ++++++ Based on eec6022cf039e62233139000b9e95db943959e48 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Thu, 5 Jun 2014 13:43:30 +0200 Subject: [PATCH] sd-event: restore correct timeout behaviour --- src/libsystemd/sd-event/sd-event.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- src/libsystemd/sd-event/sd-event.c +++ src/libsystemd/sd-event/sd-event.c 2014-06-06 10:26:51.422235695 +0000 @@ -2047,6 +2047,7 @@ _public_ int sd_event_run(sd_event *e, u unsigned ev_queue_max; sd_event_source *p; int r, i, m; + bool timedout; assert_return(e, -EINVAL); assert_return(!event_pid_changed(e), -ECHILD); @@ -2084,6 +2085,8 @@ _public_ int sd_event_run(sd_event *e, u goto finish; } + timedout = m == 0; + dual_timestamp_get(&e->timestamp); for (i = 0; i < m; i++) { @@ -2123,7 +2126,7 @@ _public_ int sd_event_run(sd_event *e, u p = event_next_pending(e); if (!p) { - r = 1; + r = !timedout; goto finish; } ++++++ 0001-umount-modernizations.patch ++++++
From c3544e8d2c2d870a2aff0944aff4ab7824b9ae6b Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Thu, 5 Jun 2014 21:35:15 +0200 Subject: [PATCH] umount: modernizations
--- src/core/umount.c | 65 ++++++++++++++++++++++------------------------------- 1 file changed, 27 insertions(+), 38 deletions(-) diff --git src/core/umount.c src/core/umount.c index d1258f0..a30f674 100644 --- src/core/umount.c +++ src/core/umount.c @@ -61,52 +61,46 @@ static void mount_points_list_free(MountPoint **head) { } static int mount_points_list_get(MountPoint **head) { - FILE *proc_self_mountinfo; - char *path, *p; + _cleanup_fclose_ FILE *proc_self_mountinfo = NULL; unsigned int i; - int r; assert(head); - if (!(proc_self_mountinfo = fopen("/proc/self/mountinfo", "re"))) + proc_self_mountinfo = fopen("/proc/self/mountinfo", "re"); + if (!proc_self_mountinfo) return -errno; for (i = 1;; i++) { - int k; + _cleanup_free_ char *path = NULL; + char *p = NULL; MountPoint *m; + int k; - path = p = NULL; - - if ((k = fscanf(proc_self_mountinfo, - "%*s " /* (1) mount id */ - "%*s " /* (2) parent id */ - "%*s " /* (3) major:minor */ - "%*s " /* (4) root */ - "%ms " /* (5) mount point */ - "%*s" /* (6) mount options */ - "%*[^-]" /* (7) optional fields */ - "- " /* (8) separator */ - "%*s " /* (9) file system type */ - "%*s" /* (10) mount source */ - "%*s" /* (11) mount options 2 */ - "%*[^\n]", /* some rubbish at the end */ - &path)) != 1) { + k = fscanf(proc_self_mountinfo, + "%*s " /* (1) mount id */ + "%*s " /* (2) parent id */ + "%*s " /* (3) major:minor */ + "%*s " /* (4) root */ + "%ms " /* (5) mount point */ + "%*s" /* (6) mount options */ + "%*[^-]" /* (7) optional fields */ + "- " /* (8) separator */ + "%*s " /* (9) file system type */ + "%*s" /* (10) mount source */ + "%*s" /* (11) mount options 2 */ + "%*[^\n]", /* some rubbish at the end */ + &path); + if (k != 1) { if (k == EOF) break; log_warning("Failed to parse /proc/self/mountinfo:%u.", i); - - free(path); continue; } p = cunescape(path); - free(path); - - if (!p) { - r = -ENOMEM; - goto finish; - } + if (!p) + return -ENOMEM; /* Ignore mount points we can't unmount because they * are API or because we are keeping them open (like @@ -118,22 +112,17 @@ static int mount_points_list_get(MountPoint **head) { continue; } - if (!(m = new0(MountPoint, 1))) { + m = new0(MountPoint, 1); + if (!m) { free(p); - r = -ENOMEM; - goto finish; + return -ENOMEM; } m->path = p; LIST_PREPEND(mount_point, *head, m); } - r = 0; - -finish: - fclose(proc_self_mountinfo); - - return r; + return 0; } static int swap_list_get(MountPoint **head) { -- 1.7.9.2 ++++++ 0001-units-order-network-online.target-after-network.targ.patch ++++++ Based on 58e027023b47b32e42cf93dd4a629b869ee1ef25 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Wed, 11 Jun 2014 14:58:32 +0200 Subject: [PATCH] units: order network-online.target after network.target There might be implementations around where the network-online logic might not talk to any network configuration service (and thus not have to wait for it), hence let's explicitly order network-online.target after network.target to avoid any ambiguities. --- units/network-online.target | 1 + 1 file changed, 1 insertion(+) --- units/network-online.target +++ units/network-online.target 2014-06-26 00:00:00.000000000 +0000 @@ -9,3 +9,4 @@ Description=Network is Online Documentation=man:systemd.special(7) Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget +After=network.target ++++++ 0001-units-systemd-sysctl.service.in-run-after-load-modul.patch ++++++ Based on 0b73eab7a2185ae0377650e3fdb8208347a8a575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org> Date: Sat, 23 Mar 2013 03:54:16 +0100 Subject: [PATCH] units/systemd-sysctl.service.in: run after load-modules Modules might or will register new sysctl options. [zj: This mechanism of adding modules just to reliably set sysctl attributes is not ideal. Nevertheless, sysctl for dynamically created attributes is simply broken, and this is the easiest workaround.] https://bugzilla.redhat.com/show_bug.cgi?id=1022977 https://bugzilla.novell.com/show_bug.cgi?id=725412 --- units/systemd-sysctl.service.in | 1 + 1 file changed, 1 insertion(+) diff --git units/systemd-sysctl.service.in units/systemd-sysctl.service.in index 5c7c5d7..ade9dc3 100644 --- units/systemd-sysctl.service.in +++ units/systemd-sysctl.service.in @@ -11,6 +11,7 @@ Documentation=man:systemd-sysctl.service DefaultDependencies=no Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service +After=systemd-modules-load.service Before=sysinit.target shutdown.target ConditionPathIsReadWrite=/proc/sys/ ConditionDirectoryNotEmpty=|/lib/sysctl.d ++++++ 0001-vconsole-also-copy-character-maps-not-just-fonts-fro.patch ++++++
From ff452e76e2c0f89a32542b7179bb2fd538335933 Mon Sep 17 00:00:00 2001 From: Carl Schaefer <schaefer@trilug.org> Date: Mon, 23 Jun 2014 18:23:48 +0200 Subject: [PATCH] vconsole: also copy character maps (not just fonts) from vt1 to vt2, vt3, ...
https://bugs.freedesktop.org/show_bug.cgi?id=78796 --- src/vconsole/vconsole-setup.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git src/vconsole/vconsole-setup.c src/vconsole/vconsole-setup.c index 0f2b706..e0c4050 100644 --- src/vconsole/vconsole-setup.c +++ src/vconsole/vconsole-setup.c @@ -180,6 +180,10 @@ static int font_load(const char *vc, const char *font, const char *map, const ch */ static void font_copy_to_all_vcs(int fd) { struct vt_stat vcs = {}; + unsigned char map8[E_TABSZ]; + unsigned short map16[E_TABSZ]; + struct unimapdesc unimapd; + struct unipair unipairs[USHRT_MAX]; int i, r; /* get active, and 16 bit mask of used VT numbers */ @@ -209,6 +213,26 @@ static void font_copy_to_all_vcs(int fd) { cfo.op = KD_FONT_OP_COPY; cfo.height = vcs.v_active-1; /* tty1 == index 0 */ ioctl(vcfd, KDFONTOP, &cfo); + + /* copy map of 8bit chars */ + if (ioctl(fd, GIO_SCRNMAP, map8) >= 0) + ioctl(vcfd, PIO_SCRNMAP, map8); + + /* copy map of 8bit chars -> 16bit Unicode values */ + if (ioctl(fd, GIO_UNISCRNMAP, map16) >= 0) + ioctl(vcfd, PIO_UNISCRNMAP, map16); + + /* copy unicode translation table */ + /* unimapd is a ushort count and a pointer to an + array of struct unipair { ushort, ushort } */ + unimapd.entries = unipairs; + unimapd.entry_ct = USHRT_MAX; + if (ioctl(fd, GIO_UNIMAP, &unimapd) >= 0) { + struct unimapinit adv = { 0, 0, 0 }; + + ioctl(vcfd, PIO_UNIMAPCLR, &adv); + ioctl(vcfd, PIO_UNIMAP, &unimapd); + } } } -- 1.7.9.2 ++++++ 0001-virt-rework-container-detection-logic.patch ++++++ Based on fdd25311706bd32580ec4d43211cdf4665d2f9de Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Wed, 28 May 2014 18:37:11 +0800 Subject: [PATCH] virt: rework container detection logic Instead of accessing /proc/1/environ directly, trying to read the $container variable from it, let's make PID 1 save the contents of that variable to /run/systemd/container. This allows us to detect containers without the need for CAP_SYS_PTRACE, which allows us to drop it from a number of daemons and from the file capabilities of systemd-detect-virt. Also, don't consider chroot a container technology anymore. After all, we don't consider file system namespaces container technology anymore, and hence chroot() should be considered a container even less. --- Makefile.am | 3 --- configure.ac | 2 -- src/core/main.c | 12 ++++++++++++ src/shared/virt.c | 48 ++++++++++++++++++++++++++++++------------------ 4 files changed, 42 insertions(+), 23 deletions(-) diff --git Makefile.am Makefile.am index 5b26bc3..f66ef42 100644 --- Makefile.am +++ Makefile.am @@ -1798,9 +1798,6 @@ systemd_detect_virt_SOURCES = \ systemd_detect_virt_LDADD = \ libsystemd-shared.la -systemd-detect-virt-install-hook: - -$(SETCAP) cap_dac_override,cap_sys_ptrace=ep $(DESTDIR)$(bindir)/systemd-detect-virt - INSTALL_EXEC_HOOKS += \ systemd-detect-virt-install-hook --- configure.ac +++ configure.ac 2014-06-03 14:16:45.046237826 +0000 @@ -68,8 +68,6 @@ AC_PATH_PROG([XSLTPROC], [xsltproc]) AC_PATH_PROG([QUOTAON], [quotaon], [/usr/sbin/quotaon]) AC_PATH_PROG([QUOTACHECK], [quotacheck], [/usr/sbin/quotacheck]) -AC_PATH_PROG([SETCAP], [setcap], [/usr/sbin/setcap]) - AC_PATH_PROG([KILL], [kill], [/usr/bin/kill]) AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod]) diff --git src/core/main.c src/core/main.c index 77cc2fb..d5d1ee2 100644 --- src/core/main.c +++ src/core/main.c @@ -1261,6 +1261,16 @@ static int status_welcome(void) { isempty(pretty_name) ? "Linux" : pretty_name); } +static int write_container_id(void) { + const char *c; + + c = getenv("container"); + if (isempty(c)) + return 0; + + return write_string_file("/run/systemd/container", c); +} + int main(int argc, char *argv[]) { Manager *m = NULL; int r, retval = EXIT_FAILURE; @@ -1544,6 +1554,8 @@ int main(int argc, char *argv[]) { if (virtualization) log_info("Detected virtualization '%s'.", virtualization); + write_container_id(); + log_info("Detected architecture '%s'.", architecture_to_string(uname_architecture())); if (in_initrd()) diff --git src/shared/virt.c src/shared/virt.c index 0db0514..1e227c5 100644 --- src/shared/virt.c +++ src/shared/virt.c @@ -217,8 +217,8 @@ int detect_container(const char **id) { static thread_local int cached_found = -1; static thread_local const char *cached_id = NULL; - _cleanup_free_ char *e = NULL; - const char *_id = NULL; + _cleanup_free_ char *m = NULL; + const char *_id = NULL, *e = NULL; int r; if (_likely_(cached_found >= 0)) { @@ -229,17 +229,6 @@ int detect_container(const char **id) { return cached_found; } - /* Unfortunately many of these operations require root access - * in one way or another */ - - r = running_in_chroot(); - if (r < 0) - return r; - if (r > 0) { - _id = "chroot"; - goto finish; - } - /* /proc/vz exists in container and outside of the container, * /proc/bc only outside of the container. */ if (access("/proc/vz", F_OK) >= 0 && @@ -249,11 +238,32 @@ int detect_container(const char **id) { goto finish; } - r = getenv_for_pid(1, "container", &e); - if (r < 0) - return r; - if (r == 0) - goto finish; + if (getpid() == 1) { + /* If we are PID 1 we can just check our own + * environment variable */ + + e = getenv("container"); + if (isempty(e)) { + r = 0; + goto finish; + } + } else { + + /* Otherwise, PID 1 dropped this information into a + * file in /run. This is better than accessing + * /proc/1/environ, since we don't need CAP_SYS_PTRACE + * for that. */ + + r = read_one_line_file("/run/systemd/container", &m); + if (r == -ENOENT) { + r = 0; + goto finish; + } + if (r < 0) + return r; + + e = m; + } /* We only recognize a selected few here, since we want to * enforce a redacted namespace */ @@ -266,6 +276,8 @@ int detect_container(const char **id) { else _id = "other"; + r = 1; + finish: cached_found = r; -- 1.7.9.2 ++++++ 0002-bus-make-use-of-sd_bus_try_close-in-exit-on-idle-ser.patch ++++++
From b27adf354a83ad25f4a209c0a6f7989ecab7b4e2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Thu, 5 Jun 2014 13:31:25 +0200 Subject: [PATCH] bus: make use of sd_bus_try_close() in exit-on-idle services
--- src/libsystemd/sd-bus/bus-util.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git src/libsystemd/sd-bus/bus-util.c src/libsystemd/sd-bus/bus-util.c index 6bd21cc..6441c5b 100644 --- src/libsystemd/sd-bus/bus-util.c +++ src/libsystemd/sd-bus/bus-util.c @@ -43,7 +43,9 @@ static int name_owner_change_callback(sd_bus *bus, sd_bus_message *m, void *user assert(m); assert(e); + sd_bus_close(bus); sd_event_exit(e, 0); + return 1; } @@ -121,11 +123,30 @@ int bus_event_loop_with_idle( return r; if (r == 0 && !exiting) { - r = bus_async_unregister_and_exit(e, bus, name); + + r = sd_bus_try_close(bus); + if (r == -EBUSY) + continue; + + if (r == -ENOTSUP) { + /* Fallback for dbus1 connections: we + * unregister the name and wait for + * the response to come through for + * it */ + + r = bus_async_unregister_and_exit(e, bus, name); + if (r < 0) + return r; + + exiting = true; + continue; + } + if (r < 0) return r; - exiting = true; + sd_event_exit(e, 0); + break; } } -- 1.7.9.2 ++++++ 0002-core-make-sure-Environment-fields-passed-in-for-tran.patch ++++++
From cdd7b7dfd44649b204c43e907f03d4294de4f28a Mon Sep 17 00:00:00 2001 From: Hristo Venev <mustrumr97@gmail.com> Date: Mon, 23 Jun 2014 18:53:04 +0200 Subject: [PATCH] core: make sure Environment fields passed in for transient units are properly written to unit files
From 375ae4aa4d2f89ae8afdd27e9f2b8336fcc2a046 Mon Sep 17 00:00:00 2001 From: Uoti Urpala <uoti.urpala@pp1.inet.fi> Date: Mon, 23 Jun 2014 16:50:03 +0300 Subject: [PATCH] core/transaction: fix cycle break attempts outside
https://bugs.freedesktop.org/show_bug.cgi?id=76744 --- src/core/dbus-execute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/core/dbus-execute.c src/core/dbus-execute.c index cb9a077..ecbadd7 100644 --- src/core/dbus-execute.c +++ src/core/dbus-execute.c @@ -848,7 +848,7 @@ int bus_exec_context_set_transient_property( strv_free(c->environment); c->environment = e; - joined = strv_join(c->environment, " "); + joined = strv_join_quoted(c->environment); if (!joined) return -ENOMEM; -- 1.7.9.2 ++++++ 0002-core-transaction-fix-cycle-break-attempts-outside-tr.patch ++++++ transaction Patch fixes some incorrect-looking code in transaction.c. It could fix cases where Debian users with bad package configurations had systemd go into an infinite loop printing messages about breaking an ordering cycle, though I have not reproduced that problem myself. transaction_verify_order_one() considers jobs/units outside current transaction when checking whether ordering dependencies cause cycles. It would also incorrectly try to break cycles at these jobs; this cannot work, as the break action is to remove the job from the transaction, which is a no-op if the job isn't part of the transaction to begin with. The unit_matters_to_anchor() test also looks like it would not work correctly for non-transaction jobs. Add a check to verify that the unit is part of the transaction before considering a job a candidate for deletion. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752259 --- src/core/transaction.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/core/transaction.c src/core/transaction.c index d23a45c..805d40a 100644 --- src/core/transaction.c +++ src/core/transaction.c @@ -381,7 +381,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi "Found dependency on %s/%s", k->unit->id, job_type_to_string(k->type)); - if (!delete && + if (!delete && hashmap_get(tr->jobs, k->unit) && !unit_matters_to_anchor(k->unit, k)) { /* Ok, we can drop this one, so let's * do so. */ -- 1.7.9.2 ++++++ 0002-fsck-include-device-name-in-the-message-about-missin.patch ++++++ Based on 8d2a6145334257c8a9ceabc9dd52dff06cca818e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Mon, 26 May 2014 23:03:11 -0400 Subject: [PATCH] fsck: include device name in the message about missing fsck --- src/fsck/fsck.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- src/fsck/fsck.c +++ src/fsck/fsck.c 2014-06-03 14:15:15.746235301 +0000 @@ -284,10 +284,12 @@ int main(int argc, char *argv[]) { r = access(checker, X_OK); if (r < 0) { if (errno == ENOENT) { - log_info("%s doesn't exist, not checking file system.", checker); + log_info("%s doesn't exist, not checking file system on %s", + checker, device); return EXIT_SUCCESS; } else - log_warning("%s cannot be used: %m", checker); + log_warning("%s cannot be used for %s: %m", + checker, device); } } ++++++ 0002-namespace-when-setting-up-an-inaccessible-mount-poin.patch ++++++ Based on 6d313367d9ef780560e117e886502a99fa220eac Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Thu, 5 Jun 2014 21:35:35 +0200 Subject: [PATCH] namespace: when setting up an inaccessible mount point, unmounting everything below This has the benefit of not triggering any autofs mount points unnecessarily. --- src/core/namespace.c | 6 ++++ src/shared/util.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/shared/util.h | 2 + 3 files changed, 76 insertions(+) --- src/core/namespace.c +++ src/core/namespace.c 2014-06-11 00:00:00.000000000 +0000 @@ -220,6 +220,12 @@ static int apply_mount( return mount_dev(m); case INACCESSIBLE: + + /* First, get rid of everything that is below if there + * is anything... Then, overmount it with an + * inaccessible directory. */ + umount_recursive(m->path, 0); + what = "/run/systemd/inaccessible"; break; --- src/shared/util.c +++ src/shared/util.c 2014-06-11 00:00:00.000000000 +0000 @@ -54,6 +54,7 @@ #include <grp.h> #include <sys/mman.h> #include <sys/vfs.h> +#include <sys/mount.h> #include <linux/magic.h> #include <limits.h> #include <langinfo.h> @@ -4635,6 +4636,73 @@ char *strjoin(const char *x, ...) { return r; } +int umount_recursive(const char *prefix, int flags) { + bool again; + int n = 0, r; + + /* Try to umount everything recursively below a + * directory. Also, take care of stacked mounts, and keep + * unmounting them until they are gone. */ + + do { + _cleanup_fclose_ FILE *proc_self_mountinfo = NULL; + + again = false; + r = 0; + + proc_self_mountinfo = fopen("/proc/self/mountinfo", "re"); + if (!proc_self_mountinfo) + return -errno; + + for (;;) { + _cleanup_free_ char *path = NULL, *p = NULL; + int k; + + k = fscanf(proc_self_mountinfo, + "%*s " /* (1) mount id */ + "%*s " /* (2) parent id */ + "%*s " /* (3) major:minor */ + "%*s " /* (4) root */ + "%ms " /* (5) mount point */ + "%*s" /* (6) mount options */ + "%*[^-]" /* (7) optional fields */ + "- " /* (8) separator */ + "%*s " /* (9) file system type */ + "%*s" /* (10) mount source */ + "%*s" /* (11) mount options 2 */ + "%*[^\n]", /* some rubbish at the end */ + &path); + + if (k != 1) { + if (k == EOF) + break; + + continue; + } + + p = cunescape(path); + if (!p) + return -ENOMEM; + + if (!path_startswith(p, prefix)) + continue; + + if (umount2(p, flags) < 0) { + r = -errno; + continue; + } + + again = true; + n++; + + break; + } + + } while (again); + + return r ? r : n; +} + bool is_main_thread(void) { static thread_local int cached = 0; --- src/shared/util.h +++ src/shared/util.h 2014-06-11 10:10:08.000000000 +0000 @@ -890,3 +890,5 @@ union file_handle_union { struct file_handle handle; char padding[sizeof(struct file_handle) + MAX_HANDLE_SZ]; }; + +int umount_recursive(const char *target, int flags); ++++++ 0002-units-add-missing-caps-so-that-GetAddresses-can-work.patch ++++++ Basedo n a55954297dade7b432fd3a4f328f23261621ff79 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Thu, 19 Jun 2014 19:53:16 +0200 Subject: [PATCH] units: add missing caps so that GetAddresses() can work --- units/systemd-machined.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- units/systemd-machined.service.in +++ units/systemd-machined.service.in 2014-06-24 11:26:19.554235869 +0000 @@ -15,5 +15,5 @@ After=machine.slice [Service] ExecStart=@rootlibexecdir@/systemd-machined BusName=org.freedesktop.machine1 -CapabilityBoundingSet=CAP_KILL +CapabilityBoundingSet=CAP_KILL CAP_SYS_PTRACE CAP_SYS_ADMIN CAP_SETGID WatchdogSec=1min ++++++ 0003-core-You-can-not-put-the-cached-result-of-use_smack-.patch ++++++
From d1d8e5d49f3149d03ceb94d1d2f6c14e7abccb6f Mon Sep 17 00:00:00 2001 From: Ronan Le Martret <ronan@fridu.net> Date: Tue, 22 Apr 2014 10:33:25 +0200 Subject: [PATCH] core: You can not put the cached result of use_smack fct, as we are not sure the "/sys" is mounted. So we should mount "sys" before "/proc"
https://bugs.freedesktop.org/show_bug.cgi?id=77646 --- src/core/mount-setup.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git src/core/mount-setup.c src/core/mount-setup.c index ae8447c..991bfdf 100644 --- src/core/mount-setup.c +++ src/core/mount-setup.c @@ -67,10 +67,10 @@ typedef struct MountPoint { #define N_EARLY_MOUNT 5 static const MountPoint mount_table[] = { - { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, - NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "sysfs", "/sys", "sysfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_FATAL|MNT_IN_CONTAINER }, + { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, + NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "devtmpfs", "/dev", "devtmpfs", "mode=755", MS_NOSUID|MS_STRICTATIME, NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, -- 1.7.9.2 ++++++ 0003-core-allow-transient-mount-units.patch ++++++
From 0e252f6b375af59eac9bd6d2fe8dd6ee2f51998d Mon Sep 17 00:00:00 2001 From: Tom Gundersen <teg@jklm.no> Date: Fri, 6 Jun 2014 15:10:20 +0200 Subject: [PATCH] core: allow transient mount units
For now only What=, Options=, Type= are supported, and Where= is deduced from the unit name. --- src/core/dbus-mount.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++- src/core/mount.c | 2 ++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git src/core/dbus-mount.c src/core/dbus-mount.c index e64d3ea..e27019d 100644 --- src/core/dbus-mount.c +++ src/core/dbus-mount.c @@ -124,6 +124,47 @@ const sd_bus_vtable bus_mount_vtable[] = { SD_BUS_VTABLE_END }; +static int bus_mount_set_transient_property( + Mount *m, + const char *name, + sd_bus_message *message, + UnitSetPropertiesMode mode, + sd_bus_error *error) { + + const char *new_property; + char **property; + char *p; + int r; + + assert(m); + assert(name); + assert(message); + + if (streq(name, "What")) + property = &m->parameters_fragment.what; + else if (streq(name, "Options")) + property = &m->parameters_fragment.options; + else if (streq(name, "Type")) + property = &m->parameters_fragment.fstype; + else + return 0; + + r = sd_bus_message_read(message, "s", &new_property); + if (r < 0) + return r; + + if (mode != UNIT_CHECK) { + p = strdup(new_property); + if (!p) + return -ENOMEM; + + free(*property); + *property = p; + } + + return 1; +} + int bus_mount_set_property( Unit *u, const char *name, @@ -132,12 +173,33 @@ int bus_mount_set_property( sd_bus_error *error) { Mount *m = MOUNT(u); + int r; assert(m); assert(name); assert(message); - return bus_cgroup_set_property(u, &m->cgroup_context, name, message, mode, error); + r = bus_cgroup_set_property(u, &m->cgroup_context, name, message, mode, error); + if (r != 0) + return r; + + if (u->transient && u->load_state == UNIT_STUB) { + /* This is a transient unit, let's load a little more */ + + r = bus_mount_set_transient_property(m, name, message, mode, error); + if (r != 0) + return r; + + r = bus_exec_context_set_transient_property(u, &m->exec_context, name, message, mode, error); + if (r != 0) + return r; + + r = bus_kill_context_set_transient_property(u, &m->kill_context, name, message, mode, error); + if (r != 0) + return r; + } + + return 0; } int bus_mount_commit_properties(Unit *u) { diff --git src/core/mount.c src/core/mount.c index a979837..14ac0a0 100644 --- src/core/mount.c +++ src/core/mount.c @@ -1819,6 +1819,8 @@ const UnitVTable mount_vtable = { .get_timeout = mount_get_timeout, + .can_transient = true, + .enumerate = mount_enumerate, .shutdown = mount_shutdown, -- 1.7.9.2 ++++++ 0003-fsck-consider-a-fsck-implementation-linked-to-bin-tr.patch ++++++ Based on 571d0134bd464444567cf4eb0d2ed8df40045f36 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Tue, 24 Jun 2014 19:37:22 +0200 Subject: [PATCH] fsck: consider a fsck implementation linked to /bin/true non-existant --- src/fsck/fsck.c | 32 ++++++++++++++++++++++---------- src/shared/path-util.c | 26 +++++++++++++++----------- 2 files changed, 37 insertions(+), 21 deletions(-) --- src/fsck/fsck.c +++ src/fsck/fsck.c 2014-06-26 09:19:58.591864710 +0000 @@ -280,16 +280,28 @@ int main(int argc, char *argv[]) { type = udev_device_get_property_value(udev_device, "ID_FS_TYPE"); if (type) { - const char *checker = strappenda("/sbin/fsck.", type); - r = access(checker, X_OK); - if (r < 0) { - if (errno == ENOENT) { - log_info("%s doesn't exist, not checking file system on %s", - checker, device); - return EXIT_SUCCESS; - } else - log_warning("%s cannot be used for %s: %m", - checker, device); + _cleanup_free_ char *p = NULL, *d = NULL; + const char *checker = strappenda("fsck.", type); + r = find_binary(checker, &p); + if (r == -ENOENT) { + log_info("fsck.%s doesn't exist, not checking file system on %s", + type, device); + return EXIT_SUCCESS; + } else if (r < 0) { + log_warning("fsck.%s cannot be used for %s: %m", + type, device); + return r; + } + + /* An fsck that is linked to /bin/true is a non-existant fsck */ + r = readlink_malloc(p, &d); + if (r >= 0 && + (path_equal(d, "/bin/true") || + path_equal(d, "/usr/bin/true") || + path_equal(d, "/dev/null"))) { + log_info("fsck.%s doesn't exist, not checking file system on %s", + type, device); + return EXIT_SUCCESS; } } --- src/shared/path-util.c +++ src/shared/path-util.c 2014-06-26 09:14:15.651559638 +0000 @@ -425,19 +425,21 @@ int path_is_os_tree(const char *path) { int find_binary(const char *name, char **filename) { assert(name); - assert(filename); - if (strchr(name, '/')) { - char *p; + if (is_path(name)) { + if (access(name, X_OK) < 0) + return -errno; + + if (filename) { + char *p; - if (path_is_absolute(name)) - p = strdup(name); - else p = path_make_absolute_cwd(name); - if (!p) - return -ENOMEM; + if (!p) + return -ENOMEM; + + *filename = p; + } - *filename = p; return 0; } else { const char *path; @@ -463,8 +465,10 @@ int find_binary(const char *name, char * continue; } - path_kill_slashes(p); - *filename = p; + if (filename) { + path_kill_slashes(p); + *filename = p; + } return 0; } ++++++ 0003-install-fix-invalid-free-in-unit_file_mask.patch ++++++
From 223217749e57996336d5730b0a28716cca56d45d Mon Sep 17 00:00:00 2001 From: Andreas Henriksson <andreas@fatal.se> Date: Fri, 13 Jun 2014 18:48:18 +0200 Subject: [PATCH] install: fix invalid free() in unit_file_mask()
int unit_file_mask(...) in ./src/shared/install.c calls get_config_path(...) which can in 4 error cases return without setting "ret", and thus "prefix" can be uninitialized when unit_file_mask(...) finishes (which it does directly after the error is returned from get_config_path(...)). --- src/shared/install.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/shared/install.c src/shared/install.c index 487d0f6..f562063 100644 --- src/shared/install.c +++ src/shared/install.c @@ -563,7 +563,7 @@ int unit_file_mask( unsigned *n_changes) { char **i; - _cleanup_free_ char *prefix; + _cleanup_free_ char *prefix = NULL; int r; assert(scope >= 0); -- 1.7.9.2 ++++++ 0003-units-order-systemd-tmpfiles-clean.service-after-tim.patch ++++++ Based on 497d1986c13032f1ef8f4592bb7ed8d3aa321a47 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Fri, 20 Jun 2014 00:15:39 +0200 Subject: [PATCH] units: order systemd-tmpfiles-clean.service after time-sync.target That way, on systems lacking an RTC we don't false start removing aged files too early. --- units/systemd-tmpfiles-clean.service.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --- units/systemd-tmpfiles-clean.service.in +++ units/systemd-tmpfiles-clean.service.in 2014-06-24 10:47:57.398235644 +0000 @@ -10,8 +10,9 @@ Description=Cleanup of Temporary Directo Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no Wants=local-fs.target -After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target -Before=sysinit.target shutdown.target +Conflicts=shutdown.target +After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target time-sync.target +Before=shutdown.target ConditionDirectoryNotEmpty=|/usr/lib/tmpfiles.d ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d ConditionDirectoryNotEmpty=|/etc/tmpfiles.d ++++++ 0003-units-use-KillMode-mixed-for-systemd-nspawn-.service.patch ++++++
From d8e40d62ab871a87fde421c4b246bb45bc3cbe2d Mon Sep 17 00:00:00 2001 From: Jonathan Liu <net147@gmail.com> Date: Thu, 29 May 2014 01:17:25 +1000 Subject: [PATCH] units: use KillMode=mixed for systemd-nspawn@.service
This causes the container to shut down cleanly when the service is stopped. --- units/systemd-nspawn@.service.in | 1 + 1 file changed, 1 insertion(+) diff --git units/systemd-nspawn@.service.in units/systemd-nspawn@.service.in index ff36e90..e373628 100644 --- units/systemd-nspawn@.service.in +++ units/systemd-nspawn@.service.in @@ -11,6 +11,7 @@ Documentation=man:systemd-nspawn(1) [Service] ExecStart=@bindir@/systemd-nspawn --quiet --keep-unit --boot --link-journal=guest --directory=/var/lib/container/%i +KillMode=mixed Type=notify [Install] -- 1.7.9.2 ++++++ 0004-cryptsetup-don-t-add-unit-dependency-on-dev-null-dev.patch ++++++ Based on bde29068aa3815c88190a91e9867605a0aeaf9c4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Mon, 23 Jun 2014 19:18:44 +0200 Subject: [PATCH] cryptsetup: don't add unit dependency on /dev/null devices when it is listed as password file As special magic, don't create device dependencies for /dev/null. Of course, there might be similar devices we might want to include, but given that none of them really make sense to specify as password source there's really no point in checking for anything else here. https://bugs.freedesktop.org/show_bug.cgi?id=75816 --- src/cryptsetup/cryptsetup-generator.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) --- src/cryptsetup/cryptsetup-generator.c +++ src/cryptsetup/cryptsetup-generator.c 2014-06-25 17:24:14.338237375 +0000 @@ -29,6 +29,7 @@ #include "mkdir.h" #include "strv.h" #include "fileio.h" +#include "path-util.h" static const char *arg_dest = "/tmp"; static bool arg_enabled = true; @@ -141,14 +142,18 @@ static int create_disk( if (uu == NULL) return log_oom(); - if (is_device_path(uu)) { - _cleanup_free_ char *dd = unit_name_from_path(uu, ".device"); - if (dd == NULL) - return log_oom(); - - fprintf(f, "After=%1$s\nRequires=%1$s\n", dd); - } else - fprintf(f, "RequiresMountsFor=%s\n", password); + if (!path_equal(uu, "/dev/null")) { + if (is_device_path(uu)) { + _cleanup_free_ char *dd; + + dd = unit_name_from_path(uu, ".device"); + if (!dd) + return log_oom(); + + fprintf(f, "After=%1$s\nRequires=%1$s\n", dd); + } else + fprintf(f, "RequiresMountsFor=%s\n", password); + } } } ++++++ 0004-getty-generator-properly-escape-instance-names.patch ++++++
From a2ae516a25dafe41e0cd296ab7b5d022fa62b95f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Thu, 19 Jun 2014 22:02:55 -0400 Subject: [PATCH] getty-generator: properly escape instance names
Otherwise the add_symlink() function tries to make directories for each slash even for the slash after the @ symbol in the final link name, failing for /dev/3270/tty1. Based on a patch by Werner Fink <werner@suse.de>. --- src/getty-generator/getty-generator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git src/getty-generator/getty-generator.c src/getty-generator/getty-generator.c index 35cd858..7d4b546 100644 --- src/getty-generator/getty-generator.c +++ src/getty-generator/getty-generator.c @@ -67,7 +67,7 @@ static int add_serial_getty(const char *tty) { log_debug("Automatically adding serial getty for /dev/%s.", tty); - n = unit_name_replace_instance("serial-getty@.service", tty); + n = unit_name_from_path_instance("serial-getty", tty, ".service"); if (!n) return log_oom(); @@ -81,7 +81,7 @@ static int add_container_getty(const char *tty) { log_debug("Automatically adding container getty for /dev/pts/%s.", tty); - n = unit_name_replace_instance("container-getty@.service", tty); + n = unit_name_from_path_instance("container-getty", tty, ".service"); if (!n) return log_oom(); -- 1.7.9.2 ++++++ 0004-systemd-detect-virt-only-discover-Xen-domU.patch ++++++
From 37287585b6ba9a55065c8f94458f6db3c0abe0af Mon Sep 17 00:00:00 2001 From: Thomas Blume <Thomas.Blume@suse.com> Date: Fri, 6 Jun 2014 16:36:45 +0200 Subject: [PATCH] systemd-detect-virt: only discover Xen domU
The current vm detection lacks the distinction between Xen dom0 and Xen domU. Both, dom0 and domU are running inside the hypervisor. Therefore systemd-detect-virt and the ConditionVirtualization directive detect dom0 as a virtual machine. dom0 is not using virtual devices but is accessing the real hardware. Therefore dom0 should be considered the virtualisation host and not a virtual machine. https://bugs.freedesktop.org/show_bug.cgi?id=77271 --- src/shared/virt.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git src/shared/virt.c src/shared/virt.c index 1e227c5..774915f 100644 --- src/shared/virt.c +++ src/shared/virt.c @@ -148,7 +148,7 @@ static int detect_vm_dmi(const char **_id) { /* Returns a short identifier for the various VM implementations */ int detect_vm(const char **id) { - _cleanup_free_ char *hvtype = NULL, *cpuinfo_contents = NULL; + _cleanup_free_ char *domcap = NULL, *cpuinfo_contents = NULL; static thread_local int cached_found = -1; static thread_local const char *cached_id = NULL; const char *_id = NULL; @@ -162,17 +162,37 @@ int detect_vm(const char **id) { return cached_found; } - /* Try high-level hypervisor sysfs file first: + /* Try xen capabilities file first, if not found try high-level hypervisor sysfs file: * - * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */ - r = read_one_line_file("/sys/hypervisor/type", &hvtype); + * https://bugs.freedesktop.org/show_bug.cgi?id=77271 */ + r = read_one_line_file("/proc/xen/capabilities", &domcap); if (r >= 0) { - if (streq(hvtype, "xen")) { + char *cap, *i = domcap; + + while ((cap = strsep(&i, ","))) + if (streq(cap, "control_d")) + break; + + if (!i) { _id = "xen"; r = 1; - goto finish; } - } else if (r != -ENOENT) + + goto finish; + + } else if (r == -ENOENT) { + _cleanup_free_ char *hvtype = NULL; + + r = read_one_line_file("/sys/hypervisor/type", &hvtype); + if (r >= 0) { + if (streq(hvtype, "xen")) { + _id = "xen"; + r = 1; + goto finish; + } + } else if (r != -ENOENT) + return r; + } else return r; /* this will set _id to "other" and return 0 for unknown hypervisors */ -- 1.7.9.2 ++++++ 0004-util-ignore_file-should-not-allow-files-ending-with.patch ++++++
From 93f1a06374e335e8508d89e1bdaadf45be6ab777 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com> Date: Sat, 31 May 2014 21:36:23 +0200 Subject: [PATCH] util: ignore_file should not allow files ending with '~'
ignore_file currently allows any file ending with '~' while it seems that the opposite was intended: a228a22fda4faa9ecb7c5a5e499980c8ae5d2a08 --- src/shared/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/shared/util.c src/shared/util.c index 0c27394..17b0ae1 100644 --- src/shared/util.c +++ src/shared/util.c @@ -1371,7 +1371,7 @@ bool ignore_file(const char *filename) { assert(filename); if (endswith(filename, "~")) - return false; + return true; return ignore_file_allow_backup(filename); } -- 1.7.9.2 ++++++ 0005-backlight-Do-not-clamp-brightness-for-LEDs.patch ++++++
From 4cd2b2cf8ca585d15ebc859701b346658262b5bb Mon Sep 17 00:00:00 2001 From: Denis Tikhomirov <dvtikhomirov@gmail.com> Date: Thu, 5 Jun 2014 23:59:40 +0400 Subject: [PATCH] backlight: Do not clamp brightness for LEDs
https://bugs.freedesktop.org/show_bug.cgi?id=77092 On Thu, Jun 05, 2014 at 08:37:20AM +0200, Lennart Poettering wrote:
The patch is line-broken, please send an uncorrupted patch! I am very sorry, I forgot that my client limits line width. I will use mutt now on. clamp_brightness() clamps the brightness value to the range of the actual device. This is a recent addition that was added to deal with driver updates where the resolution is changed. I don't think this part should be dropped for LED devices. The clamp_brightness() call hence should be called unconditionally, however, internally it should use a different min_brightness value if something is an !backlight devices... Thank you for explanation, this sounds very reasonable to me. Please, see updated patch:
src/backlight/backlight.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git src/backlight/backlight.c src/backlight/backlight.c index 691472c..4d94ebf 100644 --- src/backlight/backlight.c +++ src/backlight/backlight.c @@ -225,11 +225,13 @@ static unsigned get_max_brightness(struct udev_device *device) { /* Some systems turn the backlight all the way off at the lowest levels. * clamp_brightness clamps the saved brightness to at least 1 or 5% of - * max_brightness. This avoids preserving an unreadably dim screen, which - * would otherwise force the user to disable state restoration. */ + * max_brightness in case of 'backlight' subsystem. This avoids preserving + * an unreadably dim screen, which would otherwise force the user to + * disable state restoration. */ static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) { int r; unsigned brightness, new_brightness, min_brightness; + const char *subsystem; r = safe_atou(*value, &brightness); if (r < 0) { @@ -237,7 +239,12 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned return; } - min_brightness = MAX(1U, max_brightness/20); + subsystem = udev_device_get_subsystem(device); + if (streq_ptr(subsystem, "backlight")) + min_brightness = MAX(1U, max_brightness/20); + else + min_brightness = 0; + new_brightness = CLAMP(brightness, min_brightness, max_brightness); if (new_brightness != brightness) { char *old_value = *value; -- 1.7.9.2 ++++++ 0005-man-fix-path-in-crypttab-5.patch ++++++
From 9fcdf32294e66f91d2a177f73a77049832768311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Mon, 23 Jun 2014 23:07:53 -0400 Subject: [PATCH] man: fix path in crypttab(5)
https://bugs.freedesktop.org/show_bug.cgi?id=75816 --- man/crypttab.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git man/crypttab.xml man/crypttab.xml index 668e51d..9030015 100644 --- man/crypttab.xml +++ man/crypttab.xml @@ -369,7 +369,7 @@ <programlisting>luks UUID=2505567a-9e27-4efe-a4d5-15ad146c258b swap /dev/sda7 /dev/urandom swap truecrypt /dev/sda2 /etc/container_password tcrypt -hidden /mnt/tc_hidden /null tcrypt-hidden,tcrypt-keyfile=/etc/keyfile</programlisting> +hidden /mnt/tc_hidden /dev/null tcrypt-hidden,tcrypt-keyfile=/etc/keyfile</programlisting> </example> </refsect1> -- 1.7.9.2 ++++++ 0005-po-add-Greek-translation.patch ++++++
From 3d89c35c2ae08c3fbf1a037c4df54c8e5ae56faf Mon Sep 17 00:00:00 2001 From: Dimitris Spingos <dmtrs32@gmail.com> Date: Wed, 7 May 2014 18:27:02 +0200 Subject: [PATCH] po: add Greek translation
https://bugs.freedesktop.org/show_bug.cgi?id=78064 --- po/LINGUAS | 3 +- po/el.po | 404 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 406 insertions(+), 1 deletion(-) create mode 100644 po/el.po diff --git po/LINGUAS po/LINGUAS index 0301751..820ca82 100644 --- po/LINGUAS +++ po/LINGUAS @@ -1,4 +1,5 @@ +el fr +it pl ru -it diff --git po/el.po po/el.po new file mode 100644 index 0000000..1570565 --- /dev/null +++ po/el.po @@ -0,0 +1,404 @@ +# Greek translation for systemd. +# Copyright (C) 2014 systemd's COPYRIGHT HOLDER +# This file is distributed under the same license as the systemd package. +# Dimitris Spingos <dmtrs32@gmail.com>, 2014. +# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2014. +msgid "" +msgstr "" +"Project-Id-Version: systemd master\n" +"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?product=sys" +"temd&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-04-25 15:51+0000\n" +"PO-Revision-Date: 2014-04-29 09:17+0300\n" +"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>\n" +"Language-Team: team@lists.gnome.gr\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.0\n" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:1 +msgid "Set host name" +msgstr "Ορισμός ονόματος οικοδεσπότη" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:2 +msgid "Authentication is required to set the local host name." +msgstr "Απαιτείται πιστοποίηση για να ορίσετε τοπικά όνομα οικοδεσπότη." + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3 +msgid "Set static host name" +msgstr "Ορισμός στατικού ονόματος οικοδεσπότη" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4 +msgid "" +"Authentication is required to set the statically configured local host name, " +"as well as the pretty host name." +msgstr "" +"Απαιτείται πιστοποίηση για να ορίσετε το στατικά ρυθμισμένο όνομα τοπικού " +"οικοδεσπότη, καθώς και το pretty όνομα οικοδεσπότη." + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:5 +msgid "Set machine information" +msgstr "Ορισμός πληροφοριών μηχανής" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:6 +msgid "Authentication is required to set local machine information." +msgstr "Απαιτείται πιστοποίηση για να ορίσετε πληροφορίες τοπικής μηχανής." + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:1 +msgid "Set system locale" +msgstr "Ορισμός τοπικών ρυθμίσεων συστήματος" + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:2 +msgid "Authentication is required to set the system locale." +msgstr "" +"Απαιτείται πιστοποίηση για να ορίσετε τις τοπικές ρυθμίσεις του συστήματος." + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:3 +msgid "Set system keyboard settings" +msgstr "Ορισμός ρυθμίσεων πληκτρολογίου συστήματος" + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:4 +msgid "Authentication is required to set the system keyboard settings." +msgstr "" +"Απαιτείται πιστοποίηση για να ορίσετε τις ρυθμίσεις πληκτρολογίου του " +"συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:1 +msgid "Allow applications to inhibit system shutdown" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τον τερματισμό του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:2 +msgid "" +"Authentication is required to allow an application to inhibit system " +"shutdown." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει τον " +"τερματισμό του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:3 +msgid "Allow applications to delay system shutdown" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να καθυστερούν τον τερματισμό του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:4 +msgid "" +"Authentication is required to allow an application to delay system shutdown." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να καθυστερήσει " +"τον τερματισμό του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:5 +msgid "Allow applications to inhibit system sleep" +msgstr "Να επιτρέπεται στις εφαρμογές να αποτρέπουν την ύπνωση του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:6 +msgid "" +"Authentication is required to allow an application to inhibit system sleep." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την " +"ύπνωση του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:7 +msgid "Allow applications to delay system sleep" +msgstr "Να επιτρέπεται στις εφαρμογές να καθυστερούν την ύπνωση του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:8 +msgid "" +"Authentication is required to allow an application to delay system sleep." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να καθυστερήσει " +"την ύπνωση του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:9 +msgid "Allow applications to inhibit automatic system suspend" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να αποτρέπουν την αυτόματη αναστολή του " +"συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:10 +msgid "" +"Authentication is required to allow an application to inhibit automatic " +"system suspend." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την " +"αυτόματη αναστολή του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:11 +msgid "Allow applications to inhibit system handling of the power key" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του πλήκτρου " +"ενεργοποίησης του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:12 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the power key." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την " +"διαχείριση του πλήκτρου ενεργοποίησης του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:13 +msgid "Allow applications to inhibit system handling of the suspend key" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του πλήκτρου " +"αναστολής του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:14 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the suspend key." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την " +"διαχείριση του πλήκτρου αναστολής του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:15 +msgid "Allow applications to inhibit system handling of the hibernate key" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του πλήκτρου " +"αδρανοποίησης του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:16 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the hibernate key." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την " +"διαχείριση του πλήκτρου αδρανοποίησης του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:17 +msgid "Allow applications to inhibit system handling of the lid switch" +msgstr "" +"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του διακόπτη " +"καλύμματος του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:18 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the lid switch." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την " +"διαχείριση του διακόπτη καλύμματος του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:19 +msgid "Allow non-logged-in users to run programs" +msgstr "Να επιτρέπεται σε μη συνδεμένους χρήστες να εκτελούν προγράμματα" + +#: ../src/login/org.freedesktop.login1.policy.in.h:20 +msgid "" +"Authentication is required to allow a non-logged-in user to run programs." +msgstr "" +"Απαιτείται πιστοποίηση για να επιτρέπεται σε μη συνδεμένους χρήστες να " +"εκτελούν προγράμματα." + +#: ../src/login/org.freedesktop.login1.policy.in.h:21 +msgid "Allow attaching devices to seats" +msgstr "Να επιτρέπεται η προσάρτηση συσκευών στους σταθμούς εργασίας" + +#: ../src/login/org.freedesktop.login1.policy.in.h:22 +msgid "Authentication is required for attaching a device to a seat." +msgstr "" +"Απαιτείται πιστοποίηση για προσάρτηση μιας συσκευής σε έναν σταθμό εργασίας." + +#: ../src/login/org.freedesktop.login1.policy.in.h:23 +msgid "Flush device to seat attachments" +msgstr "Αφαίρεση συσκευής από προσαρτήσεις σταθμού εργασίας" + +#: ../src/login/org.freedesktop.login1.policy.in.h:24 +msgid "" +"Authentication is required for resetting how devices are attached to seats." +msgstr "" +"Απαιτείται πιστοποίηση για επαναφορά του τρόπου που οι συσκευές προσαρτώνται " +"στους σταθμούς εργασίας." + +#: ../src/login/org.freedesktop.login1.policy.in.h:25 +msgid "Power off the system" +msgstr "Σβήσιμο του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:26 +msgid "Authentication is required for powering off the system." +msgstr "Απαιτείται πιστοποίηση για την σβήσιμο του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:27 +msgid "Power off the system while other users are logged in" +msgstr "Σβήσιμο του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι" + +#: ../src/login/org.freedesktop.login1.policy.in.h:28 +msgid "" +"Authentication is required for powering off the system while other users are " +"logged in." +msgstr "" +"Απαιτείται πιστοποίηση για σβήσιμο του συστήματος ενώ άλλοι χρήστες είναι " +"συνδεμένοι." + +#: ../src/login/org.freedesktop.login1.policy.in.h:29 +msgid "Power off the system while an application asked to inhibit it" +msgstr "Απενεργοποίηση του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί." + +#: ../src/login/org.freedesktop.login1.policy.in.h:30 +msgid "" +"Authentication is required for powering off the system while an application " +"asked to inhibit it." +msgstr "" +"Απαιτείται πιστοποίηση για απενεργοποίηση του συστήματος ενώ μια εφαρμογή " +"ζήτησε να αποτραπεί." + +#: ../src/login/org.freedesktop.login1.policy.in.h:31 +msgid "Reboot the system" +msgstr "Επανεκκίνηση του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:32 +msgid "Authentication is required for rebooting the system." +msgstr "Απαιτείται πιστοποίηση για επανεκκίνηση του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:33 +msgid "Reboot the system while other users are logged in" +msgstr "Επανεκκίνηση του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι" + +#: ../src/login/org.freedesktop.login1.policy.in.h:34 +msgid "" +"Authentication is required for rebooting the system while other users are " +"logged in." +msgstr "" +"Απαιτείται πιστοποίηση για επανεκκίνηση του συστήματος ενώ άλλοι χρήστες " +"είναι συνδεμένοι." + +#: ../src/login/org.freedesktop.login1.policy.in.h:35 +msgid "Reboot the system while an application asked to inhibit it" +msgstr "Επανεκκίνηση του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί" + +#: ../src/login/org.freedesktop.login1.policy.in.h:36 +msgid "" +"Authentication is required for rebooting the system while an application " +"asked to inhibit it." +msgstr "" +"Απαιτείται πιστοποίηση για επανεκκίνηση του συστήματος ενώ μια εφαρμογή " +"ζήτησε να αποτραπεί." + +#: ../src/login/org.freedesktop.login1.policy.in.h:37 +msgid "Suspend the system" +msgstr "Αναστολή του συστήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:38 +msgid "Authentication is required for suspending the system." +msgstr "Απαιτείται πιστοποίηση για την αναστολή του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:39 +msgid "Suspend the system while other users are logged in" +msgstr "Αναστολή του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι" + +#: ../src/login/org.freedesktop.login1.policy.in.h:40 +msgid "" +"Authentication is required for suspending the system while other users are " +"logged in." +msgstr "" +"Απαιτείται πιστοποίηση για αναστολή του συστήματος ενώ άλλοι χρήστες είναι " +"συνδεμένοι." + +#: ../src/login/org.freedesktop.login1.policy.in.h:41 +msgid "Suspend the system while an application asked to inhibit it" +msgstr "Αναστολή του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί" + +#: ../src/login/org.freedesktop.login1.policy.in.h:42 +msgid "" +"Authentication is required for suspending the system while an application " +"asked to inhibit it." +msgstr "" +"Απαιτείται πιστοποίηση για αναστολή του συστήματος ενώ μια εφαρμογή ζήτησε " +"να αποτραπεί." + +#: ../src/login/org.freedesktop.login1.policy.in.h:43 +msgid "Hibernate the system" +msgstr "Αδρανοποίηση του συτήματος" + +#: ../src/login/org.freedesktop.login1.policy.in.h:44 +msgid "Authentication is required for hibernating the system." +msgstr "Απαιτείται πιστοποίηση για αδρανοποίηση του συστήματος." + +#: ../src/login/org.freedesktop.login1.policy.in.h:45 +msgid "Hibernate the system while other users are logged in" +msgstr "Αδρανοποίηση του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι" + +#: ../src/login/org.freedesktop.login1.policy.in.h:46 +msgid "" +"Authentication is required for hibernating the system while other users are " +"logged in." +msgstr "" +"Απαιτείται πιστοποίηση για αδρανοποίηση του συστήματος ενώ άλλοι χρήστες " +"είναι συνδεμένοι." + +#: ../src/login/org.freedesktop.login1.policy.in.h:47 +msgid "Hibernate the system while an application asked to inhibit it" +msgstr "Αδρανοποίηση του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί" + +#: ../src/login/org.freedesktop.login1.policy.in.h:48 +msgid "" +"Authentication is required for hibernating the system while an application " +"asked to inhibit it." +msgstr "" +"Απαιτείται πιστοποίηση για αδρανοποίηση του συστήματος ενώ μια εφαρμογή " +"ζήτησε να αποτραπεί." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1 +msgid "Set system time" +msgstr "Ορισμός ώρας συστήματος" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:2 +msgid "Authentication is required to set the system time." +msgstr "Απαιτείται πιστοποίηση για να ορίσετε την ώρα του συστήματος." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:3 +msgid "Set system timezone" +msgstr "Ορισμός ζώνης ώρας συστήματος" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:4 +msgid "Authentication is required to set the system timezone." +msgstr "Απαιτείται πιστοποίηση για να ορίσετε την ώρα ζώνης του συστήματος." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:5 +msgid "Set RTC to local timezone or UTC" +msgstr "Ορισμός RTC στην τοπική ζώνη ώρας ή UTC" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:6 +msgid "" +"Authentication is required to control whether the RTC stores the local or " +"UTC time." +msgstr "" +"Απαιτείται πιστοποίηση για να ελέγξετε αν το RTC αποθηκεύει την τοπική ή την " +"ώρα UTC." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:7 +msgid "Turn network time synchronization on or off" +msgstr "Ενεργοποίηση/Απενεργοποίηση συγχρονισμού ώρας δικτύου" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:8 +msgid "" +"Authentication is required to control whether network time synchronization " +"shall be enabled." +msgstr "" +"Απαιτείται πιστοποίηση για να ελέγξετε αν ο συγχρονισμός ώρας δικτύου θα " +"ενεργοποιηθεί." + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1 +msgid "Send passphrase back to system" +msgstr "Αποστολή του συνθηματικού πίσω στο σύστημα" + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:2 +msgid "" +"Authentication is required to send the entered passphrase back to the system." +msgstr "" +"Απαιτείται πιστοποίηση για αποστολή του εισερχόμενου συνθηματικού πίσω στο " +"σύστημα." + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3 +msgid "Privileged system and service manager access" +msgstr "Προνομιούχος πρόσβαση διαχειριστή συστήματος και υπηρεσίας" + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4 +msgid "Authentication is required to access the system and service manager." +msgstr "" +"Απαιτείται πιστοποίηση για να προσπελάσετε τον διαχειριστή συστήματος και " +"υπηρεσιών." -- 1.7.9.2 ++++++ 0006-hwdb-Update-database-of-Bluetooth-company-identifier.patch ++++++
From 7cfa80f07e94c3e48703d145ef03a73dd6e7b983 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann <marcel@holtmann.org> Date: Wed, 18 Jun 2014 13:55:32 +0200 Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
--- hwdb/20-bluetooth-vendor-product.hwdb | 42 ++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git hwdb/20-bluetooth-vendor-product.hwdb hwdb/20-bluetooth-vendor-product.hwdb index a65c7db..377748a 100644 --- hwdb/20-bluetooth-vendor-product.hwdb +++ hwdb/20-bluetooth-vendor-product.hwdb @@ -115,7 +115,7 @@ bluetooth:v0024* ID_VENDOR_FROM_DATABASE=Alcatel bluetooth:v0025* - ID_VENDOR_FROM_DATABASE=Philips Semiconductors + ID_VENDOR_FROM_DATABASE=NXP Semiconductors (formerly Philips Semiconductors) bluetooth:v0026* ID_VENDOR_FROM_DATABASE=C Technologies @@ -427,7 +427,7 @@ bluetooth:v008B* ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC bluetooth:v008C* - ID_VENDOR_FROM_DATABASE=Qualcomm Retail Solutions, Inc. (formerly Qualcomm Labs, Inc.) + ID_VENDOR_FROM_DATABASE=Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.) bluetooth:v008D* ID_VENDOR_FROM_DATABASE=Zscan Software @@ -1006,10 +1006,46 @@ bluetooth:v014C* ID_VENDOR_FROM_DATABASE=Mesh-Net Ltd bluetooth:v014D* - ID_VENDOR_FROM_DATABASE=HUIZHOU DESAY SV AUTOMOTIVE CO., LTD. + ID_VENDOR_FROM_DATABASE=Huizhou Desay SV Automotive CO., LTD. bluetooth:v014E* ID_VENDOR_FROM_DATABASE=Tangerine, Inc. bluetooth:v014F* ID_VENDOR_FROM_DATABASE=B&W Group Ltd. + +bluetooth:v0150* + ID_VENDOR_FROM_DATABASE=Pioneer Corporation + +bluetooth:v0151* + ID_VENDOR_FROM_DATABASE=OnBeep + +bluetooth:v0152* + ID_VENDOR_FROM_DATABASE=Vernier Software & Technology + +bluetooth:v0153* + ID_VENDOR_FROM_DATABASE=ROL Ergo + +bluetooth:v0154* + ID_VENDOR_FROM_DATABASE=Pebble Technology + +bluetooth:v0155* + ID_VENDOR_FROM_DATABASE=NETATMO + +bluetooth:v0156* + ID_VENDOR_FROM_DATABASE=Accumulate AB + +bluetooth:v0157* + ID_VENDOR_FROM_DATABASE=Anhui Huami Information Technology Co., Ltd. + +bluetooth:v0158* + ID_VENDOR_FROM_DATABASE=Inmite s.r.o. + +bluetooth:v0159* + ID_VENDOR_FROM_DATABASE=ChefSteps, Inc. + +bluetooth:v015A* + ID_VENDOR_FROM_DATABASE=micus AG + +bluetooth:v015B* + ID_VENDOR_FROM_DATABASE=Biomedical Research Ltd. -- 1.7.9.2 ++++++ 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch ++++++
From e683212f049ac5d3f95fb17300cfa2fd971f78f3 Mon Sep 17 00:00:00 2001 From: Ronny Chevalier <chevalier.ronny@gmail.com> Date: Tue, 3 Jun 2014 19:44:03 +0200 Subject: [PATCH] log: honour the kernel's quiet cmdline argument
It was forgotten in b1e90ec515408aec2702522f6f68c4920b56375b See https://bugs.freedesktop.org/show_bug.cgi?id=79582 --- src/shared/log.c | 3 +++ 1 file changed, 3 insertions(+) diff --git src/shared/log.c src/shared/log.c index 9039db3..6f17705 100644 --- src/shared/log.c +++ src/shared/log.c @@ -878,6 +878,9 @@ void log_parse_environment(void) { if (l == 5 && startswith(w, "debug")) { log_set_max_level(LOG_DEBUG); break; + } else if (l == 5 && startswith(w, "quiet")) { + log_set_max_level(LOG_WARNING); + break; } } } -- 1.7.9.2 ++++++ 0006-tty-ask-password-agent-Do-tell-what-directory-we-fai.patch ++++++
From 267b3e41df5a2181f2911433539f81de2fa1511a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org> Date: Thu, 29 May 2014 14:17:37 -0400 Subject: [PATCH] tty-ask-password-agent: Do tell what directory we failed to open
--- .../tty-ask-password-agent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/tty-ask-password-agent/tty-ask-password-agent.c src/tty-ask-password-agent/tty-ask-password-agent.c index 3203474..55a2215 100644 --- src/tty-ask-password-agent/tty-ask-password-agent.c +++ src/tty-ask-password-agent/tty-ask-password-agent.c @@ -501,7 +501,7 @@ static int show_passwords(void) { if (errno == ENOENT) return 0; - log_error("opendir(): %m"); + log_error("opendir(/run/systemd/ask-password): %m"); return -errno; } -- 1.7.9.2 ++++++ 0007-keyboard-add-Plantronics-.Audio-mute-button.patch ++++++
From 9e3dbf6b2b99d0e16989d9cedb458729db5a60c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Sun, 1 Jun 2014 14:01:23 -0400 Subject: [PATCH] keyboard: add Plantronics .Audio mute button
https://bugs.freedesktop.org/show_bug.cgi?id=79495 --- hwdb/60-keyboard.hwdb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb index 05e6a04..d053766 100644 --- hwdb/60-keyboard.hwdb +++ hwdb/60-keyboard.hwdb @@ -866,6 +866,14 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:pvr* KEYBOARD_KEY_f3=volumeup ########################################################### +# Plantronics +########################################################### + +# Plantronics .Audio 626 DSP +keyboard:usb:v047fpC006* + KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute + +########################################################### # Quanta ########################################################### -- 1.7.9.2 ++++++ 0007-po-add-German-translation.patch ++++++
From 351e57652a7d9a51f9064c089794d13801eaee73 Mon Sep 17 00:00:00 2001 From: Benjamin Steinwender <b@stbe.at> Date: Sun, 8 Jun 2014 18:39:50 +0200 Subject: [PATCH] po: add German translation
https://bugs.freedesktop.org/show_bug.cgi?id=79430 --- po/LINGUAS | 1 + po/de.po | 418 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 419 insertions(+) create mode 100644 po/de.po diff --git po/LINGUAS po/LINGUAS index 820ca82..2cb0f30 100644 --- po/LINGUAS +++ po/LINGUAS @@ -1,3 +1,4 @@ +de el fr it diff --git po/de.po po/de.po new file mode 100644 index 0000000..a41e33d --- /dev/null +++ po/de.po @@ -0,0 +1,418 @@ +# German translation for systemd. +# Copyright (C) 2014 systemd's COPYRIGHT HOLDER +# This file is distributed under the same license as the systemd package. +# Christian Kirbach <Christian.Kirbach@gmail.com>, 2014. +# Benjamin Steinwender <b@stbe.at>, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: systemd master\n" +"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?" +"product=systemd&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-06-02 10:25+0000\n" +"PO-Revision-Date: 2014-06-02 22:43+0100\n" +"Last-Translator: Benjamin Steinwender <b@stbe.at>\n" +"Language-Team: German <gnome-de@gnome.org>\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.5\n" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:1 +msgid "Set host name" +msgstr "Rechnername festlegen" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:2 +msgid "Authentication is required to set the local host name." +msgstr "Legitimierung ist zum Festlegen des lokalen Rechnernamens notwendig" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3 +msgid "Set static host name" +msgstr "Statischen Rechnernamen festlegen" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4 +msgid "" +"Authentication is required to set the statically configured local host name, " +"as well as the pretty host name." +msgstr "" +"Authentifizierung ist erforderlich, um den statisch geänderten, lokalen " +"Rechnernamen, sowie den beschönigten Rechnernamen festzulegen." + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:5 +msgid "Set machine information" +msgstr "Maschinen-Information festlegen" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:6 +msgid "Authentication is required to set local machine information." +msgstr "" +"Legitimierung ist zum Festlegen der lokalen Maschinen-Information " +"erforderlich." + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:1 +msgid "Set system locale" +msgstr "Die lokale Sprachumgebung festlegen" + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:2 +msgid "Authentication is required to set the system locale." +msgstr "" +"Legitimierung ist zum Festlegen der systemweiten Spracheinstellungen " +"erforderlich." + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:3 +msgid "Set system keyboard settings" +msgstr "Tastatureinstellungen des Systems festlegen" + +#: ../src/locale/org.freedesktop.locale1.policy.in.h:4 +msgid "Authentication is required to set the system keyboard settings." +msgstr "" +"Legitimierung ist zum Festlegen der Tastatureinstellungen des Systems " +"erforderlich." + +#: ../src/login/org.freedesktop.login1.policy.in.h:1 +msgid "Allow applications to inhibit system shutdown" +msgstr "Anwendungen dürfen das Herunterfahren des Systems unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:2 +msgid "" +"Authentication is required to allow an application to inhibit system " +"shutdown." +msgstr "" +"Legitimierung ist notwendig, um Anwendungen das Herunterfahren des Systems " +"zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:3 +msgid "Allow applications to delay system shutdown" +msgstr "Anwendungen dürfen das Herunterfahren des Systems verzögern" + +#: ../src/login/org.freedesktop.login1.policy.in.h:4 +msgid "" +"Authentication is required to allow an application to delay system shutdown." +msgstr "" +"Legitimierung ist notwendig, um Anwendungen das Verzögern des Herunterfahren " +"des Systems zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:5 +msgid "Allow applications to inhibit system sleep" +msgstr "Anwendungen dürfen den Bereitschaftsmodus unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:6 +msgid "" +"Authentication is required to allow an application to inhibit system sleep." +msgstr "" +"Legitimierung ist erforderlich, um Anwendungen das Unterbinden des " +"Bereitschaftsmodus zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:7 +msgid "Allow applications to delay system sleep" +msgstr "Anwendungen dürfen den Bereitschaftsmodus verzögern" + +#: ../src/login/org.freedesktop.login1.policy.in.h:8 +msgid "" +"Authentication is required to allow an application to delay system sleep." +msgstr "" +"Legitimierung ist erforderlich, um Anwendungen das Verzögern des " +"Bereitschaftsmodus zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:9 +msgid "Allow applications to inhibit automatic system suspend" +msgstr "Anwendungen dürfen den automatischen Bereitschaftsmodus unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:10 +msgid "" +"Authentication is required to allow an application to inhibit automatic " +"system suspend." +msgstr "" +"Legitimierung ist notwendig, um Anwendungen das Unterbinden des " +"automatischen Bereitschaftsmodus zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:11 +msgid "Allow applications to inhibit system handling of the power key" +msgstr "" +"Anwendungen dürfen das Auswerten des Ein-/Ausschaltknopfs des Systems " +"unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:12 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the power key." +msgstr "" +"Legitmierung ist erforderlich, um Anwendungen das Unterbinden der Auswertung " +"der Ein-/Ausschaltknopfs des Systems zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:13 +msgid "Allow applications to inhibit system handling of the suspend key" +msgstr "" +"Anwendungen dürfen das Auswerten des Bereitschaftsknopfs des Systems " +"unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:14 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the suspend key." +msgstr "" +"Legitimierung ist erforderlich, um Anwendungen das Unterbinden der " +"Auswertung des Bereitschaftsknopfes des Systems zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:15 +msgid "Allow applications to inhibit system handling of the hibernate key" +msgstr "" +"Anwendungen dürfen das Auswerten des Knopfs für den Ruhezustand unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:16 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the hibernate key." +msgstr "" +"Legitimierung ist erforderlich, um Anwendungen das Unterbinden der " +"Auswertung des Knopfs für den Ruhezustand zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:17 +msgid "Allow applications to inhibit system handling of the lid switch" +msgstr "" +"Anwendungen dürfen das Auswerten des Notebookdeckelschalters unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:18 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the lid switch." +msgstr "" +"Legitimierung ist erforderlich, um Anwendungen das Unterbinden der " +"Auswertung des Notebookdeckelschalters des Systems zu erlauben." + +#: ../src/login/org.freedesktop.login1.policy.in.h:19 +msgid "Allow non-logged-in users to run programs" +msgstr "Nicht angemeldete Benutzer dürfen Programme ausführen" + +#: ../src/login/org.freedesktop.login1.policy.in.h:20 +msgid "" +"Authentication is required to allow a non-logged-in user to run programs." +msgstr "" +"Legitimierung ist erforderlich, damit nicht angemeldete Benutzer Programme " +"ausführen dürfen." + +# www.freedesktop.org/wiki/Software/systemd/multiseat/ +#: ../src/login/org.freedesktop.login1.policy.in.h:21 +msgid "Allow attaching devices to seats" +msgstr "Das Anschließen von Geräten an Arbeitsstationen erlauben" + +# www.freedesktop.org/wiki/Software/systemd/multiseat/ +#: ../src/login/org.freedesktop.login1.policy.in.h:22 +msgid "Authentication is required for attaching a device to a seat." +msgstr "" +"Legitimierung ist zum Anschließen eines Geräts an eine Arbeitsstation " +"notwendig." + +# www.freedesktop.org/wiki/Software/systemd/multiseat/ +#: ../src/login/org.freedesktop.login1.policy.in.h:23 +msgid "Flush device to seat attachments" +msgstr "Zurücksetzen der an eine Arbeitsstation angeschlossenen Geräte" + +# www.freedesktop.org/wiki/Software/systemd/multiseat/ +#: ../src/login/org.freedesktop.login1.policy.in.h:24 +msgid "" +"Authentication is required for resetting how devices are attached to seats." +msgstr "" +"Legitimierung ist zum Zurücksetzen notwendig, wie Geräte an eine " +"Arbeitsstation angeschlossen werden." + +#: ../src/login/org.freedesktop.login1.policy.in.h:25 +msgid "Power off the system" +msgstr "Das System ausschalten" + +#: ../src/login/org.freedesktop.login1.policy.in.h:26 +msgid "Authentication is required for powering off the system." +msgstr "Legitimierung ist zum Ausschalten des Systems notwendig." + +#: ../src/login/org.freedesktop.login1.policy.in.h:27 +msgid "Power off the system while other users are logged in" +msgstr "Das System herunter fahren, während andere Benutzer angemeldet sind" + +#: ../src/login/org.freedesktop.login1.policy.in.h:28 +msgid "" +"Authentication is required for powering off the system while other users are " +"logged in." +msgstr "" +"Legitimierung ist zum Herunterfahren des Systems notwendig, während andere " +"Benutzer angemeldet sind." + +#: ../src/login/org.freedesktop.login1.policy.in.h:29 +msgid "Power off the system while an application asked to inhibit it" +msgstr "" +"Das System ausschalten, während eine Anwendung anfordert es zu unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:30 +msgid "" +"Authentication is required for powering off the system while an application " +"asked to inhibit it." +msgstr "" +"Legitimierung ist zum Ausschalten des Systems notwendig, während eine " +"Anwendung anfordert es zu unterbinden." + +#: ../src/login/org.freedesktop.login1.policy.in.h:31 +msgid "Reboot the system" +msgstr "Das System neu starten" + +#: ../src/login/org.freedesktop.login1.policy.in.h:32 +msgid "Authentication is required for rebooting the system." +msgstr "Legitimierung ist zum Neustart des Systems notwendig." + +#: ../src/login/org.freedesktop.login1.policy.in.h:33 +msgid "Reboot the system while other users are logged in" +msgstr "Das Systems neu starten, während andere Benutzer angemeldet sind" + +#: ../src/login/org.freedesktop.login1.policy.in.h:34 +msgid "" +"Authentication is required for rebooting the system while other users are " +"logged in." +msgstr "" +"Legitimierung ist zum Neustart des Systems notwendig, während andere " +"Benutzer angemeldet sind." + +#: ../src/login/org.freedesktop.login1.policy.in.h:35 +msgid "Reboot the system while an application asked to inhibit it" +msgstr "" +"Das System neu starten, während eine Anwendung anfordert es zu unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:36 +msgid "" +"Authentication is required for rebooting the system while an application " +"asked to inhibit it." +msgstr "" +"Legitimierung ist zum Neustart des Systems notwendig, während eine Anwendung " +"anforderte es zu unterbinden." + +#: ../src/login/org.freedesktop.login1.policy.in.h:37 +msgid "Suspend the system" +msgstr "Das System in Bereitschaft versetzen" + +#: ../src/login/org.freedesktop.login1.policy.in.h:38 +msgid "Authentication is required for suspending the system." +msgstr "Legitimierung ist zum Versetzen des Systems in Bereitschaft notwendig." + +#: ../src/login/org.freedesktop.login1.policy.in.h:39 +msgid "Suspend the system while other users are logged in" +msgstr "" +"Das System in Bereitschaft versetzen, während andere Benutzer angemeldet " +"sind." + +#: ../src/login/org.freedesktop.login1.policy.in.h:40 +msgid "" +"Authentication is required for suspending the system while other users are " +"logged in." +msgstr "" +"Legitimierung ist zum Versetzen des Systems in Bereitschaft notwendig, " +"während andere Benutzer angemeldet sind." + +#: ../src/login/org.freedesktop.login1.policy.in.h:41 +msgid "Suspend the system while an application asked to inhibit it" +msgstr "" +"Das System in Bereitschaft versetzen, während eine Anwendung anfordert dies " +"zu unterbinden" + +#: ../src/login/org.freedesktop.login1.policy.in.h:42 +msgid "" +"Authentication is required for suspending the system while an application " +"asked to inhibit it." +msgstr "" +"Legitimierung ist zum Versetzen des Systems in Bereitschaft notwendig, " +"während eine Anwendung anfordert dies zu unterbinden." + +#: ../src/login/org.freedesktop.login1.policy.in.h:43 +msgid "Hibernate the system" +msgstr "Den Ruhezustand des Systems aktivieren" + +#: ../src/login/org.freedesktop.login1.policy.in.h:44 +msgid "Authentication is required for hibernating the system." +msgstr "" +"Legitimierung ist zum Aktivieren des Ruhezustands des Systems notwendig." + +#: ../src/login/org.freedesktop.login1.policy.in.h:45 +msgid "Hibernate the system while other users are logged in" +msgstr "" +"Den Ruhezustand des Systems aktivieren, während andere Benutzer angemeldet " +"sind" + +#: ../src/login/org.freedesktop.login1.policy.in.h:46 +msgid "" +"Authentication is required for hibernating the system while other users are " +"logged in." +msgstr "" +"Legitimierung ist zum Aktivieren des Ruhezustands des Systems notwendig, " +"während andere Benutzer angemeldet sind." + +#: ../src/login/org.freedesktop.login1.policy.in.h:47 +msgid "Hibernate the system while an application asked to inhibit it" +msgstr "" +"Das System in den Ruhezustand versetzen, während eine Anwendung wünscht dies " +"zu verhindern" + +#: ../src/login/org.freedesktop.login1.policy.in.h:48 +msgid "" +"Authentication is required for hibernating the system while an application " +"asked to inhibit it." +msgstr "" +"Legitimierung ist zum Versetzen des System in den Ruhezustand notwendig, " +"während eine Anwendung wünscht dies zu verhindern." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1 +msgid "Set system time" +msgstr "Die Systemzeit festlegen" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:2 +msgid "Authentication is required to set the system time." +msgstr "Legitimierung ist zum Festlegen der Systemzeit notwendig." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:3 +msgid "Set system timezone" +msgstr "Die Systemzeitzone festlegen" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:4 +msgid "Authentication is required to set the system timezone." +msgstr "Legitimierung ist zum Festlegen der Systemzeitzone notwendig." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:5 +msgid "Set RTC to local timezone or UTC" +msgstr "Echtzeituhr auf lokale Zeitzone oder UTC setzen" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:6 +msgid "" +"Authentication is required to control whether the RTC stores the local or " +"UTC time." +msgstr "" +"Legitimierung ist notwendig zum Festlegen, ob die Echtzeituhr auf lokale " +"Zeitzone oder UTC eingestellt ist." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:7 +msgid "Turn network time synchronization on or off" +msgstr "Netzwerkzeitabgeich ein- oder ausschalten" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:8 +msgid "" +"Authentication is required to control whether network time synchronization " +"shall be enabled." +msgstr "" +"Legitimierung ist zum Festlegen, ob Netzwerkzeitabgeich eingeschaltet sein " +"soll, erforderlich." + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1 +msgid "Send passphrase back to system" +msgstr "Passphrase zurück an das System senden" + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:2 +msgid "" +"Authentication is required to send the entered passphrase back to the system." +msgstr "" +"Legitimierung ist zum Senden des eingegebenen Kennworts zurück an das System " +"notwendig." + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3 +msgid "Privileged system and service manager access" +msgstr "Privilegierter Zugriff auf die System- und Dienstverwaltung" + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4 +msgid "Authentication is required to access the system and service manager." +msgstr "" +"Legitimierung ist notwendig für den Zugriff auf die System- und " +"Dienstverwaltung." -- 1.7.9.2 ++++++ 0008-Reset-signal-mask-on-re-exec-to-init.patch ++++++
From 5a85ca1cb622fda4a39c8a6f00dccea7f8a1e82a Mon Sep 17 00:00:00 2001 From: Ruediger Oertel <ro@suse.de> Date: Fri, 13 Jun 2014 16:41:06 +0200 Subject: [PATCH] Reset signal-mask on re-exec to init=..
Process 1 (aka init) needs to be started with an empty signal mask. That includes the process 1 that's started after the initrd is finished. When the initrd is using systemd (as it does with dracut based initrds) then it is systemd that calls the real init. Normally this is systemd again, except when the user uses for instance "init=/bin/bash" on the kernel command line. --- src/core/main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git src/core/main.c src/core/main.c index 3aac5d1..3e57f07 100644 --- src/core/main.c +++ src/core/main.c @@ -1843,6 +1843,7 @@ finish: if (reexecute) { const char **args; unsigned i, args_size; + sigset_t ss, o_ss; /* Close and disarm the watchdog, so that the new * instance can reinitialize it, but doesn't get @@ -1926,6 +1927,11 @@ finish: args[i++] = NULL; assert(i <= args_size); + /* reenable any blocked signals, especially important + * if we switch from initial ramdisk to init=... */ + sigemptyset(&ss); + sigprocmask(SIG_SETMASK, &ss, &o_ss); + if (switch_root_init) { args[0] = switch_root_init; execv(args[0], (char* const*) args); @@ -1944,6 +1950,8 @@ finish: log_error("Failed to execute /bin/sh, giving up: %m"); } else log_warning("Failed to execute /sbin/init, giving up: %m"); + + sigprocmask(SIG_SETMASK, &o_ss, NULL); } if (arg_serialization) { -- 1.7.9.2 ++++++ 0009-core-clean-up-signal-reset-logic-when-reexec.patch ++++++
From 9bfcda9528636914aef3e0ab91191bb81654c83d Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Fri, 20 Jun 2014 16:58:21 +0200 Subject: [PATCH] core: clean-up signal reset logic when reexec
There's no need to save the old sigmask, if we are going to die. Let's simplify this. Also, reset all the signal handlers, so that we don't leave SIG_IGN set for some of them across reexec. --- src/core/main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git src/core/main.c src/core/main.c index 863ba52..6981e72 100644 --- src/core/main.c +++ src/core/main.c @@ -1824,7 +1824,7 @@ finish: if (reexecute) { const char **args; unsigned i, args_size; - sigset_t ss, o_ss; + sigset_t ss; /* Close and disarm the watchdog, so that the new * instance can reinitialize it, but doesn't get @@ -1910,8 +1910,10 @@ finish: /* reenable any blocked signals, especially important * if we switch from initial ramdisk to init=... */ - sigemptyset(&ss); - sigprocmask(SIG_SETMASK, &ss, &o_ss); + reset_all_signal_handlers(); + + assert_se(sigemptyset(&ss) == 0); + assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0); if (switch_root_init) { args[0] = switch_root_init; @@ -1931,8 +1933,6 @@ finish: log_error("Failed to execute /bin/sh, giving up: %m"); } else log_warning("Failed to execute /sbin/init, giving up: %m"); - - sigprocmask(SIG_SETMASK, &o_ss, NULL); } if (arg_serialization) { -- 1.7.9.2 ++++++ 0010-util-treat-fuse.sshfs-as-a-network-filesystem.patch ++++++
From da92ca5eb506d513033e0c7a85daf25a7e1c9d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Fri, 20 Jun 2014 22:43:49 -0400 Subject: [PATCH] util: treat fuse.sshfs as a network filesystem
https://bugs.freedesktop.org/show_bug.cgi?id=73727 --- src/shared/util.c | 1 + 1 file changed, 1 insertion(+) diff --git src/shared/util.c src/shared/util.c index 882a690..dbdb692 100644 --- src/shared/util.c +++ src/shared/util.c @@ -1514,6 +1514,7 @@ bool fstype_is_network(const char *fstype) { static const char table[] = "cifs\0" "smbfs\0" + "sshfs\0" "ncpfs\0" "ncp\0" "nfs\0" -- 1.7.9.2 ++++++ 0011-build-sys-add-pthread-flag-for-libsystemd-shared.patch ++++++
From 8e75477abdd838d3beddc5fd1c6a7707b22748b6 Mon Sep 17 00:00:00 2001 From: Ronny Chevalier <chevalier.ronny@gmail.com> Date: Sat, 21 Jun 2014 22:07:09 +0200 Subject: [PATCH] build-sys: add -pthread flag for libsystemd-shared
src/shared/async.c uses pthread so it will fail at link time if we link only to libsystemd-shared and use async --- Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git Makefile.am Makefile.am index c7653ea..00db82d 100644 --- Makefile.am +++ Makefile.am @@ -837,7 +837,8 @@ nodist_libsystemd_shared_la_SOURCES = \ libsystemd_shared_la_CFLAGS = \ $(AM_CFLAGS) \ - $(SECCOMP_CFLAGS) + $(SECCOMP_CFLAGS) \ + -pthread # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ -- 1.7.9.2 ++++++ 0012-core-transaction-avoid-misleading-error-message-when.patch ++++++ Based on 04ef5b03f64d3824a51a2a903548af029a006744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Sun, 22 Jun 2014 14:04:23 -0400 Subject: [PATCH] core/transaction: avoid misleading error message when unit not found There's no point in telling the user to look at the logs when an attempt to load the unit file failed with ENOENT. https://bugzilla.redhat.com/show_bug.cgi?id=996133 --- TODO | 4 ---- src/core/transaction.c | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) --- src/core/transaction.c +++ src/core/transaction.c 2014-06-24 11:18:42.746235805 +0000 @@ -865,12 +865,18 @@ int transaction_add_job_and_dependencies } if (type != JOB_STOP && unit->load_state == UNIT_ERROR) { - sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED, - "Unit %s failed to load: %s. " - "See system logs and 'systemctl status %s' for details.", - unit->id, - strerror(-unit->load_error), - unit->id); + if (unit->load_error == -ENOENT) + sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED, + "Unit %s failed to load: %s.", + unit->id, + strerror(-unit->load_error)); + else + sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED, + "Unit %s failed to load: %s. " + "See system logs and 'systemctl status %s' for details.", + unit->id, + strerror(-unit->load_error), + unit->id); return -EINVAL; } ++++++ 1021-udev-re-add-persistent-net-rules.patch ++++++ Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules =================================================================== --- /dev/null +++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules @@ -0,0 +1,105 @@ +# do not edit this file, it will be overwritten on update + +# these rules generate rules for persistent network device naming +# +# variables used to communicate: +# MATCHADDR MAC address used for the match +# MATCHID bus_id used for the match +# MATCHDRV driver name used for the match +# MATCHIFTYPE interface type match +# COMMENT comment to add to the generated rule +# INTERFACE_NAME requested name supplied by external tool +# INTERFACE_NEW new interface name returned by rule writer + +ACTION!="add", GOTO="persistent_net_generator_end" +SUBSYSTEM!="net", GOTO="persistent_net_generator_end" + +# ignore the interface if a name has already been set +NAME=="?*", GOTO="persistent_net_generator_end" + +# device name whitelist +KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end" + +IMPORT{cmdline}="net.ifnames" +ENV{net.ifnames}=="1", GOTO="persistent_net_generator_end" + +# ignore Xen virtual interfaces +SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end" + +# read MAC address +ENV{MATCHADDR}="$attr{address}" + +# match interface type +ENV{MATCHIFTYPE}="$attr{type}" + +# ignore KVM virtual interfaces +ENV{MATCHADDR}=="52:54:00:*", GOTO="persistent_net_generator_end" +# ignore VMWare virtual interfaces +ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", GOTO="persistent_net_generator_end" +# ignore Hyper-V virtual interfaces +ENV{MATCHADDR}=="00:15:5d:*", GOTO="persistent_net_generator_end" + +# These vendors are known to violate the local MAC address assignment scheme +# Interlan, DEC (UNIBUS or QBUS), Apollo, Cisco, Racal-Datacom +ENV{MATCHADDR}=="02:07:01:*", GOTO="globally_administered_whitelist" +# 3Com +ENV{MATCHADDR}=="02:60:60:*", GOTO="globally_administered_whitelist" +# 3Com IBM PC; Imagen; Valid; Cisco; Apple +ENV{MATCHADDR}=="02:60:8c:*", GOTO="globally_administered_whitelist" +# Intel +ENV{MATCHADDR}=="02:a0:c9:*", GOTO="globally_administered_whitelist" +# Olivetti +ENV{MATCHADDR}=="02:aa:3c:*", GOTO="globally_administered_whitelist" +# CMC Masscomp; Silicon Graphics; Prime EXL +ENV{MATCHADDR}=="02:cf:1f:*", GOTO="globally_administered_whitelist" +# Prominet Corporation Gigabit Ethernet Switch +ENV{MATCHADDR}=="02:e0:3b:*", GOTO="globally_administered_whitelist" +# BTI (Bus-Tech, Inc.) IBM Mainframes +ENV{MATCHADDR}=="02:e6:d3:*", GOTO="globally_administered_whitelist" +# Realtek +ENV{MATCHADDR}=="52:54:00:*", GOTO="globally_administered_whitelist" +# Novell 2000 +ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist" +# Realtec +ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist" +# Kingston Technologies +ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist" +# Xensource +ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist" + +# match interface dev_id +ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}" + +# do not use "locally administered" MAC address +ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}="" + +# do not use empty address +ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}="" + +LABEL="globally_administered_whitelist" + +# build comment line for generated rule: +SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*", ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($driver)" +SUBSYSTEMS=="pcmcia", ENV{COMMENT}="PCMCIA device $attr{card_id}:$attr{manf_id} ($driver)" +SUBSYSTEMS=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})" + +# ibmveth likes to use "locally administered" MAC addresses +DRIVERS=="ibmveth", ENV{MATCHADDR}="$attr{address}", ENV{COMMENT}="ibmveth ($id)" + +# S/390 uses id matches only, do not use MAC address match +SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{MATCHID}="$id", ENV{MATCHDRV}="$driver", ENV{MATCHADDR}="" + +# see if we got enough data to create a rule +ENV{MATCHADDR}=="", ENV{MATCHID}=="", ENV{INTERFACE_NAME}=="", GOTO="persistent_net_generator_end" + +# default comment +ENV{COMMENT}=="", ENV{COMMENT}="net device ($attr{driver})" + +# write rule +DRIVERS=="?*", IMPORT{program}="write_net_rules" + +# rename interface if needed +ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}" + +LABEL="persistent_net_generator_end" Index: systemd-210/src/udev/rule_generator/rule_generator.functions =================================================================== --- /dev/null +++ systemd-210/src/udev/rule_generator/rule_generator.functions @@ -0,0 +1,113 @@ +# functions used by the udev rule generator + +# Copyright (C) 2006 Marco d'Itri <md@Linux.IT> + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +PATH='/usr/bin:/bin:/usr/sbin:/sbin' + +# Read a single line from file $1 in the $DEVPATH directory. +# The function must not return an error even if the file does not exist. +sysread() { + local file="$1" + [ -e "/sys$DEVPATH/$file" ] || return 0 + local value + read value < "/sys$DEVPATH/$file" || return 0 + echo "$value" +} + +sysreadlink() { + local file="$1" + [ -e "/sys$DEVPATH/$file" ] || return 0 + readlink -f /sys$DEVPATH/$file 2> /dev/null || true +} + +# Return true if a directory is writeable. +writeable() { + if ln -s test-link $1/.is-writeable 2> /dev/null; then + rm -f $1/.is-writeable + return 0 + else + return 1 + fi +} + +# Create a lock file for the current rules file. +lock_rules_file() { + RUNDIR="/run/udev" + [ -e "$RUNDIR" ] || return 0 + + RULES_LOCK="$RUNDIR/.lock-${RULES_FILE##*/}" + + retry=30 + while ! mkdir $RULES_LOCK 2> /dev/null; do + if [ $retry -eq 0 ]; then + echo "Cannot lock $RULES_FILE!" >&2 + exit 2 + fi + sleep 1 + retry=$(($retry - 1)) + done +} + +unlock_rules_file() { + [ "$RULES_LOCK" ] || return 0 + rmdir $RULES_LOCK || true +} + +# Choose the real rules file if it is writeable or a temporary file if not. +# Both files should be checked later when looking for existing rules. +choose_rules_file() { + RUNDIR="/run/udev" + local tmp_rules_file="$RUNDIR/tmp-rules--${RULES_FILE##*/}" + [ -e "$RULES_FILE" -o -e "$tmp_rules_file" ] || PRINT_HEADER=1 + + if writeable ${RULES_FILE%/*}; then + RO_RULES_FILE='/dev/null' + else + RO_RULES_FILE=$RULES_FILE + RULES_FILE=$tmp_rules_file + fi +} + +# Return the name of the first free device. +raw_find_next_available() { + local links="$1" + + local basename=${links%%[ 0-9]*} + local max=-1 + for name in $links; do + local num=${name#$basename} + [ "$num" ] || num=0 + [ $num -gt $max ] && max=$num + done + + local max=$(($max + 1)) + # "name0" actually is just "name" + [ $max -eq 0 ] && return + echo "$max" +} + +# Find all rules matching a key (with action) and a pattern. +find_all_rules() { + local key="$1" + local linkre="$2" + local match="$3" + + local search='.*[[:space:],]'"$key"'"('"$linkre"')".*' + echo $(sed -n -r -e 's/^#.*//' -e "${match}s/${search}/\1/p" \ + $RO_RULES_FILE \ + $([ -e $RULES_FILE ] && echo $RULES_FILE) \ + 2>/dev/null) +} Index: systemd-210/src/udev/rule_generator/write_net_rules =================================================================== --- /dev/null +++ systemd-210/src/udev/rule_generator/write_net_rules @@ -0,0 +1,141 @@ +#!/bin/sh -e + +# This script is run to create persistent network device naming rules +# based on properties of the device. +# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed +# on stdout to allow udev to IMPORT it. + +# variables used to communicate: +# MATCHADDR MAC address used for the match +# MATCHID bus_id used for the match +# MATCHDEVID dev_id used for the match +# MATCHDRV driver name used for the match +# MATCHIFTYPE interface type match +# COMMENT comment to add to the generated rule +# INTERFACE_NAME requested name supplied by external tool +# INTERFACE_NEW new interface name returned by rule writer + +# Copyright (C) 2006 Marco d'Itri <md@Linux.IT> +# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# debug, if UDEV_LOG=<debug> +if [ -n "$UDEV_LOG" ]; then + if [ "$UDEV_LOG" -ge 7 ]; then + set -x + fi +fi + +RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules' + +. /usr/lib/udev/rule_generator.functions + +interface_name_taken() { + local value="$(find_all_rules 'NAME=' $INTERFACE)" + if [ "$value" ]; then + return 0 + else + return 1 + fi +} + +find_next_available() { + raw_find_next_available "$(find_all_rules 'NAME=' "$1")" +} + +write_rule() { + local match="$1" + local name="$2" + local comment="$3" + + { + if [ "$PRINT_HEADER" ]; then + PRINT_HEADER= + echo "# This file was automatically generated by the $0" + echo "# program, run by the persistent-net-generator.rules rules file." + echo "#" + echo "# You can modify it, as long as you keep each rule on a single" + echo "# line, and change only the value of the NAME= key." + fi + + echo "" + [ "$comment" ] && echo "# $comment" + echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\"" + } >> $RULES_FILE +} + +if [ -z "$INTERFACE" ]; then + echo "missing \$INTERFACE" >&2 + exit 1 +fi + +# Prevent concurrent processes from modifying the file at the same time. +lock_rules_file + +# Check if the rules file is writeable. +choose_rules_file + +# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces +if [ "$MATCHADDR" ]; then + match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\"" +fi + +if [ "$MATCHDRV" ]; then + match="$match, DRIVERS==\"$MATCHDRV\"" +fi + +if [ "$MATCHDEVID" ]; then + match="$match, ATTR{dev_id}==\"$MATCHDEVID\"" +fi + +if [ "$MATCHID" ]; then + match="$match, KERNELS==\"$MATCHID\"" +fi + +if [ "$MATCHIFTYPE" ]; then + match="$match, ATTR{type}==\"$MATCHIFTYPE\"" +fi + +if [ -z "$match" ]; then + echo "missing valid match" >&2 + unlock_rules_file + exit 1 +fi + +basename=${INTERFACE%%[0-9]*} +match="$match, KERNEL==\"$basename*\"" + +if [ "$INTERFACE_NAME" ]; then + # external tools may request a custom name + COMMENT="$COMMENT (custom name provided by external tool)" + if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then + INTERFACE=$INTERFACE_NAME; + echo "INTERFACE_NEW=$INTERFACE" + fi +else + # if a rule using the current name already exists, find a new name + if interface_name_taken; then + INTERFACE="$basename$(find_next_available "$basename[0-9]*")" + # prevent INTERFACE from being "eth" instead of "eth0" + [ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0 + echo "INTERFACE_NEW=$INTERFACE" + fi +fi + +write_rule "$match" "$INTERFACE" "$COMMENT" + +unlock_rules_file + +exit 0 Index: systemd-210/Makefile.am =================================================================== --- systemd-210.orig/Makefile.am +++ systemd-210/Makefile.am @@ -2552,7 +2552,14 @@ dist_udevrules_DATA += \ rules/75-tty-description.rules \ rules/78-sound-card.rules \ rules/80-net-setup-link.rules \ - rules/95-udev-late.rules + rules/95-udev-late.rules \ + src/udev/rule_generator/75-persistent-net-generator.rules \ + src/udev/rule_generator/76-net-sriov-names.rules + +udevlibexec_PROGRAMS += \ + src/udev/rule_generator/rule_generator.functions \ + src/udev/rule_generator/write_net_rules \ + src/udev/rule_generator/net-set-sriov-names dist_udevhwdb_DATA = \ hwdb/20-pci-vendor-model.hwdb \ Index: systemd-210/src/udev/rule_generator/76-net-sriov-names.rules =================================================================== --- /dev/null +++ systemd-210/src/udev/rule_generator/76-net-sriov-names.rules @@ -0,0 +1,18 @@ +# do not edit this file, it will be overwritten on update +# +# rename SRIOV virtual function interfaces + +ACTION=="remove", GOTO="net-sriov-names_end" +SUBSYSTEM!="net", GOTO="net-sriov-names_end" + +IMPORT{cmdline}="net.ifnames" +ENV{net.ifnames}=="1", GOTO="net-sriov-names_end" + +SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACTION=="add", NAME=="?*", ENV{INTERFACE_NEW}="$name" +SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACTION=="add", IMPORT{program}="net-set-sriov-names" + +# rename interface if needed +ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}" +ENV{INTERFACE_NEW}=="", DRIVERS=="cxgb4vf|igbvf|ixgbevf", NAME="vf$attr{ifindex}" + +LABEL="net-sriov-names_end" Index: systemd-210/src/udev/rule_generator/net-set-sriov-names =================================================================== --- /dev/null +++ systemd-210/src/udev/rule_generator/net-set-sriov-names @@ -0,0 +1,79 @@ +#!/bin/bash -e +# +# This script is run to rename virtual interfaces +# + +if [ -n "$UDEV_LOG" ]; then + if [ "$UDEV_LOG" -ge 7 ]; then + set -x + fi +fi + +# according to dev_new_index(), ifindex is within [1, INT_MAX] +int_max=$(/usr/bin/getconf INT_MAX) +ifindex_before() { + a=$1 + b=$2 + + ((0 < (b - a) && (b - a) < int_max / 2 || + -1 * int_max < (b - a) && (b - a) < -1 * int_max / 2)) +} + +rename_interface() { + local src_net=$1 + local dest_net=$2 + local err=0 + + /sbin/ip link set dev $src_net down + /sbin/ip link set dev $src_net name $dest_net +} + +if [ -z "$INTERFACE" ]; then + echo "missing \$INTERFACE" >&2 + exit 1 +fi + +if [ -e "/sys/class/net/$INTERFACE/device/physfn" ]; then + pf=$(ls -1 "/sys/class/net/$INTERFACE/device/physfn/net") + if [ $(echo "$pf" | wc -l) -ne 1 ]; then + echo "too many pf's" >&2 + exit 1 + fi + read vfindex < "/sys/class/net/$INTERFACE/ifindex" + read pfindex < "/sys/class/net/$pf/ifindex" + if ifindex_before $pfindex $vfindex; then + bus_info=$(basename $(readlink "/sys/class/net/$INTERFACE/device")) + for virtfn in "/sys/class/net/$pf/device/"virtfn*; do + if [ "$(basename $(readlink "$virtfn"))" = "$bus_info" ]; then + vfnum=$(basename "$virtfn") + vfnum=${vfnum#virtfn} + echo "INTERFACE_NEW=$pf.vf$vfnum" + exit 0 + fi + done + fi +fi + +read pfindex < "/sys/class/net/$INTERFACE/ifindex" +shopt -s nullglob +for virtfn in "/sys/class/net/$INTERFACE/device/"virtfn*; do + vf=$(ls -1 "$virtfn/net") + if [ $(echo "$vf" | wc -l) -ne 1 ]; then + echo "too many vf's" >&2 + exit 1 + fi + read vfindex < "/sys/class/net/$vf/ifindex" + if ifindex_before $vfindex $pfindex; then + vfnum=$(basename "$virtfn") + vfnum=${vfnum#virtfn} + if [ "$INTERFACE_NEW" ]; then + new_name=$INTERFACE_NEW + else + new_name=$INTERFACE + fi + new_name="$new_name.vf$vfnum" + if [ "$vf" != "$new_name" ]; then + rename_interface "$vf" "$new_name" + fi + fi +done Index: systemd-210/src/udev/net/link-config.c =================================================================== --- systemd-210.orig/src/udev/net/link-config.c +++ systemd-210/src/udev/net/link-config.c @@ -193,6 +193,18 @@ static bool enable_name_policy(void) { r = proc_cmdline(&line); if (r < 0) log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); +#if defined(NET_IFNAMES) && (NET_IFNAMES == 1) +# warning Using persistent rules as a default + if (r <= 0) + return false; + + FOREACH_WORD_QUOTED(w, l, line, state) + if (strneq(w, "net.ifnames=1", l)) + return true; + + return false; +#else +# warning Using predictable rules as a default if (r <= 0) return true; @@ -201,6 +213,7 @@ static bool enable_name_policy(void) { return false; return true; +#endif } int link_config_load(link_config_ctx *ctx) { ++++++ 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch ++++++ ++++ 1445 lines (skipped) ++++++ 1023-udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch ++++++
From a52ec8ed881537627869afa8f0486db7e20ce2db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org> Date: Fri, 30 May 2014 13:16:56 -0400 Subject: [PATCH] udev-builtin-keyboard: do tell on which device EVIOCSKEYCODE failed.
I am getting "Error calling EVIOCSKEYCODE (scan code 0xc022d, key code 418): Invalid argument", the error message does not tell on which specific device the problem is, add that info. --- src/udev/udev-builtin-keyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/udev/udev-builtin-keyboard.c src/udev/udev-builtin-keyboard.c index 614e44e..9b66bfd 100644 --- src/udev/udev-builtin-keyboard.c +++ src/udev/udev-builtin-keyboard.c @@ -143,7 +143,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)", map[i].scan, map[i].scan, map[i].key, map[i].key); if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0) - log_error("Error calling EVIOCSKEYCODE (scan code 0x%x, key code %d): %m", map[i].scan, map[i].key); + log_error("Error calling EVIOCSKEYCODE on device node '%s' (scan code 0x%x, key code %d): %m", node, map[i].scan, map[i].key); } /* install list of force-release codes */ -- 1.7.9.2 ++++++ 1024-udev-always-close-lock-file-descriptor.patch ++++++ Based on 3d06f4183470d42361303086ed9dedd29c0ffc1b Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Tue, 3 Jun 2014 10:46:51 +0200 Subject: [PATCH] udev: always close lock file descriptor https://bugs.freedesktop.org/show_bug.cgi?id=79576 --- src/udev/udevd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- src/udev/udevd.c +++ src/udev/udevd.c 2014-06-03 15:34:42.778346368 +0000 @@ -301,6 +301,7 @@ static void worker_new(struct event *eve if (fd_lock >= 0 && flock(fd_lock, LOCK_SH|LOCK_NB) < 0) { log_debug("Unable to flock(%s), skipping event handling: %m", udev_device_get_devnode(d)); err = -EWOULDBLOCK; + close_nointr_nofail(fd_lock); fd_lock = -1; goto skip; } } @@ -318,7 +319,7 @@ static void worker_new(struct event *eve } if (fd_lock >= 0) - close(fd_lock); + close_nointr_nofail(fd_lock); /* send processed event back to libudev listeners */ udev_monitor_send_device(worker_monitor, NULL, dev); @@ -378,9 +379,9 @@ skip: out: udev_device_unref(dev); if (fd_signal >= 0) - close(fd_signal); + close_nointr_nofail(fd_signal); if (fd_ep >= 0) - close(fd_ep); + close_nointr_nofail(fd_ep); close(fd_inotify); close(worker_watch[WRITE_END]); udev_rules_unref(rules); ++++++ 1025-udev-exclude-device-mapper-from-block-device-ownersh.patch ++++++
From e918a1b5a94f270186dca59156354acd2a596494 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Tue, 3 Jun 2014 16:49:38 +0200 Subject: [PATCH] udev: exclude device-mapper from block device ownership event locking
Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 819ea3b..6c05104 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -290,7 +290,19 @@ static void worker_new(struct event *event) * acquired the lock, the external process will block until * udev has finished its event handling. */ - if (streq_ptr("block", udev_device_get_subsystem(dev))) { + + /* + * <kabi_> since we make check - device seems unused - we try + * ioctl to deactivate - and device is found to be opened + * <kay> sure, you try to take a write lock + * <kay> if you get it udev is out + * <kay> if you can't get it, udev is busy + * <kabi_> we cannot deactivate openned device (as it is in-use) + * <kay> maybe we should just exclude dm from that thing entirely + * <kabi_> IMHO this sounds like a good plan for this moment + */ + if (streq_ptr("block", udev_device_get_subsystem(dev)) && + !startswith("dm-", udev_device_get_sysname(dev))) { struct udev_device *d = dev; if (streq_ptr("partition", udev_device_get_devtype(d))) -- 1.8.4.5 ++++++ 1026-udevd-inotify-modernizations.patch ++++++
From edd32000c806e4527c5f376d138f7bff07724c26 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 11:05:45 +0200 Subject: [PATCH] udevd: inotify - modernizations
Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -736,20 +736,30 @@ out: return udev_ctrl_connection_unref(ctrl_conn); } +static void synthesize_change(struct udev_device *dev) { + char filename[UTIL_PATH_SIZE]; + + log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); + write_string_file(filename, "change"); +} + /* read inotify messages */ static int handle_inotify(struct udev *udev) { int nbytes, pos; char *buf; struct inotify_event *ev; + int r; - if ((ioctl(fd_inotify, FIONREAD, &nbytes) < 0) || (nbytes <= 0)) - return 0; + r = ioctl(fd_inotify, FIONREAD, &nbytes); + if (r < 0 || nbytes <= 0) + return -errno; buf = malloc(nbytes); - if (buf == NULL) { + if (!buf) { log_error("error getting buffer for inotify"); - return -1; + return -ENOMEM; } nbytes = read(fd_inotify, buf, nbytes); @@ -759,27 +769,16 @@ static int handle_inotify(struct udev *u ev = (struct inotify_event *)(buf + pos); dev = udev_watch_lookup(udev, ev->wd); - if (dev != NULL) { - log_debug("inotify event: %x for %s", ev->mask, udev_device_get_devnode(dev)); - if (ev->mask & IN_CLOSE_WRITE) { - char filename[UTIL_PATH_SIZE]; - int fd; - - log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); - strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); - fd = open(filename, O_WRONLY|O_CLOEXEC); - if (fd >= 0) { - if (write(fd, "change", 6) < 0) - log_debug("error writing uevent: %m"); - close(fd); - } - } - if (ev->mask & IN_IGNORED) - udev_watch_end(udev, dev); + if (!dev) + continue; - udev_device_unref(dev); - } + log_debug("inotify event: %x for %s", ev->mask, udev_device_get_devnode(dev)); + if (ev->mask & IN_CLOSE_WRITE) + synthesize_change(dev); + else if (ev->mask & IN_IGNORED) + udev_watch_end(udev, dev); + udev_device_unref(dev); } free(buf); ++++++ 1027-udev-synthesize-change-events-for-partitions-when-to.patch ++++++
From f3a740a5dae792fb6b2d411022ce8c29ced1c3f1 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 12:16:28 +0200 Subject: [PATCH] udev: synthesize "change' events for partitions when tools change the disk
This should make sure that fdisk-like programs will automatically cause an update of all partitions, just like mkfs-like programs cause an update of the partition. Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -46,6 +46,7 @@ #include <sys/utsname.h> #include "udev.h" +#include "udev-util.h" #include "sd-daemon.h" #include "cgroup-util.h" #include "dev-setup.h" @@ -736,15 +737,54 @@ out: return udev_ctrl_connection_unref(ctrl_conn); } -static void synthesize_change(struct udev_device *dev) { +static int synthesize_change(struct udev_device *dev) { char filename[UTIL_PATH_SIZE]; + int r; log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); write_string_file(filename, "change"); + + /* for disks devices, re-trigger all partitions too */ + if (streq_ptr("block", udev_device_get_subsystem(dev)) && + streq_ptr("disk", udev_device_get_devtype(dev))) { + struct udev *udev = udev_device_get_udev(dev); + _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; + struct udev_list_entry *item; + + e = udev_enumerate_new(udev); + if (!e) + return -ENOMEM; + + r = udev_enumerate_add_match_parent(e, dev); + if (r < 0) + return r; + + r = udev_enumerate_add_match_subsystem(e, "block"); + if (r < 0) + return r; + + r = udev_enumerate_scan_devices(e); + udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) { + _cleanup_udev_device_unref_ struct udev_device *d = NULL; + + d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); + if (!d) + continue; + + if (!streq_ptr("partition", udev_device_get_devtype(d))) + continue; + + log_debug("device %s closed, synthesising partition '%s' 'change'", + udev_device_get_devnode(dev), udev_device_get_devnode(d)); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(d), "/uevent", NULL); + write_string_file(filename, "change"); + } + } + + return 0; } -/* read inotify messages */ static int handle_inotify(struct udev *udev) { int nbytes, pos; ++++++ 1028-udev-link-config-fix-mem-leak.patch ++++++
From edf029b7fd9a5853a87d3ca99aac2922bb8a277e Mon Sep 17 00:00:00 2001 From: Tom Gundersen <teg@jklm.no> Date: Wed, 4 Jun 2014 12:34:23 +0200 Subject: [PATCH] udev: link-config - fix mem leak
Reported by Kay. Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/net/link-config.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) Index: systemd-210/src/udev/net/link-config.c =================================================================== --- systemd-210.orig/src/udev/net/link-config.c +++ systemd-210/src/udev/net/link-config.c @@ -118,6 +118,7 @@ static void link_configs_free(link_confi free(link->match_type); free(link->description); free(link->alias); + free(link->name_policy); free(link); } @@ -205,7 +206,8 @@ static bool enable_name_policy(void) { int link_config_load(link_config_ctx *ctx) { int r; - char **files, **f; + _cleanup_strv_free_ char **files; + char **f; link_configs_free(ctx); ++++++ 1029-udev-try-first-re-reading-the-partition-table.patch ++++++
From ede344452a54e1c53f541cad12a06269a4fe96a9 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 13:30:24 +0200 Subject: [PATCH] udev: try first re-reading the partition table
mounted partitions: # dd if=/dev/zero of=/dev/sda bs=1 count=1 UDEV [4157.369250] change .../0:0:0:0/block/sda (block) UDEV [4157.375059] change .../0:0:0:0/block/sda/sda1 (block) UDEV [4157.397088] change .../0:0:0:0/block/sda/sda2 (block) UDEV [4157.404842] change .../0:0:0:0/block/sda/sda4 (block) unmounted partitions: # dd if=/dev/zero of=/dev/sdb bs=1 count=1 UDEV [4163.450217] remove .../target6:0:0/6:0:0:0/block/sdb/sdb1 (block) UDEV [4163.593167] change .../target6:0:0/6:0:0:0/block/sdb (block) UDEV [4163.713982] add .../target6:0:0/6:0:0:0/block/sdb/sdb1 (block) Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -38,6 +38,7 @@ #include <sys/un.h> #include <sys/signalfd.h> #include <sys/epoll.h> +#include <sys/mount.h> #include <sys/poll.h> #include <sys/wait.h> #include <sys/stat.h> @@ -741,17 +742,37 @@ static int synthesize_change(struct udev char filename[UTIL_PATH_SIZE]; int r; - log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); - strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); - write_string_file(filename, "change"); - - /* for disks devices, re-trigger all partitions too */ if (streq_ptr("block", udev_device_get_subsystem(dev)) && - streq_ptr("disk", udev_device_get_devtype(dev))) { + streq_ptr("disk", udev_device_get_devtype(dev)) && + !startswith("dm-", udev_device_get_sysname(dev))) { + int fd; struct udev *udev = udev_device_get_udev(dev); _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; struct udev_list_entry *item; + /* + * Try to re-read the partition table, this only succeeds if + * none of the devices is busy. + * + * The kernel will send out a change event for the disk, and + * "remove/add" for all partitions. + */ + fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); + if (fd >= 0) { + r = ioctl(fd, BLKRRPART, 0); + close(fd); + if (r >= 0) + return 0; + } + + /* + * Re-reading the partition table did not work, synthesize "change" + * events for the disk and all partitions. + */ + log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); + write_string_file(filename, "change"); + e = udev_enumerate_new(udev); if (!e) return -ENOMEM; @@ -780,8 +801,14 @@ static int synthesize_change(struct udev strscpyl(filename, sizeof(filename), udev_device_get_syspath(d), "/uevent", NULL); write_string_file(filename, "change"); } + + return 0; } + log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); + write_string_file(filename, "change"); + return 0; } ++++++ 1030-udev-guard-REREADP-logic-with-open-O_ECXL.patch ++++++
From 10fab50a3091e0b819c3ddab5a7c07acf750c050 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 14:09:31 +0200 Subject: [PATCH] udev: guard REREADP logic with open(O_ECXL)
Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -757,7 +757,7 @@ static int synthesize_change(struct udev * The kernel will send out a change event for the disk, and * "remove/add" for all partitions. */ - fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); + fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); if (fd >= 0) { r = ioctl(fd, BLKRRPART, 0); close(fd); ++++++ 1031-udev-make-sure-we-always-get-change-for-the-disk.patch ++++++
From e9fc29f4ecc9509ccc02eb8a014341e26c0d7831 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 15:17:15 +0200 Subject: [PATCH] udev: make sure we always get "change" for the disk
The kernel will return 0 for REREADPT when no partition table is found, we have to send out "change" ourselves. Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 53 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 14 deletions(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -745,34 +745,28 @@ static int synthesize_change(struct udev if (streq_ptr("block", udev_device_get_subsystem(dev)) && streq_ptr("disk", udev_device_get_devtype(dev)) && !startswith("dm-", udev_device_get_sysname(dev))) { + bool part_table_read = false; + bool has_partitions = false; int fd; struct udev *udev = udev_device_get_udev(dev); _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL; struct udev_list_entry *item; /* - * Try to re-read the partition table, this only succeeds if - * none of the devices is busy. - * - * The kernel will send out a change event for the disk, and - * "remove/add" for all partitions. + * Try to re-read the partition table. This only succeeds if + * none of the devices is busy. The kernel returns 0 if no + * partition table is found, and we will not get an event for + * the disk. */ fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); if (fd >= 0) { r = ioctl(fd, BLKRRPART, 0); close(fd); if (r >= 0) - return 0; + part_table_read = true; } - /* - * Re-reading the partition table did not work, synthesize "change" - * events for the disk and all partitions. - */ - log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); - strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); - write_string_file(filename, "change"); - + /* search for partitions */ e = udev_enumerate_new(udev); if (!e) return -ENOMEM; @@ -786,6 +780,37 @@ static int synthesize_change(struct udev return r; r = udev_enumerate_scan_devices(e); + + udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) { + _cleanup_udev_device_unref_ struct udev_device *d = NULL; + + d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); + if (!d) + continue; + + if (!streq_ptr("partition", udev_device_get_devtype(d))) + continue; + + has_partitions = true; + break; + } + + /* + * We have partitions and re-read the table, the kernel already sent + * out a "change" event for the disk, and "remove/add" for all + * partitions. + */ + if (part_table_read && has_partitions) + return 0; + + /* + * We have partitions but re-reading the partition table did not + * work, synthesize "change" for the disk and all partitions. + */ + log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev)); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); + write_string_file(filename, "change"); + udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) { _cleanup_udev_device_unref_ struct udev_device *d = NULL; ++++++ 1032-udev-guard-REREADPT-by-exclusive-lock-instead-of-O_E.patch ++++++
From 02ba8fb3357daf57f6120ac512fb464a4c623419 Mon Sep 17 00:00:00 2001 From: Kay Sievers <kay@vrfy.org> Date: Wed, 4 Jun 2014 16:21:19 +0200 Subject: [PATCH] udev: guard REREADPT by exclusive lock instead of O_EXCL
Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -758,9 +758,12 @@ static int synthesize_change(struct udev * partition table is found, and we will not get an event for * the disk. */ - fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); + fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); if (fd >= 0) { - r = ioctl(fd, BLKRRPART, 0); + r = flock(fd, LOCK_EX|LOCK_NB); + if (r >= 0) + r = ioctl(fd, BLKRRPART, 0); + close(fd); if (r >= 0) part_table_read = true; ++++++ 1033-udev-really-exclude-device-mapper-from-block-device.patch ++++++
From 638ca89c53e2b897cfb3f627f4acbc7d09af2f4c Mon Sep 17 00:00:00 2001 From: Christian Hesse <mail@eworm.de> Date: Tue, 10 Jun 2014 15:51:15 +0200 Subject: [PATCH] udev: really exclude device-mapper from block device ownership event locking
Arguments were wrong order, no? This fixes commits: e918a1b5a94f270186dca59156354acd2a596494 3d06f4183470d42361303086ed9dedd29c0ffc1b Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -304,7 +304,7 @@ static void worker_new(struct event *eve * <kabi_> IMHO this sounds like a good plan for this moment */ if (streq_ptr("block", udev_device_get_subsystem(dev)) && - !startswith("dm-", udev_device_get_sysname(dev))) { + !startswith(udev_device_get_sysname(dev), "dm-")) { struct udev_device *d = dev; if (streq_ptr("partition", udev_device_get_devtype(d))) @@ -744,7 +744,7 @@ static int synthesize_change(struct udev if (streq_ptr("block", udev_device_get_subsystem(dev)) && streq_ptr("disk", udev_device_get_devtype(dev)) && - !startswith("dm-", udev_device_get_sysname(dev))) { + !startswith(udev_device_get_sysname(dev), "dm-")) { bool part_table_read = false; bool has_partitions = false; int fd; ++++++ 1034-udev-check-the-return-value-from-udev_enumerate_scan.patch ++++++
From 47a3fa0f7679521b85f7aeba9e245c52cc7bb2cb Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com> Date: Wed, 4 Jun 2014 23:40:43 +0200 Subject: [PATCH] udev: check the return value from udev_enumerate_scan_devices
The return value from udev_enumerate_scan_devices was stored but never used. I assume this was meant to be checked. Signed-off-by: Robert Milasan <rmilasan@suse.com> --- src/udev/udevd.c | 2 ++ 1 file changed, 2 insertions(+) Index: systemd-210/src/udev/udevd.c =================================================================== --- systemd-210.orig/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c @@ -783,6 +783,8 @@ static int synthesize_change(struct udev return r; r = udev_enumerate_scan_devices(e); + if (r < 0) + return r; udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) { _cleanup_udev_device_unref_ struct udev_device *d = NULL; ++++++ 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch ++++++
From c9af1be90db5a29ac86605c67bc2bb4bc5780520 Mon Sep 17 00:00:00 2001 From: Hannes Reinecke <hare@suse.de> Date: Thu, 12 Jun 2014 12:25:03 +0200 Subject: [PATCH] 99-systemd.rules: Ignore devices with 'SYSTEMD_READY=0'
Whenever a rule sets 'SYSTEMD_READY=0' it tries to indicate that systemd should ignore this device. So we should not set the 'systemd' tag in these cases; otherwise systemd will pick up the device. References: bnc#881942 Signed-off-by: Hannes Reinecke <hare@suse.de> --- rules/99-systemd.rules.in | 1 + 1 file changed, 1 insertion(+) diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in index db72373..11ee262 100644 --- a/rules/99-systemd.rules.in +++ b/rules/99-systemd.rules.in @@ -11,6 +11,7 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270 KERNEL=="vport*", TAG+="systemd" +SUBSYSTEM=="block", KERNEL!="ram*", ENV{SYSTEMD_READY}=="0", GOTO="systemd_end" SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd" SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" -- 1.8.4.5 ++++++ 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch ++++++ Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules =================================================================== --- systemd-210.orig/src/udev/rule_generator/75-persistent-net-generator.rules +++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules @@ -68,7 +68,8 @@ ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="glob ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist" # match interface dev_id -ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}" +# disable due to bnc#882714 +# ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}" # do not use "locally administered" MAC address ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}="" ++++++ 1037-udev-exclude-cd-dvd-from-block-device.patch ++++++ Exclude cd/dvd as well (bnc#882714) --- systemd-210/src/udev/udevd.c +++ systemd-210/src/udev/udevd.c 2014-06-18 12:53:34.454235577 +0000 @@ -744,7 +744,8 @@ static int synthesize_change(struct udev if (streq_ptr("block", udev_device_get_subsystem(dev)) && streq_ptr("disk", udev_device_get_devtype(dev)) && - !startswith(udev_device_get_sysname(dev), "dm-")) { + !startswith(udev_device_get_sysname(dev), "dm-") && + !startswith(udev_device_get_sysname(dev), "sr")) { bool part_table_read = false; bool has_partitions = false; int fd; ++++++ 1038-udev-fix-invalid-free-in-enable_name_policy.patch ++++++
From f8a0bb5285024b6ce372c3157e761e6543ebdcd2 Mon Sep 17 00:00:00 2001 From: Andreas Henriksson <andreas@fatal.se> Date: Fri, 13 Jun 2014 18:48:21 +0200 Subject: [PATCH] udev: fix invalid free() in enable_name_policy()
static bool enable_name_policy(...) in ./src/udev/net/link-config.c calls proc_cmdline(...) to get "line" initialized, but proc_cmdline(...) does not guarantee that atleast when both conditions (detect_container(NULL) > 0) and read_full_file(...) returned < 0. --- src/udev/net/link-config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/udev/net/link-config.c src/udev/net/link-config.c index a9acc3d..7a9d01b 100644 --- src/udev/net/link-config.c +++ src/udev/net/link-config.c @@ -185,7 +185,7 @@ static int load_link(link_config_ctx *ctx, const char *filename) { } static bool enable_name_policy(void) { - _cleanup_free_ char *line; + _cleanup_free_ char *line = NULL; char *w, *state; int r; size_t l; -- 1.7.9.2 ++++++ 1039-udevadm-settle-fixed-return-code-for-empty-queue.patch ++++++
From 83be2c398589a3d64db5999cfd5527c5219bff46 Mon Sep 17 00:00:00 2001 From: Harald Hoyer <harald@redhat.com> Date: Tue, 20 May 2014 12:25:16 +0200 Subject: [PATCH] udevadm-settle: fixed return code for empty queue
If the udev queue is empty and "/run/udev/queue" does not exist, "udevadm settle" would return with EXIT_FAILURE, because the inotify on "/run/udev/queue" would fail with ENOENT. This patch lets "udevadm settle" exit with EXIT_SUCCESS in this case. --- src/udev/udevadm-settle.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git src/udev/udevadm-settle.c src/udev/udevadm-settle.c index 65fc35f..66fd843 100644 --- src/udev/udevadm-settle.c +++ src/udev/udevadm-settle.c @@ -116,7 +116,11 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) } if (inotify_add_watch(pfd[0].fd, "/run/udev/queue" , IN_DELETE) < 0) { - log_debug("watching /run/udev failed"); + /* If it does not exist, we don't have to wait */ + if (errno == ENOENT) + rc = EXIT_SUCCESS; + else + log_debug("watching /run/udev/queue failed"); goto out; } -- 1.7.9.2 ++++++ 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch ++++++ Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules =================================================================== --- systemd-210.orig/src/udev/rule_generator/75-persistent-net-generator.rules +++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules @@ -68,8 +68,9 @@ ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="glob ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist" # match interface dev_id -# disable due to bnc#882714 -# ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}" +# HACK: for s390x, if layer2 == 0, dont use dev_id +ENV{LAYER2}="1", TEST=="device/layer2", ENV{LAYER2}="$attr{device/layer2}" +ENV{LAYER2}!="0", ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}" # do not use "locally administered" MAC address ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}="" ++++++ apply-ACL-for-nvidia-uvm-device-node.patch ++++++
From c79437b7967cf5a23faa881bc5da6b88b63a1ada Mon Sep 17 00:00:00 2001 From: Stefan Dirsch <sndirsch@suse.de> Date: Tue, 3 Jun 2014 15:05:55 +0200 Subject: [PATCH] apply ACL for nvidia-uvm device node
set ACL on nvidia-uvm device (bnc#879767). --- src/login/logind-acl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c index 54bc16b..a40af21 100644 --- a/src/login/logind-acl.c +++ b/src/login/logind-acl.c @@ -295,6 +295,8 @@ int devnode_acl_all(struct udev *udev, if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0) break; } + /* required for additional CUDA support (nvidia-uvm module with appropriate device), bnc#879767 */ + devnode_acl("/dev/nvidia-uvm", flush, del, old_uid, add, new_uid); } return r; -- 1.8.4.5 ++++++ ensure-ask-password-wall-starts-after-getty-tty1.patch ++++++ --- /var/tmp/diff_new_pack.FvWgYO/_old 2014-06-30 21:43:36.000000000 +0200 +++ /var/tmp/diff_new_pack.FvWgYO/_new 2014-06-30 21:43:36.000000000 +0200 @@ -1,20 +1,23 @@ From: Frederic Crozat <fcrozat@suse.com> +Cc: Werner Fink <werner@suse.de> Date: Wed, 24 Aug 2011 13:02:12 +0000 Subject: ensure ask-password-wall starts after getty@tty1 ensure passphrase is handled before starting getty on tty1. + --- - units/systemd-ask-password-wall.service.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + units/systemd-ask-password-wall.service.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) --- systemd-206_git201308300826.orig/units/systemd-ask-password-wall.service.in +++ systemd-206_git201308300826/units/systemd-ask-password-wall.service.in -@@ -8,7 +8,7 @@ +@@ -8,7 +8,8 @@ [Unit] Description=Forward Password Requests to Wall Documentation=man:systemd-ask-password-console.service(8) -After=systemd-user-sessions.service -+After=systemd-user-sessions.service getty@tty1.service ++Wants=getty.target ++After=systemd-user-sessions.service getty.target [Service] ExecStartPre=-@SYSTEMCTL@ stop systemd-ask-password-console.path systemd-ask-password-console.service systemd-ask-password-plymouth.path systemd-ask-password-plymouth.service ++++++ insserv-generator.patch ++++++ --- /var/tmp/diff_new_pack.FvWgYO/_old 2014-06-30 21:43:36.000000000 +0200 +++ /var/tmp/diff_new_pack.FvWgYO/_new 2014-06-30 21:43:36.000000000 +0200 @@ -13,11 +13,11 @@ create mode 100644 src/insserv-generator/Makefile create mode 100644 src/insserv-generator/insserv-generator.c -Index: systemd-208/Makefile.am +Index: systemd-210/Makefile.am =================================================================== ---- systemd-208.orig/Makefile.am -+++ systemd-208/Makefile.am -@@ -322,6 +322,7 @@ rootlibexec_PROGRAMS = \ +--- systemd-210.orig/Makefile.am ++++ systemd-210/Makefile.am +@@ -343,6 +343,7 @@ rootlibexec_PROGRAMS = \ systemd-socket-proxyd systemgenerator_PROGRAMS = \ @@ -25,7 +25,7 @@ systemd-getty-generator \ systemd-fstab-generator \ systemd-system-update-generator -@@ -1658,6 +1659,14 @@ systemd_delta_LDADD = \ +@@ -1728,6 +1729,14 @@ systemd_delta_LDADD = \ libsystemd-shared.la # ------------------------------------------------------------------------------ @@ -40,10 +40,10 @@ systemd_getty_generator_SOURCES = \ src/getty-generator/getty-generator.c -Index: systemd-208/src/insserv-generator/Makefile +Index: systemd-210/src/insserv-generator/Makefile =================================================================== --- /dev/null -+++ systemd-208/src/insserv-generator/Makefile ++++ systemd-210/src/insserv-generator/Makefile @@ -0,0 +1,28 @@ +# This file is part of systemd. +# @@ -73,10 +73,10 @@ + $(MAKE) -C .. clean + +.PHONY: all clean -Index: systemd-208/src/insserv-generator/insserv-generator.c +Index: systemd-210/src/insserv-generator/insserv-generator.c =================================================================== --- /dev/null -+++ systemd-208/src/insserv-generator/insserv-generator.c ++++ systemd-210/src/insserv-generator/insserv-generator.c @@ -0,0 +1,312 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + @@ -146,7 +146,7 @@ + static const char * const table[] = { + /* LSB defined facilities */ + "local_fs", NULL, -+ "network", SPECIAL_NETWORK_TARGET, ++ "network", SPECIAL_NETWORK_ONLINE_TARGET, + "named", SPECIAL_NSS_LOOKUP_TARGET, + "portmap", SPECIAL_RPCBIND_TARGET, + "remote_fs", SPECIAL_REMOTE_FS_TARGET, ++++++ keep-crypt-password-prompt.patch ++++++ --- /var/tmp/diff_new_pack.FvWgYO/_old 2014-06-30 21:43:36.000000000 +0200 +++ /var/tmp/diff_new_pack.FvWgYO/_new 2014-06-30 21:43:36.000000000 +0200 @@ -9,10 +9,10 @@ + struct dirent *de; + + if (!(d = opendir("/run/systemd/ask-password"))) { -+ log_error("opendir(): %m"); + + if (errno == ENOENT) + return 1; ++ log_error("opendir(/run/systemd/ask-password): %m"); + + return -errno; + } ++++++ tmpfiles-do-not-clean-for-mandb-index-files.patch ++++++ There is no need to clean out all 30 days the index data base files nor the cachedir tags of mandb. Those files are used for whatis(1) as well as for apropos(1). --- systemd-210/tmpfiles.d/systemd.conf | 5 +++++ 1 file changed, 5 insertions(+) --- systemd-210/tmpfiles.d/systemd.conf +++ systemd-210/tmpfiles.d/systemd.conf 2014-06-11 13:47:59.470236564 +0000 @@ -14,6 +14,11 @@ f /var/log/wtmp 0664 root utmp - f /var/log/btmp 0600 root root - d /var/cache/man - - - 30d +# mandb uses data base file which should not be cleared +x /var/cache/man/index.* +x /var/cache/man/CACHEDIR.TAG +x /var/cache/man/*/index.* +x /var/cache/man/*/CACHEDIR.TAG d /run/systemd/ask-password 0755 root root - d /run/systemd/seats 0755 root root - -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org