filemap: calculate dst size correctly

Fixed calculation of the dst file size using skip, seek and
length parameters. Current code does it incorrectly which
causes sparse_copy API to create unnecessary big output files.

(From OE-Core rev: e6d709a6382e4b913612f597e66ad07b0e351d5f)

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:05 +03:00
committed by Richard Purdie
parent b67fd459d2
commit d5e3c91703

View File

@@ -549,7 +549,11 @@ def sparse_copy(src_fname, dst_fname, skip=0, seek=0,
dst_file = open(dst_fname, 'r+b')
except IOError:
dst_file = open(dst_fname, 'wb')
dst_file.truncate(os.path.getsize(src_fname))
if length:
dst_size = length + seek
else:
dst_size = os.path.getsize(src_fname) + seek - skip
dst_file.truncate(dst_size)
written = 0
for first, last in fmap.get_mapped_ranges(0, fmap.blocks_cnt):