Hello community,

here is the log from the commit of package systemd for openSUSE:Factory checked 
in at 2020-06-11 14:37:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/systemd (Old)
 and      /work/SRC/openSUSE:Factory/.systemd.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "systemd"

Thu Jun 11 14:37:13 2020 rev:310 rq:809898 version:245

Changes:
--------
--- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes     2020-04-29 
20:42:28.107656112 +0200
+++ /work/SRC/openSUSE:Factory/.systemd.new.3606/systemd-mini.changes   
2020-06-11 14:37:18.644021667 +0200
@@ -1,0 +2,19 @@
+Thu May 28 09:30:33 UTC 2020 - Franck Bui <f...@suse.com>
+
+- Import commit a6d31d1a02c2718a064bbbc40d003668acf72769
+
+  bb6e2f7906 pid1: update manager settings on reload too (bsc#1163109)
+  e9e8907b06 watchdog: reduce watchdog pings in timeout interval
+  385a8f9846 udev: rename the persistent link for ATA devices (bsc#1164538)
+  66018a12ae tmpfiles: remove unnecessary assert (bsc#1171145)
+
+-------------------------------------------------------------------
+Mon May 25 08:47:22 UTC 2020 - Franck Bui <f...@suse.com>
+
+- Disable bump of /proc/sys/fs/nr-open
+
+  Hopefully a _temporary_ workaround until bsc#1165351 is fixed
+  otherwise user instances crashes the system is using NIS (and the
+  nscd cache is empty).
+
+-------------------------------------------------------------------
systemd.changes: same change

Old:
----
  systemd-v245+suse.117.g08cd65ac38.tar.xz

New:
----
  systemd-v245+suse.122.ga6d31d1a02.tar.xz

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

Other differences:
------------------
++++++ systemd-mini.spec ++++++
--- /var/tmp/diff_new_pack.FW4eGj/_old  2020-06-11 14:37:21.116028855 +0200
+++ /var/tmp/diff_new_pack.FW4eGj/_new  2020-06-11 14:37:21.120028867 +0200
@@ -26,7 +26,7 @@
 ##### WARNING: please do not edit this auto generated spec file. Use the 
systemd.spec! #####
 %define mini -mini
 %define min_kernel_version 4.5
-%define suse_version +suse.117.g08cd65ac38
+%define suse_version +suse.122.ga6d31d1a02
 
 %bcond_with     gnuefi
 %if 0%{?bootstrap}
@@ -506,6 +506,7 @@
         -Ddefault-kill-user-processes=false \
         -Dntp-servers="${ntp_servers[*]}" \
         -Drc-local=/etc/init.d/boot.local \
+        -Dbump-proc-sys-fs-nr-open=false \
         -Ddebug-shell=/bin/bash \
         -Dseccomp=auto \
         -Dselinux=auto \

++++++ systemd.spec ++++++
--- /var/tmp/diff_new_pack.FW4eGj/_old  2020-06-11 14:37:21.144028937 +0200
+++ /var/tmp/diff_new_pack.FW4eGj/_new  2020-06-11 14:37:21.144028937 +0200
@@ -24,7 +24,7 @@
 %define bootstrap 0
 %define mini %nil
 %define min_kernel_version 4.5
-%define suse_version +suse.117.g08cd65ac38
+%define suse_version +suse.122.ga6d31d1a02
 
 %bcond_with     gnuefi
 %if 0%{?bootstrap}
@@ -504,6 +504,7 @@
         -Ddefault-kill-user-processes=false \
         -Dntp-servers="${ntp_servers[*]}" \
         -Drc-local=/etc/init.d/boot.local \
+        -Dbump-proc-sys-fs-nr-open=false \
         -Ddebug-shell=/bin/bash \
         -Dseccomp=auto \
         -Dselinux=auto \

++++++ systemd-mini-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.FW4eGj/_old  2020-06-11 14:37:21.236029205 +0200
+++ /var/tmp/diff_new_pack.FW4eGj/_new  2020-06-11 14:37:21.236029205 +0200
@@ -29,3 +29,4 @@
 addFilter(".*systemd-service-without-service.*")
 addFilter(".*shlib-policy-missing-suffix.*")
 addFilter(".*suse-missing-rclink.*")
+addFilter("env-script-interpreter")

++++++ systemd-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.FW4eGj/_old  2020-06-11 14:37:21.256029263 +0200
+++ /var/tmp/diff_new_pack.FW4eGj/_new  2020-06-11 14:37:21.256029263 +0200
@@ -29,3 +29,4 @@
 addFilter(".*systemd-service-without-service.*")
 addFilter(".*shlib-policy-missing-suffix.*")
 addFilter(".*suse-missing-rclink.*")
+addFilter("env-script-interpreter")

++++++ systemd-v245+suse.117.g08cd65ac38.tar.xz -> 
systemd-v245+suse.122.ga6d31d1a02.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/systemd-v245+suse.117.g08cd65ac38/rules.d/60-persistent-storage.rules 
new/systemd-v245+suse.122.ga6d31d1a02/rules.d/60-persistent-storage.rules
--- old/systemd-v245+suse.117.g08cd65ac38/rules.d/60-persistent-storage.rules   
2020-04-23 16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/rules.d/60-persistent-storage.rules   
2020-05-28 11:28:31.000000000 +0200
@@ -93,6 +93,9 @@
 KERNEL=="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", 
SYMLINK+="disk/by-path/$env{ID_PATH}-boot%n"
 KERNEL!="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", 
SYMLINK+="disk/by-path/$env{ID_PATH}"
 ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", 
SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
+# compatible links for ATA devices
+KERNEL!="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", 
ENV{ID_PATH_ATA_COMPAT}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH_ATA_COMPAT}"
+ENV{DEVTYPE}=="partition", ENV{ID_PATH_ATA_COMPAT}=="?*", 
SYMLINK+="disk/by-path/$env{ID_PATH_ATA_COMPAT}-part%n"
 
 # legacy virtio-pci by-path links (deprecated)
 KERNEL=="vd*[!0-9]", ENV{ID_PATH}=="pci-*", 
SYMLINK+="disk/by-path/virtio-$env{ID_PATH}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/systemd-v245+suse.117.g08cd65ac38/src/core/dbus-manager.c 
new/systemd-v245+suse.122.ga6d31d1a02/src/core/dbus-manager.c
--- old/systemd-v245+suse.117.g08cd65ac38/src/core/dbus-manager.c       
2020-04-23 16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/core/dbus-manager.c       
2020-05-28 11:28:31.000000000 +0200
@@ -266,28 +266,116 @@
         return sd_bus_message_append_basic(reply, 'b', &b);
 }
 
-static int property_set_runtime_watchdog(
+static int property_get_runtime_watchdog(
                 sd_bus *bus,
                 const char *path,
                 const char *interface,
                 const char *property,
-                sd_bus_message *value,
+                sd_bus_message *reply,
                 void *userdata,
                 sd_bus_error *error) {
 
-        usec_t *t = userdata;
-        int r;
+        Manager *m = userdata;
+
+        assert(m);
+        assert(bus);
+        assert(reply);
+
+        return sd_bus_message_append(reply, "t", manager_get_watchdog(m, 
WATCHDOG_RUNTIME));
+}
+
+static int property_get_reboot_watchdog(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *reply,
+                void *userdata,
+                sd_bus_error *error) {
+
+        Manager *m = userdata;
+
+        assert(m);
+        assert(bus);
+        assert(reply);
 
+        return sd_bus_message_append(reply, "t", manager_get_watchdog(m, 
WATCHDOG_REBOOT));
+}
+
+static int property_get_kexec_watchdog(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *reply,
+                void *userdata,
+                sd_bus_error *error) {
+
+        Manager *m = userdata;
+
+        assert(m);
         assert(bus);
+        assert(reply);
+
+        return sd_bus_message_append(reply, "t", manager_get_watchdog(m, 
WATCHDOG_KEXEC));
+}
+
+static int property_set_watchdog(Manager *m, WatchdogType type, sd_bus_message 
*value) {
+        usec_t timeout;
+        int r;
+
+        assert(m);
         assert(value);
 
         assert_cc(sizeof(usec_t) == sizeof(uint64_t));
 
-        r = sd_bus_message_read(value, "t", t);
+        r = sd_bus_message_read(value, "t", &timeout);
         if (r < 0)
                 return r;
 
-        return watchdog_set_timeout(t);
+        return manager_set_watchdog_overridden(m, type, timeout);
+}
+
+static int property_set_runtime_watchdog(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *value,
+                void *userdata,
+                sd_bus_error *error) {
+
+        return property_set_watchdog(userdata, WATCHDOG_RUNTIME, value);
+}
+
+static int property_set_reboot_watchdog(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *value,
+                void *userdata,
+                sd_bus_error *error) {
+
+        return property_set_watchdog(userdata, WATCHDOG_REBOOT, value);
+}
+
+static int property_set_kexec_watchdog(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *value,
+                void *userdata,
+                sd_bus_error *error) {
+
+        Manager *m = userdata;
+
+        assert(m);
+        assert(bus);
+        assert(value);
+
+        return property_set_watchdog(userdata, WATCHDOG_KEXEC, value);
 }
 
 static int bus_get_unit_by_name(Manager *m, sd_bus_message *message, const 
char *name, Unit **ret_unit, sd_bus_error *error) {
@@ -2418,11 +2506,11 @@
         SD_BUS_PROPERTY("UnitPath", "as", NULL, offsetof(Manager, 
lookup_paths.search_path), SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("DefaultStandardOutput", "s", 
bus_property_get_exec_output, offsetof(Manager, default_std_output), 
SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("DefaultStandardError", "s", 
bus_property_get_exec_output, offsetof(Manager, default_std_output), 
SD_BUS_VTABLE_PROPERTY_CONST),
-        SD_BUS_WRITABLE_PROPERTY("RuntimeWatchdogUSec", "t", 
bus_property_get_usec, property_set_runtime_watchdog, offsetof(Manager, 
runtime_watchdog), 0),
-        SD_BUS_WRITABLE_PROPERTY("RebootWatchdogUSec", "t", 
bus_property_get_usec, bus_property_set_usec, offsetof(Manager, 
reboot_watchdog), 0),
+        SD_BUS_WRITABLE_PROPERTY("RuntimeWatchdogUSec", "t", 
property_get_runtime_watchdog, property_set_runtime_watchdog, 0, 0),
+        SD_BUS_WRITABLE_PROPERTY("RebootWatchdogUSec", "t", 
property_get_reboot_watchdog, property_set_reboot_watchdog, 0, 0),
         /* The following item is an obsolete alias */
-        SD_BUS_WRITABLE_PROPERTY("ShutdownWatchdogUSec", "t", 
bus_property_get_usec, bus_property_set_usec, offsetof(Manager, 
reboot_watchdog), SD_BUS_VTABLE_HIDDEN),
-        SD_BUS_WRITABLE_PROPERTY("KExecWatchdogUSec", "t", 
bus_property_get_usec, bus_property_set_usec, offsetof(Manager, 
kexec_watchdog), 0),
+        SD_BUS_WRITABLE_PROPERTY("ShutdownWatchdogUSec", "t", 
property_get_reboot_watchdog, property_set_reboot_watchdog, 0, 
SD_BUS_VTABLE_HIDDEN),
+        SD_BUS_WRITABLE_PROPERTY("KExecWatchdogUSec", "t", 
property_get_kexec_watchdog, property_set_kexec_watchdog, 0, 0),
         SD_BUS_WRITABLE_PROPERTY("ServiceWatchdogs", "b", 
bus_property_get_bool, bus_property_set_bool, offsetof(Manager, 
service_watchdogs), 0),
         SD_BUS_PROPERTY("ControlGroup", "s", NULL, offsetof(Manager, 
cgroup_root), 0),
         SD_BUS_PROPERTY("SystemState", "s", property_get_system_state, 0, 0),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-v245+suse.117.g08cd65ac38/src/core/main.c 
new/systemd-v245+suse.122.ga6d31d1a02/src/core/main.c
--- old/systemd-v245+suse.117.g08cd65ac38/src/core/main.c       2020-04-23 
16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/core/main.c       2020-05-28 
11:28:31.000000000 +0200
@@ -701,16 +701,18 @@
 
         assert(m);
 
-        /* Propagates the various manager settings into the manager object, 
i.e. properties that effect the manager
-         * itself (as opposed to just being inherited into newly allocated 
units, see set_manager_defaults() above). */
+        /* Propagates the various manager settings into the manager object, 
i.e. properties that
+         * effect the manager itself (as opposed to just being inherited into 
newly allocated
+         * units, see set_manager_defaults() above). */
 
         m->confirm_spawn = arg_confirm_spawn;
         m->service_watchdogs = arg_service_watchdogs;
-        m->runtime_watchdog = arg_runtime_watchdog;
-        m->reboot_watchdog = arg_reboot_watchdog;
-        m->kexec_watchdog = arg_kexec_watchdog;
         m->cad_burst_action = arg_cad_burst_action;
 
+        manager_set_watchdog(m, WATCHDOG_RUNTIME, arg_runtime_watchdog);
+        manager_set_watchdog(m, WATCHDOG_REBOOT, arg_reboot_watchdog);
+        manager_set_watchdog(m, WATCHDOG_KEXEC, arg_kexec_watchdog);
+
         manager_set_show_status(m, arg_show_status, "commandline");
         m->status_unit_format = arg_status_unit_format;
 }
@@ -1752,6 +1754,7 @@
                         (void) parse_configuration(saved_rlimit_nofile, 
saved_rlimit_memlock);
 
                         set_manager_defaults(m);
+                        set_manager_settings(m);
 
                         update_cpu_affinity(false);
                         update_numa_policy(false);
@@ -1942,9 +1945,6 @@
                         if (r < 0)
                                 log_warning_errno(r, "Failed to set watchdog 
device to %s, ignoring: %m", arg_watchdog_device);
                 }
-
-                if (timestamp_is_set(arg_runtime_watchdog))
-                        watchdog_set_timeout(&arg_runtime_watchdog);
         }
 
         if (arg_timer_slack_nsec != NSEC_INFINITY)
@@ -2215,6 +2215,10 @@
         /* Note that this also parses bits from the kernel command line, 
including "debug". */
         log_parse_environment();
 
+        /* Initialize the show status setting if it hasn't been set explicitly 
yet */
+        if (arg_show_status == _SHOW_STATUS_INVALID)
+                arg_show_status = SHOW_STATUS_YES;
+
         return 0;
 }
 
@@ -2238,10 +2242,6 @@
                 return r;
         }
 
-        /* Initialize the show status setting if it hasn't been set explicitly 
yet */
-        if (arg_show_status == _SHOW_STATUS_INVALID)
-                arg_show_status = SHOW_STATUS_YES;
-
         return 0;
 }
 
