From df4524cb3796529b435af309f5e6a2d92bcdaaa0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 29 Nov 2022 18:24:32 +0100 Subject: [PATCH 1/2] dissect-image: don't probe swap partitions needlessly We already know it's swap, we can assume it's also fstype swap, and don#t need to probe things later again. --- src/shared/dissect-image.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index d7a047e68b..1d634c9b88 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -811,6 +811,8 @@ static int dissect_image( if (pflags & SD_GPT_FLAG_NO_AUTO) continue; + fstype = "swap"; + /* We don't have a designator for SD_GPT_LINUX_GENERIC so check the UUID instead. */ } else if (sd_id128_equal(type.uuid, SD_GPT_LINUX_GENERIC)) { From fb3921b8232b7ac2dc2f8d0254e8a875340be89d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 29 Nov 2022 18:30:18 +0100 Subject: [PATCH 2/2] dissect-image: merge handlers for 4 different partition designators into one These four branches execute the exact same code these days, hence merge them into one. --- src/shared/dissect-image.c | 39 +++++--------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 1d634c9b88..4872fe4d6b 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -648,18 +648,11 @@ static int dissect_image( label = blkid_partition_get_name(pp); /* libblkid returns NULL here if empty */ - if (type.designator == PARTITION_HOME) { - - check_partition_flags(node, pflags, - SD_GPT_FLAG_NO_AUTO | SD_GPT_FLAG_READ_ONLY | SD_GPT_FLAG_GROWFS); - - if (pflags & SD_GPT_FLAG_NO_AUTO) - continue; - - rw = !(pflags & SD_GPT_FLAG_READ_ONLY); - growfs = FLAGS_SET(pflags, SD_GPT_FLAG_GROWFS); - - } else if (type.designator == PARTITION_SRV) { + if (IN_SET(type.designator, + PARTITION_HOME, + PARTITION_SRV, + PARTITION_XBOOTLDR, + PARTITION_TMP)) { check_partition_flags(node, pflags, SD_GPT_FLAG_NO_AUTO | SD_GPT_FLAG_READ_ONLY | SD_GPT_FLAG_GROWFS); @@ -682,17 +675,6 @@ static int dissect_image( fstype = "vfat"; - } else if (type.designator == PARTITION_XBOOTLDR) { - - check_partition_flags(node, pflags, - SD_GPT_FLAG_NO_AUTO | SD_GPT_FLAG_READ_ONLY | SD_GPT_FLAG_GROWFS); - - if (pflags & SD_GPT_FLAG_NO_AUTO) - continue; - - rw = !(pflags & SD_GPT_FLAG_READ_ONLY); - growfs = FLAGS_SET(pflags, SD_GPT_FLAG_GROWFS); - } else if (type.designator == PARTITION_ROOT) { check_partition_flags(node, pflags, @@ -834,17 +816,6 @@ static int dissect_image( return -ENOMEM; } - } else if (type.designator == PARTITION_TMP) { - - check_partition_flags(node, pflags, - SD_GPT_FLAG_NO_AUTO | SD_GPT_FLAG_READ_ONLY | SD_GPT_FLAG_GROWFS); - - if (pflags & SD_GPT_FLAG_NO_AUTO) - continue; - - rw = !(pflags & SD_GPT_FLAG_READ_ONLY); - growfs = FLAGS_SET(pflags, SD_GPT_FLAG_GROWFS); - } else if (type.designator == PARTITION_VAR) { check_partition_flags(node, pflags,