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 <[email protected]>
---
  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,

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to