Projects
openEuler:22.03:LTS:LoongArch
systemd
_service:tar_scm_kernel_repo:backport-core-repl...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm_kernel_repo:backport-core-replace-m-honor_device_enumeration-with-MANAGER.patch of Package systemd
From 7870de03c52982290f9b8ae11eb4d89db66f4be3 Mon Sep 17 00:00:00 2001 From: Franck Bui <fbui@suse.com> Date: Thu, 5 May 2022 11:11:57 +0200 Subject: [PATCH] core: replace m->honor_device_enumeration with MANAGER_IS_SWITCHING_ROOT() --- src/core/device.c | 7 +++---- src/core/manager.c | 21 +-------------------- src/core/manager.h | 2 -- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/src/core/device.c b/src/core/device.c index d9669e3..0bca0ff 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -189,9 +189,8 @@ static int device_coldplug(Unit *u) { * OPTIONS="db_persist". Hence, almost no devices are enumerated in the step 2. However, in general, * we have several serialized devices. So, DEVICE_FOUND_UDEV bit in the deserialized_found must be * ignored, as udev rules in initramfs and the main system are often different. If the deserialized - * state is DEVICE_PLUGGED, we need to downgrade it to DEVICE_TENTATIVE (or DEVICE_DEAD if nobody - * sees the device). Unlike the other starting mode, Manager.honor_device_enumeration == false - * (maybe, it is better to rename the flag) when device_coldplug() and device_catchup() are called. + * state is DEVICE_PLUGGED, we need to downgrade it to DEVICE_TENTATIVE. Unlike the other starting + * mode, MANAGER_IS_SWITCHING_ROOT() is true when device_coldplug() and device_catchup() are called. * Hence, let's conditionalize the operations by using the flag. After switch-root, systemd-udevd * will (re-)process all devices, and the Device.found and Device.state will be adjusted. * @@ -199,7 +198,7 @@ static int device_coldplug(Unit *u) { * Of course, deserialized parameters may be outdated, but the unit state can be adjusted later by * device_catchup() or uevents. */ - if (!m->honor_device_enumeration && !MANAGER_IS_USER(m) && + if (MANAGER_IS_SWITCHING_ROOT(m) && !FLAGS_SET(d->enumerated_found, DEVICE_FOUND_UDEV)) { found &= ~DEVICE_FOUND_UDEV; /* ignore DEVICE_FOUND_UDEV bit */ if (state == DEVICE_PLUGGED) diff --git a/src/core/manager.c b/src/core/manager.c index 5ed7191..91e9b2a 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1689,8 +1689,6 @@ static void manager_ready(Manager *m) { /* Let's finally catch up with any changes that took place while we were reloading/reexecing */ manager_catchup(m); - - m->honor_device_enumeration = true; } static Manager* manager_reloading_start(Manager *m) { @@ -3259,9 +3257,6 @@ int manager_serialize( (void) serialize_bool(f, "taint-logged", m->taint_logged); (void) serialize_bool(f, "service-watchdogs", m->service_watchdogs); - /* After switching root, udevd has not been started yet. So, enumeration results should not be emitted. */ - (void) serialize_bool(f, "honor-device-enumeration", !switching_root); - if (m->show_status_overridden != _SHOW_STATUS_INVALID) (void) serialize_item(f, "show-status-overridden", show_status_to_string(m->show_status_overridden)); @@ -3635,15 +3630,6 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { else m->service_watchdogs = b; - } else if ((val = startswith(l, "honor-device-enumeration="))) { - int b; - - b = parse_boolean(val); - if (b < 0) - log_notice("Failed to parse honor-device-enumeration flag '%s', ignoring.", val); - else - m->honor_device_enumeration = b; - } else if ((val = startswith(l, "show-status-overridden="))) { ShowStatus s; @@ -3767,7 +3753,7 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { if (q < _MANAGER_TIMESTAMP_MAX) /* found it */ (void) deserialize_dual_timestamp(val, m->timestamps + q); - else if (!startswith(l, "kdbus-fd=")) /* ignore kdbus */ + else if (!STARTSWITH_SET(l, "kdbus-fd=", "honor-device-enumeration=")) /* ignore deprecated values */ log_notice("Unknown serialization item '%s', ignoring.", l); } } @@ -3860,11 +3846,6 @@ int manager_reload(Manager *m) { assert(m->n_reloading > 0); m->n_reloading--; - /* On manager reloading, device tag data should exists, thus, we should honor the results of device - * enumeration. The flag should be always set correctly by the serialized data, but it may fail. So, - * let's always set the flag here for safety. */ - m->honor_device_enumeration = true; - manager_ready(m); m->send_reloading_done = true; diff --git a/src/core/manager.h b/src/core/manager.h index 453706c..67c204f 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -442,8 +442,6 @@ struct Manager { unsigned sigchldgen; unsigned notifygen; - bool honor_device_enumeration; - VarlinkServer *varlink_server; /* Only systemd-oomd should be using this to subscribe to changes in ManagedOOM settings */ Varlink *managed_oom_varlink_request; -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.