<div dir="ltr">Would it be neater to change sparse_copy itself so that it does the fallback, not every caller?<div><br></div><div>Ross</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 16 November 2017 at 11:49, Dogukan Ergun <span dir="ltr">&lt;<a href="mailto:dogukan.ergun@gmail.com" target="_blank">dogukan.ergun@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Docker&#39;s aufs filesystem doesn&#39;t support file ioctl operations like FIGETBSZ<br>
or FIEMAP.<br>
Sparse_copy operation will fail if those ioctls are not supported.<br>
If sparse_copy fails while generating wic images, fallback to dd for copying<br>
filesystems on final image.<br>
<br>
Signed-off-by: Dogukan Ergun &lt;<a href="mailto:dogukan.ergun@gmail.com">dogukan.ergun@gmail.com</a>&gt;<br>
---<br>
 scripts/lib/wic/plugins/<wbr>imager/direct.py | 10 ++++++++--<br>
 1 file changed, 8 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/scripts/lib/wic/plugins/<wbr>imager/direct.py b/scripts/lib/wic/plugins/<wbr>imager/direct.py<br>
index da1c061..70f93ee 100644<br>
--- a/scripts/lib/wic/plugins/<wbr>imager/direct.py<br>
+++ b/scripts/lib/wic/plugins/<wbr>imager/direct.py<br>
@@ -577,8 +577,14 @@ class PartitionedImage():<br>
         for part in self.partitions:<br>
             source = part.source_file<br>
             if source:<br>
-                # install source_file contents into a partition<br>
-                sparse_copy(source, self.path, seek=part.start * self.sector_size)<br>
+                try:<br>
+                    # install source_file contents into a partition<br>
+                    sparse_copy(source, self.path, seek=part.start * self.sector_size)<br>
+                except:<br>
+                    # Sparse_copy failed, fallback to dd method<br>
+                    dd_cmd = &quot;dd if=%s of=%s bs=%d seek=%d count=%d conv=notrunc&quot; % \<br>
+                        (source, self.path, self.sector_size, part.start, part.size_sec)<br>
+                    exec_cmd(dd_cmd)<br>
<br>
                 logger.debug(&quot;Installed %s in partition %d, sectors %d-%d, &quot;<br>
                              &quot;size %d sectors&quot;, source, part.num, part.start,<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.4<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</font></span></blockquote></div><br></div>