@@ -2714,8 +2714,8 @@
         pager_close();
 
         if (m) {
-                arg_reboot_watchdog = m->reboot_watchdog;
-                arg_kexec_watchdog = m->kexec_watchdog;
+                arg_reboot_watchdog = manager_get_watchdog(m, WATCHDOG_REBOOT);
+                arg_kexec_watchdog = manager_get_watchdog(m, WATCHDOG_KEXEC);
                 m = manager_free(m);
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-v245+suse.117.g08cd65ac38/src/core/manager.c 
new/systemd-v245+suse.122.ga6d31d1a02/src/core/manager.c
--- old/systemd-v245+suse.117.g08cd65ac38/src/core/manager.c    2020-04-23 
16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/core/manager.c    2020-05-28 
11:28:31.000000000 +0200
@@ -778,6 +778,10 @@
                 .original_log_level = -1,
                 .original_log_target = _LOG_TARGET_INVALID,
 
+                .watchdog_overridden[WATCHDOG_RUNTIME] = USEC_INFINITY,
+                .watchdog_overridden[WATCHDOG_REBOOT] = USEC_INFINITY,
+                .watchdog_overridden[WATCHDOG_KEXEC] = USEC_INFINITY,
+
                 .notify_fd = -1,
                 .cgroups_agent_fd = -1,
                 .signal_fd = -1,
@@ -2898,9 +2902,10 @@
                 return log_error_errno(r, "Failed to enable SIGCHLD event 
source: %m");
 
         while (m->objective == MANAGER_OK) {
-                usec_t wait_usec;
+                usec_t wait_usec, watchdog_usec;
 
-                if (timestamp_is_set(m->runtime_watchdog) && 
MANAGER_IS_SYSTEM(m))
+                watchdog_usec = manager_get_watchdog(m, WATCHDOG_RUNTIME);
+                if (timestamp_is_set(watchdog_usec))
                         watchdog_ping();
 
                 if (!ratelimit_below(&rl)) {
@@ -2930,12 +2935,10 @@
                 if (manager_dispatch_dbus_queue(m) > 0)
                         continue;
 
-                /* Sleep for half the watchdog time */
-                if (timestamp_is_set(m->runtime_watchdog) && 
MANAGER_IS_SYSTEM(m)) {
-                        wait_usec = m->runtime_watchdog / 2;
-                        if (wait_usec <= 0)
-                                wait_usec = 1;
-                } else
+                /* Sleep for watchdog runtime wait time */
+                if (timestamp_is_set(watchdog_usec))
+                        wait_usec = watchdog_runtime_wait();
+                else
                         wait_usec = USEC_INFINITY;
 
                 r = sd_event_run(m->event, wait_usec);
@@ -3176,6 +3179,10 @@
         if (m->log_target_overridden)
                 (void) serialize_item(f, "log-target-override", 
log_target_to_string(log_get_target()));
 
+        (void) serialize_usec(f, "runtime-watchdog-overridden", 
m->watchdog_overridden[WATCHDOG_RUNTIME]);
+        (void) serialize_usec(f, "reboot-watchdog-overridden", 
m->watchdog_overridden[WATCHDOG_REBOOT]);
+        (void) serialize_usec(f, "kexec-watchdog-overridden", 
m->watchdog_overridden[WATCHDOG_KEXEC]);
+
         for (q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
                 _cleanup_free_ char *joined = NULL;
 
@@ -3308,6 +3315,68 @@
         return 0;
 }
 
+usec_t manager_get_watchdog(Manager *m, WatchdogType t) {
+        assert(m);
+
+        if (MANAGER_IS_USER(m))
+                return USEC_INFINITY;
+
+        if (timestamp_is_set(m->watchdog_overridden[t]))
+                return m->watchdog_overridden[t];
+
+        return m->watchdog[t];
+}
+
+void manager_set_watchdog(Manager *m, WatchdogType t, usec_t timeout) {
+        int r = 0;
+
+        assert(m);
+
+        if (MANAGER_IS_USER(m))
+                return;
+
+        if (m->watchdog[t] == timeout)
+                return;
+
+        if (t == WATCHDOG_RUNTIME)
+                if 
(!timestamp_is_set(m->watchdog_overridden[WATCHDOG_RUNTIME])) {
+                        if (timestamp_is_set(timeout))
+                                r = watchdog_set_timeout(&timeout);
+                        else
+                                watchdog_close(true);
+                }
+
+        if (r >= 0)
+                m->watchdog[t] = timeout;
+}
+
+int manager_set_watchdog_overridden(Manager *m, WatchdogType t, usec_t 
timeout) {
+        int r = 0;
+
+        assert(m);
+
+        if (MANAGER_IS_USER(m))
+                return 0;
+
+        if (m->watchdog_overridden[t] == timeout)
+                return 0;
+
+        if (t == WATCHDOG_RUNTIME) {
+                usec_t *p;
+
+                p = timestamp_is_set(timeout) ? &timeout : &m->watchdog[t];
+                if (timestamp_is_set(*p))
+                        r = watchdog_set_timeout(p);
+                else
+                        watchdog_close(true);
+        }
+
+        if (r >= 0)
+                m->watchdog_overridden[t] = timeout;
+
+        return 0;
+}
+
 int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
         int r = 0;
 
@@ -3431,6 +3500,30 @@
                         else
                                 manager_override_log_target(m, target);
 
+                } else if ((val = startswith(l, 
"runtime-watchdog-overridden="))) {
+                        usec_t t;
+
+                        if (deserialize_usec(val, &t) < 0)
+                                log_notice("Failed to parse 
runtime-watchdog-overridden value '%s', ignoring.", val);
+                        else
+                                manager_set_watchdog_overridden(m, 
WATCHDOG_RUNTIME, t);
+
+                } else if ((val = startswith(l, 
"reboot-watchdog-overridden="))) {
+                        usec_t t;
+
+                        if (deserialize_usec(val, &t) < 0)
+                                log_notice("Failed to parse 
reboot-watchdog-overridden value '%s', ignoring.", val);
+                        else
+                                manager_set_watchdog_overridden(m, 
WATCHDOG_REBOOT, t);
+
+                } else if ((val = startswith(l, 
"kexec-watchdog-overridden="))) {
+                        usec_t t;
+
+                        if (deserialize_usec(val, &t) < 0)
+                                log_notice("Failed to parse 
kexec-watchdog-overridden value '%s', ignoring.", val);
+                        else
+                                manager_set_watchdog_overridden(m, 
WATCHDOG_KEXEC, t);
+
                 } else if (startswith(l, "env=")) {
                         r = deserialize_environment(l + 4, 
&m->client_environment);
                         if (r < 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/systemd-v245+suse.117.g08cd65ac38/src/core/manager.h 
new/systemd-v245+suse.122.ga6d31d1a02/src/core/manager.h
--- old/systemd-v245+suse.117.g08cd65ac38/src/core/manager.h    2020-04-23 
16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/core/manager.h    2020-05-28 
11:28:31.000000000 +0200
@@ -114,6 +114,13 @@
         _MANAGER_TIMESTAMP_INVALID = -1,
 } ManagerTimestamp;
 
+typedef enum WatchdogType {
+        WATCHDOG_RUNTIME,
+        WATCHDOG_REBOOT,
+        WATCHDOG_KEXEC,
+        _WATCHDOG_TYPE_MAX,
+} WatchdogType;
+
 #include "execute.h"
 #include "job.h"
 #include "path-lookup.h"
@@ -231,9 +238,8 @@
         char **transient_environment;  /* The environment, as determined from 
config files, kernel cmdline and environment generators */
         char **client_environment;     /* Environment variables created by 
clients through the bus API */
 
-        usec_t runtime_watchdog;
-        usec_t reboot_watchdog;
-        usec_t kexec_watchdog;
+        usec_t watchdog[_WATCHDOG_TYPE_MAX];
+        usec_t watchdog_overridden[_WATCHDOG_TYPE_MAX];
 
         dual_timestamp timestamps[_MANAGER_TIMESTAMP_MAX];
 
@@ -555,5 +561,9 @@
 ManagerTimestamp manager_timestamp_from_string(const char *s) _pure_;
 ManagerTimestamp manager_timestamp_initrd_mangle(ManagerTimestamp s);
 
+usec_t manager_get_watchdog(Manager *m, WatchdogType t);
+void manager_set_watchdog(Manager *m, WatchdogType t, usec_t timeout);
+int manager_set_watchdog_overridden(Manager *m, WatchdogType t, usec_t 
timeout);
+
 const char* oom_policy_to_string(OOMPolicy i) _const_;
 OOMPolicy oom_policy_from_string(const char *s) _pure_;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/systemd-v245+suse.117.g08cd65ac38/src/shared/watchdog.c 
new/systemd-v245+suse.122.ga6d31d1a02/src/shared/watchdog.c
--- old/systemd-v245+suse.117.g08cd65ac38/src/shared/watchdog.c 2020-04-23 
16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/shared/watchdog.c 2020-05-28 
11:28:31.000000000 +0200
@@ -16,6 +16,7 @@
 static int watchdog_fd = -1;
 static char *watchdog_device = NULL;
 static usec_t watchdog_timeout = USEC_INFINITY;
+static usec_t watchdog_last_ping = USEC_INFINITY;
 
 static int update_timeout(void) {
         int r;
@@ -57,6 +58,8 @@
                 r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0);
                 if (r < 0)
                         return log_warning_errno(errno, "Failed to ping 
hardware watchdog: %m");
+
+                watchdog_last_ping = now(clock_boottime_or_monotonic());
         }
 
         return 0;
@@ -114,9 +117,38 @@
         return r;
 }
 
+usec_t watchdog_runtime_wait(void) {
+        usec_t rtwait;
+        usec_t ntime;
+
+        if (!timestamp_is_set(watchdog_timeout))
+                return USEC_INFINITY;
+
+        /* Sleep half the watchdog timeout since the last succesful ping at 
most */
+        if (timestamp_is_set(watchdog_last_ping)) {
+                ntime = now(clock_boottime_or_monotonic());
+                assert(ntime >= watchdog_last_ping);
+                rtwait = usec_sub_unsigned(watchdog_last_ping + 
(watchdog_timeout / 2), ntime);
+        } else
+                rtwait = watchdog_timeout / 2;
+
+        return rtwait;
+}
+
 int watchdog_ping(void) {
+        usec_t ntime;
         int r;
 
+        ntime = now(clock_boottime_or_monotonic());
+
+        /* Never ping earlier than watchdog_timeout/4 and try to ping
+         * by watchdog_timeout/2 plus scheduling latencies the latest */
+        if (timestamp_is_set(watchdog_last_ping)) {
+                assert(ntime >= watchdog_last_ping);
+                if ((ntime - watchdog_last_ping) < (watchdog_timeout / 4))
+                        return 0;
+        }
+
         if (watchdog_fd < 0) {
                 r = open_watchdog();
                 if (r < 0)
@@ -127,6 +159,8 @@
         if (r < 0)
                 return log_warning_errno(errno, "Failed to ping hardware 
watchdog: %m");
 
+        watchdog_last_ping = ntime;
+
         return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/systemd-v245+suse.117.g08cd65ac38/src/shared/watchdog.h 
new/systemd-v245+suse.122.ga6d31d1a02/src/shared/watchdog.h
--- old/systemd-v245+suse.117.g08cd65ac38/src/shared/watchdog.h 2020-04-23 
16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/shared/watchdog.h 2020-05-28 
11:28:31.000000000 +0200
@@ -10,6 +10,7 @@
 int watchdog_set_timeout(usec_t *usec);
 int watchdog_ping(void);
 void watchdog_close(bool disarm);
+usec_t watchdog_runtime_wait(void);
 
 static inline void watchdog_free_device(void) {
         (void) watchdog_set_device(NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/systemd-v245+suse.117.g08cd65ac38/src/tmpfiles/tmpfiles.c 
new/systemd-v245+suse.122.ga6d31d1a02/src/tmpfiles/tmpfiles.c
--- old/systemd-v245+suse.117.g08cd65ac38/src/tmpfiles/tmpfiles.c       
2020-04-23 16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/tmpfiles/tmpfiles.c       
2020-05-28 11:28:31.000000000 +0200
@@ -2455,9 +2455,7 @@
 
         case SET_XATTR:
         case RECURSIVE_SET_XATTR:
-                assert(i->xattrs);
-
-                STRV_FOREACH (xattr, i->xattrs) {
+                STRV_FOREACH(xattr, i->xattrs) {
                         r = specifier_printf(*xattr, specifier_table, NULL, 
&resolved);
                         if (r < 0)
                                 return r;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/systemd-v245+suse.117.g08cd65ac38/src/udev/udev-builtin-path_id.c 
new/systemd-v245+suse.122.ga6d31d1a02/src/udev/udev-builtin-path_id.c
--- old/systemd-v245+suse.117.g08cd65ac38/src/udev/udev-builtin-path_id.c       
2020-04-23 16:14:35.000000000 +0200
+++ new/systemd-v245+suse.122.ga6d31d1a02/src/udev/udev-builtin-path_id.c       
2020-05-28 11:28:31.000000000 +0200
@@ -253,14 +253,20 @@
         return parent;
 }
 
-static sd_device *handle_scsi_ata(sd_device *parent, char **path) {
+static sd_device *handle_scsi_ata(sd_device *parent, char **path, char 
**compat_path) {
         sd_device *targetdev, *target_parent;
         _cleanup_(sd_device_unrefp) sd_device *atadev = NULL;
-        const char *port_no, *sysname;
+        const char *port_no, *sysname, *name;
+        unsigned host, bus, target, lun;
 
         assert(parent);
         assert(path);
 
+        if (sd_device_get_sysname(parent, &name) < 0)
+                return NULL;
+        if (sscanf(name, "%u:%u:%u:%u", &host, &bus, &target, &lun) != 4)
+                return NULL;
+
         if (sd_device_get_parent_with_subsystem_devtype(parent, "scsi", 
"scsi_host", &targetdev) < 0)
                 return NULL;
 
@@ -275,7 +281,17 @@
         if (sd_device_get_sysattr_value(atadev, "port_no", &port_no) < 0)
                 return NULL;
 
-        path_prepend(path, "ata-%s", port_no);
+        if (bus != 0)
+                /* Devices behind port multiplier have a bus != 0*/
+                path_prepend(path, "ata-%s.%u.0", port_no, bus);
+        else
+                /* Master/slave are distinguished by target id */
+                path_prepend(path, "ata-%s.%u", port_no, target);
+
+        /* old compatible persistent link for ATA devices */
+        if (compat_path)
+                path_prepend(compat_path, "ata-%s", port_no);
+
         return parent;
 }
 
@@ -392,7 +408,7 @@
         return parent;
 }
 
-static sd_device *handle_scsi(sd_device *parent, char **path, bool 
*supported_parent) {
+static sd_device *handle_scsi(sd_device *parent, char **path, char 
**compat_path, bool *supported_parent) {
         const char *devtype, *id, *name;
 
         if (sd_device_get_devtype(parent, &devtype) < 0 ||
@@ -426,7 +442,7 @@
         }
 
         if (strstr(name, "/ata"))
-                return handle_scsi_ata(parent, path);
+                return handle_scsi_ata(parent, path, compat_path);
 
         if (strstr(name, "/vmbus_"))
                 return handle_scsi_hyperv(parent, path, 37);
@@ -520,6 +536,7 @@
 static int builtin_path_id(sd_device *dev, int argc, char *argv[], bool test) {
         sd_device *parent;
         _cleanup_free_ char *path = NULL;
+        _cleanup_free_ char *compat_path = NULL;
         bool supported_transport = false;
         bool supported_parent = false;
         const char *subsystem;
@@ -537,7 +554,7 @@
                 } else if (streq(subsys, "scsi_tape")) {
                         handle_scsi_tape(parent, &path);
                 } else if (streq(subsys, "scsi")) {
-                        parent = handle_scsi(parent, &path, &supported_parent);
+                        parent = handle_scsi(parent, &path, &compat_path, 
&supported_parent);
                         supported_transport = true;
                 } else if (streq(subsys, "cciss")) {
                         parent = handle_cciss(parent, &path);
@@ -557,19 +574,27 @@
                         }
                 } else if (streq(subsys, "pci")) {
                         path_prepend(&path, "pci-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "pci-%s", sysname);
                         parent = skip_subsystem(parent, "pci");
                         supported_parent = true;
                 } else if (streq(subsys, "platform")) {
                         path_prepend(&path, "platform-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "platform-%s", 
sysname);
                         parent = skip_subsystem(parent, "platform");
                         supported_transport = true;
                         supported_parent = true;
                 } else if (streq(subsys, "acpi")) {
                         path_prepend(&path, "acpi-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "acpi-%s", sysname);
                         parent = skip_subsystem(parent, "acpi");
                         supported_parent = true;
                 } else if (streq(subsys, "xen")) {
                         path_prepend(&path, "xen-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "xen-%s", sysname);
                         parent = skip_subsystem(parent, "xen");
                         supported_parent = true;
                 } else if (streq(subsys, "virtio")) {
@@ -577,16 +602,22 @@
                         supported_transport = true;
                 } else if (streq(subsys, "scm")) {
                         path_prepend(&path, "scm-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "scm-%s", sysname);
                         parent = skip_subsystem(parent, "scm");
                         supported_transport = true;
                         supported_parent = true;
                 } else if (streq(subsys, "ccw")) {
                         path_prepend(&path, "ccw-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "ccw-%s", sysname);
                         parent = skip_subsystem(parent, "ccw");
                         supported_transport = true;
                         supported_parent = true;
                 } else if (streq(subsys, "ccwgroup")) {
                         path_prepend(&path, "ccwgroup-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "ccwgroup-%s", 
sysname);
                         parent = skip_subsystem(parent, "ccwgroup");
                         supported_transport = true;
                         supported_parent = true;
@@ -596,6 +627,8 @@
                         supported_parent = true;
                 } else if (streq(subsys, "iucv")) {
                         path_prepend(&path, "iucv-%s", sysname);
+                        if (compat_path)
+                                path_prepend(&compat_path, "iucv-%s", sysname);
                         parent = skip_subsystem(parent, "iucv");
                         supported_transport = true;
                         supported_parent = true;
@@ -604,6 +637,8 @@
 
                         if (sd_device_get_sysattr_value(dev, "nsid", &nsid) >= 
0) {
                                 path_prepend(&path, "nvme-%s", nsid);
+                                if (compat_path)
+                                        path_prepend(&compat_path, "nvme-%s", 
nsid);
                                 parent = skip_subsystem(parent, "nvme");
                                 supported_parent = true;
                                 supported_transport = true;
@@ -671,6 +706,14 @@
                 udev_builtin_add_property(dev, test, "ID_PATH_TAG", tag);
         }
 
+        /*
+         * Compatible link generation for ATA devices
+         * we assign compat_link to the env variable
+         * ID_PATH_ATA_COMPAT
+         */
+        if (compat_path)
+                udev_builtin_add_property(dev, test, "ID_PATH_ATA_COMPAT", 
compat_path);
+
         return 0;
 }
 


Reply via email to