diff --git a/debian/changelog b/debian/changelog index 12684083..44ca88bc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +livecd-rootfs (2.656) UNRELEASED; urgency=medium + + * Call udevadm settle before kpartx -d. + + -- Michael Hudson-Doyle Sat, 21 Mar 2020 00:07:43 +1300 + livecd-rootfs (2.655) focal; urgency=medium * minimized: reinstall packages one by one, instead of all of them diff --git a/live-build/functions b/live-build/functions index 4daa6932..9e2def5a 100644 --- a/live-build/functions +++ b/live-build/functions @@ -14,18 +14,12 @@ clean_loops() { local kpartx_stdout if [ -n "${backing_img}" ]; then - # sync before removing loop to avoid "Device or resource busy" errors + # If something just finished writing to the device or a + # partition (e.g. the zerofree in umount_partition) udev might + # still be processing the device. + udevadm settle sync - kpartx_ret="" - kpartx_stdout=$(kpartx -v -d "${backing_img}") || kpartx_ret=$? - echo "$kpartx_stdout" - if [ -n "$kpartx_ret" ]; then - if echo "$kpartx_stdout" | grep -q "loop deleted"; then - echo "Suppressing kpartx returning error (#860894)" - else - exit $kpartx_ret - fi - fi + kpartx -v -d "${backing_img}" unset backing_img fi