]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysupdate: Ignore resources that are not pending
authorValentin David <me@valentindavid.com>
Mon, 30 Mar 2026 07:49:13 +0000 (09:49 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 30 Mar 2026 21:34:16 +0000 (23:34 +0200)
`updatectl enable --now` systematically fails because the update phase find
resources that are not pending. So instead we should ignore them.

Fixes #41254

src/sysupdate/sysupdate-transfer.c
test/units/TEST-72-SYSUPDATE.sh

index 46f3129f5d9937046570b0677570fbad0fcc0e36..35c0e05083bdf6623b79da3d92e19ab9fb7ce203 100644 (file)
@@ -1609,8 +1609,10 @@ int transfer_process_partial_and_pending_instance(Transfer *t, Instance *i) {
 
         /* Does this instance already exist in the target but isn’t pending? */
         existing = resource_find_instance(&t->target, i->metadata.version);
-        if (existing && !existing->is_pending)
-                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Failed to acquire '%s', instance is already in the target but is not pending.", i->path);
+        if (existing && !existing->is_pending) {
+                log_info("Resource '%s' instance is already in the target but is not pending.", i->path);
+                return 0;
+        }
 
         /* All we need to do is compute the temporary paths. We don’t need to do any of the other work in
          * transfer_acquire_instance(). */
index fc83a42e55d66f20ec96e6dbfd235a3cebe18690..b929485bd5b6c1009b98500138694ea6e2ef8f21 100755 (executable)
@@ -352,7 +352,7 @@ EOF
     mkdir "$CONFIGDIR/optional.feature.d"
     echo -e "[Feature]\nEnabled=true" > "$CONFIGDIR/optional.feature.d/enable.conf"
     "$SYSUPDATE" --offline list v5 | grep "incomplete" >/dev/null
-    update_now "monolithic"
+    update_now "$update_type"
     "$SYSUPDATE" --offline list v5 | grep -v "incomplete" >/dev/null
     verify_version "$blockdev" "$sector_size" v3 1
     verify_version_current "$blockdev" "$sector_size" v5 2