diff options
author | Daan De Meyer <daan.j.demeyer@gmail.com> | 2022-05-18 13:35:21 +0200 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2022-05-23 18:15:16 +0100 |
commit | 75d7e04eb4662a814c26010d447eed8a862f5ec1 (patch) | |
tree | 620412705b319ece346db079f27f56057d4038c2 /src/gpt-auto-generator | |
parent | af7211541272823b1ef4fef8c36d10dc1027733e (diff) | |
download | systemd-75d7e04eb4662a814c26010d447eed8a862f5ec1.tar.gz |
dissect-image: Explicitly remove partitions when done with image
When closing a loop device, the kernel will asynchronously remove
the probed partitions. This can lead to race conditions where we
try to reuse a partition device that still needs to be removed by
the kernel. To avoid such issues, let's explicitly try to remove
any partitions using BLKPG_DEL_PARTITION when we're done with an
image.
To make sure we don't try to remove partitions when we want them
to remain (e.g. systemd-dissect --mount), we add
dissected_image_relinquish() in a similar vein to loop_device_relinquish()
and decrypted_image_relinquish().
Diffstat (limited to 'src/gpt-auto-generator')
-rw-r--r-- | src/gpt-auto-generator/gpt-auto-generator.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 589a2cc582..33e1a20de6 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -768,6 +768,8 @@ static int enumerate_partitions(dev_t devnum) { r = k; } + dissected_image_relinquish(m); + return r; } |