Projects
openEuler:22.03:LTS:LoongArch
systemd
_service:tar_scm_kernel_repo:backport-core-devi...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm_kernel_repo:backport-core-device-device_coldplug-don-t-set-DEVICE_DEAD.patch of Package systemd
From cf1ac0cfe44997747b0f857a1d0b67cea1298272 Mon Sep 17 00:00:00 2001 From: Martin Wilck <mwilck@suse.com> Date: Wed, 25 May 2022 12:01:00 +0200 Subject: [PATCH] core/device: device_coldplug(): don't set DEVICE_DEAD dm-crypt device units generated by systemd-cryptsetup-generator habe BindsTo= dependencies on their backend devices. The dm-crypt devices have the db_persist flag set, and thus survive the udev db cleanup while switching root. But backend devices usually don't survive. These devices are neither mounted nor used for swap, thus they will seen as DEVICE_NOT_FOUND after switching root. The BindsTo dependency will cause systemd to schedule a stop job for the dm-crypt device, breaking boot: [ 68.929457] krypton systemd[1]: systemd-cryptsetup@cr_root.service: Unit is stopped because bound to inactive unit dev-disk-by\x2duuid-3bf91f73\x2d1ee8\x2d4cfc\x2d9048\x2d93ba349b786d.device. [ 68.945660] krypton systemd[1]: systemd-cryptsetup@cr_root.service: Trying to enqueue job systemd-cryptsetup@cr_root.service/stop/replace [ 69.473459] krypton systemd[1]: systemd-cryptsetup@cr_root.service: Installed new job systemd-cryptsetup@cr_root.service/stop as 343 Avoid this by not setting the state of the backend devices to DEVICE_DEAD. Fixes the LUKS setup issue reported in #23429. --- src/core/device.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/device.c b/src/core/device.c index 4c261ec554..8728630523 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -205,8 +205,6 @@ static int device_coldplug(Unit *u) { found &= ~DEVICE_FOUND_UDEV; /* ignore DEVICE_FOUND_UDEV bit */ if (state == DEVICE_PLUGGED) state = DEVICE_TENTATIVE; /* downgrade state */ - if (found == DEVICE_NOT_FOUND) - state = DEVICE_DEAD; /* If nobody sees the device, downgrade more */ } if (d->found == found && d->state == state) -- 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
.