From e6d709a6382e4b913612f597e66ad07b0e351d5f Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Tue, 13 Jun 2017 14:22:05 +0300 Subject: 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 --- scripts/lib/wic/filemap.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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): -- cgit 1.2.3-korg