[OE-core] [PATCH] wic: fallback to dd, if sparse_copy does not work
Dogukan Ergun
dogukan.ergun at gmail.com
Thu Nov 16 11:49:43 UTC 2017
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:
+ # 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,
--
2.7.4
More information about the Openembedded-core
mailing list