repart: make CopyBlock=auto work for verity sig partitions

Note that this doesn't care which partition set (A or B in an A/B
scenario) is actually newer, it just picks the first suitable, but
that's something we should look into later. For now, let's just make
verity sig partitions work the same way as verity partitions.

Fixes #34835
This commit is contained in:
Lennart Poettering
2025-06-02 06:45:09 +02:00
parent a15c5517e0
commit 253acf116c
+20 -9
View File
@@ -7291,23 +7291,34 @@ static int resolve_copy_blocks_auto(
* partitions in the host, using the appropriate directory as key and ensuring that the partition
* type matches. */
if (type.designator == PARTITION_ROOT)
switch (type.designator) {
case PARTITION_ROOT:
case PARTITION_ROOT_VERITY:
case PARTITION_ROOT_VERITY_SIG:
try1 = "/";
else if (type.designator == PARTITION_USR)
break;
case PARTITION_USR:
case PARTITION_USR_VERITY:
case PARTITION_USR_VERITY_SIG:
try1 = "/usr/";
else if (type.designator == PARTITION_ROOT_VERITY)
try1 = "/";
else if (type.designator == PARTITION_USR_VERITY)
try1 = "/usr/";
else if (type.designator == PARTITION_ESP) {
break;
case PARTITION_ESP:
try1 = "/efi/";
try2 = "/boot/";
} else if (type.designator == PARTITION_XBOOTLDR)
break;
case PARTITION_XBOOTLDR:
try1 = "/boot/";
else
break;
default:
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
"Partition type " SD_ID128_FORMAT_STR " not supported from automatic source block device discovery.",
SD_ID128_FORMAT_VAL(type.uuid));
}
r = find_backing_devno(try1, root, &devno);
if (r == -ENOENT && try2)