There is a lot of confusing information in the above comments.
To sum up the solution that I'll be uploading shortly, for precise we did:
* add to cloud-initramfs-growroot a 'udevadm settle' before invoking growpart to apply the change. This ensures that any disk events for the root block device are finished before sfdisk is run.
* in cloud-utils's growpart, use '--no-reread' argument to sfdisk when making changes to the disk.
There is a lot of confusing information in the above comments. -growroot a 'udevadm settle' before invoking growpart to apply the change. This ensures that any disk events for the root block device are finished before sfdisk is run.
To sum up the solution that I'll be uploading shortly, for precise we did:
* add to cloud-initramfs
* in cloud-utils's growpart, use '--no-reread' argument to sfdisk when making changes to the disk.