+ else
+ udevadm settle
+ # ensure we give blockdev up to 30 seconds/retries
+ local timeout=30
+ local success=0
+ while [ "$timeout" -gt 0 ] ; do
+ ((timeout--))
+ if blockdev --rereadpt "${main_device}" ; then
+ success=1
+ break
+ else
+ ewarn "Failed to reread partition table of ${main_device} [${timeout} retries left]"
+ sleep 1
+ fi
+ done
+
+ if [ "${success}" = "0" ] ; then
+ eerror "Error: failed to reread partition table, giving up."
+ bailout 1
+ fi