[OE-core] [PATCH] wic: fallback to dd, if sparse_copy does not work
Martin Hundebøll
mnhu at prevas.dk
Thu Nov 16 13:26:35 UTC 2017
On 2017-11-16 12:49, Dogukan Ergun wrote:
> Docker's aufs filesystem doesn't support file ioctl operations like FIGETBSZ
> or FIEMAP.
> Sparse_copy operation will fail if those ioctls are not supported.
> If sparse_copy fails while generating wic images, fallback to dd for copying
> filesystems on final image.
>
> Signed-off-by: Dogukan Ergun <dogukan.ergun at gmail.com>
> ---
> scripts/lib/wic/plugins/imager/direct.py | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
> index da1c061..70f93ee 100644
> --- a/scripts/lib/wic/plugins/imager/direct.py
> +++ b/scripts/lib/wic/plugins/imager/direct.py
> @@ -577,8 +577,14 @@ class PartitionedImage():
> for part in self.partitions:
> source = part.source_file
> if source:
> - # install source_file contents into a partition
> - sparse_copy(source, self.path, seek=part.start * self.sector_size)
> + try:
> + # install source_file contents into a partition
> + sparse_copy(source, self.path, seek=part.start * self.sector_size)
> + except:
I guess a failing sparse_copy() would raise an IOError. Shouldn't you
limit the except to catching only those?
// Martin
> + # Sparse_copy failed, fallback to dd method
> + dd_cmd = "dd if=%s of=%s bs=%d seek=%d count=%d conv=notrunc" % \
> + (source, self.path, self.sector_size, part.start, part.size_sec)
> + exec_cmd(dd_cmd)
>
> logger.debug("Installed %s in partition %d, sectors %d-%d, "
> "size %d sectors", source, part.num, part.start,
>
More information about the Openembedded-core
mailing list