filemap: check if dest is written for every block

If lenght parameter is provided to sparse_copy call
it's mandatory to check if the output file is fully
written after reading unmapped block from input file.

If it's not done then sparse_copy can write more data
than specified length.

(From OE-Core rev: 289b1767182982dfb6912e64481150697ba93e4d)

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ed Bartosh
2017-06-13 14:22:04 +03:00
committed by Richard Purdie
parent 59e0600427
commit b67fd459d2

View File

@@ -563,6 +563,13 @@ def sparse_copy(src_fname, dst_fname, skip=0, seek=0,
start = skip
fmap._f_image.seek(start, os.SEEK_SET)
written += start - skip - written
if length and written >= length:
dst_file.seek(seek + length, os.SEEK_SET)
dst_file.close()
return
dst_file.seek(seek + start - skip, os.SEEK_SET)
chunk_size = 1024 * 1024