diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 0e2fb9afbe..4c2e41c8b8 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -40,6 +40,7 @@ #include "string-util.h" #include "strv.h" #include "tmpfile-util.h" +#include "udev-util.h" #include "user-util.h" #include "xattr-util.h" @@ -165,6 +166,10 @@ static int wait_for_partitions_to_appear( if (device_is_mmc_special_partition(q)) continue; + r = device_wait_for_initialization(q, "block", NULL); + if (r < 0) + return r; + n++; } @@ -219,12 +224,17 @@ static int loop_wait_for_partitions_to_appear( sd_device *d, unsigned num_partitions, sd_device_enumerator **ret_enumerator) { + _cleanup_(sd_device_unrefp) sd_device *device = NULL; int r; log_debug("Waiting for device (parent + %d partitions) to appear...", num_partitions); + r = device_wait_for_initialization(d, "block", &device); + if (r < 0) + return r; + for (unsigned i = 0; i < N_DEVICE_NODE_LIST_ATTEMPTS; i++) { - r = wait_for_partitions_to_appear(fd, d, num_partitions, ret_enumerator); + r = wait_for_partitions_to_appear(fd, device, num_partitions, ret_enumerator); if (r != -EAGAIN) return r; }