From: Ed Bartosh Date: Tue, 13 Jun 2017 11:22:05 +0000 (+0300) Subject: filemap: calculate dst size correctly X-Git-Tag: uninative-1.7~492 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=e6d709a6382e4b913612f597e66ad07b0e351d5f;p=openembedded-core.git 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. Signed-off-by: Ed Bartosh Signed-off-by: Richard Purdie --- diff --git a/scripts/lib/wic/filemap.py b/scripts/lib/wic/filemap.py index 764dbbe588..6d11355a18 100644 --- a/scripts/lib/wic/filemap.py +++ b/scripts/lib/wic/filemap.py @@ -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):