diff --git a/NEWS b/NEWS index 33048e3f1..49e19cec2 100644 --- a/NEWS +++ b/NEWS @@ -15,7 +15,7 @@ CHANGES WITH 247: programs that monitor or enumerate devices with libudev or sd-device, or otherwise process uevents. Please note that this incompatibility is not fault of systemd or udev, but caused by an incompatible kernel - change that happened back in Linux 4.12, but is becoming more and + change that happened back in Linux 4.14, but is becoming more and more visible as the new uevents are generated by more kernel drivers. To minimize issues resulting from this kernel change (but not avoid @@ -45,7 +45,7 @@ CHANGES WITH 247: new functions to enumerate these 'current' tags, in addition to the existing APIs that now enumerate the 'sticky' ones. - To properly handle "bind"/"unbind" on Linux 4.12 and newer it is + To properly handle "bind"/"unbind" on Linux 4.14 and newer it is essential that all udev rules files and applications are updated to handle the new events. Specifically: diff --git a/po/POTFILES.skip b/po/POTFILES.skip index e6ef4d792..599445be3 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -4,6 +4,7 @@ src/core/dbus-job.c src/core/dbus-manager.c src/core/dbus-mount.c src/core/dbus-path.c +src/core/dbus-scope.c src/core/dbus-service.c src/core/dbus-slice.c src/core/dbus-socket.c @@ -11,10 +12,10 @@ src/core/dbus-swap.c src/core/dbus-target.c src/core/dbus-timer.c src/core/dbus-unit.c -src/core/dbus-scope.c src/core/org.freedesktop.systemd1.policy src/hostname/hostnamed.c src/locale/localed.c src/timedate/timedated.c -units/user@.service.in units/debug-shell.service.in +units/systemd-journald.service.in +units/user@.service.in diff --git a/src/core/scope.c b/src/core/scope.c index a372f8d72..5448d44bd 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -377,10 +377,6 @@ static int scope_start(Unit *u) { return r; } - /* Now u->pids have been moved into the scope cgroup, it's not needed - * anymore. */ - u->pids = set_free(u->pids); - s->result = SCOPE_SUCCESS; scope_set_state(s, SCOPE_RUNNING); @@ -388,7 +384,13 @@ static int scope_start(Unit *u) { /* Set the maximum runtime timeout. */ scope_arm_timer(s, usec_add(UNIT(s)->active_enter_timestamp.monotonic, s->runtime_max_usec)); - /* Start watching the PIDs currently in the scope */ + /* On unified we use proper notifications hence we can unwatch the PIDs + * we just attached to the scope. This can also be done on legacy as + * we're going to update the list of the processes we watch with the + * PIDs currently in the scope anyway. */ + unit_unwatch_all_pids(u); + + /* Start watching the PIDs currently in the scope (legacy hierarchy only) */ (void) unit_enqueue_rewatch_pids(u); return 1; } diff --git a/src/home/meson.build b/src/home/meson.build index e3cc1a9fb..444dc4761 100644 --- a/src/home/meson.build +++ b/src/home/meson.build @@ -109,7 +109,7 @@ if conf.get('ENABLE_HOMED') == 1 if install_sysconfdir install_data('homed.conf', - install_dir : sysconfdir) + install_dir : pkgsysconfdir) endif endif diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 7a3f89ed3..789a8c7df 100644 --- a/src/libsystemd/sd-event/sd-event.c +++ b/src/libsystemd/sd-event/sd-event.c @@ -3725,7 +3725,7 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) { this_run = now(CLOCK_MONOTONIC); l = u64log2(this_run - e->last_run); - assert(l < sizeof(e->delays)); + assert(l < ELEMENTSOF(e->delays)); e->delays[l]++; if (this_run - e->last_log >= 5*USEC_PER_SEC) { diff --git a/src/network/test-networkd-conf.c b/src/network/test-networkd-conf.c index 0fe81886b..c77100743 100644 --- a/src/network/test-networkd-conf.c +++ b/src/network/test-networkd-conf.c @@ -224,7 +224,7 @@ static void test_config_parse_match_ifnames(void) { assert_se(config_parse_match_ifnames("network", "filename", 1, "section", 1, "Name", 0, "!baz", &names, NULL) == 0); assert_se(config_parse_match_ifnames("network", "filename", 1, "section", 1, "Name", 0, "aaa bbb ccc", &names, NULL) == 0); - strv_equal(names, STRV_MAKE("!hoge", "!hogehoge", "!foo", "!baz", "aaa", "bbb", "ccc")); + assert_se(strv_equal(names, STRV_MAKE("!hoge", "!hogehoge", "!foo", "!baz", "aaa", "bbb", "ccc"))); } static void test_config_parse_match_strv(void) { diff --git a/src/oom/meson.build b/src/oom/meson.build index e966ad1dd..1ea6766d1 100644 --- a/src/oom/meson.build +++ b/src/oom/meson.build @@ -31,6 +31,6 @@ if conf.get('ENABLE_OOMD') == 1 if install_sysconfdir install_data('oomd.conf', - install_dir : sysconfdir) + install_dir : pkgsysconfdir) endif endif