The Fiemap module fails for zero-sized file with these symptoms:
Traceback (most recent call last):
File "./bmaptool", line 561, in <module>
sys.exit(main())
File "./bmaptool", line 545, in main
args.func(args, log)
File "./bmaptool", line 419, in create_command
creator = BmapCreate.BmapCreate(args.image, output, "sha256")
File "/mnt/bigssd/dedekind/work/tizen/git/bmap-tools/bmaptools/BmapCreate.py", line 163, in __init__
self.fiemap = Fiemap.Fiemap(self._f_image)
File "/mnt/bigssd/dedekind/work/tizen/git/bmap-tools/bmaptools/Fiemap.py", line 120, in __init__
self.block_is_mapped(0)
File "/mnt/bigssd/dedekind/work/tizen/git/bmap-tools/bmaptools/Fiemap.py", line 175, in block_is_mapped
struct_fiemap = self._invoke_fiemap(block, 1)
File "/mnt/bigssd/dedekind/work/tizen/git/bmap-tools/bmaptools/Fiemap.py", line 149, in _invoke_fiemap
% (block, self.blocks_cnt))
This patch fixes the issue.
Change-Id: I3eb2c6e69c892aea2a3d41f2b9bf830907d7658e
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
list (just like 'struct.upack()').
"""
- if block < 0 or block >= self.blocks_cnt:
+ if self.blocks_cnt != 0 and (block < 0 or block >= self.blocks_cnt):
raise Error("bad block number %d, should be within [0, %d]"
% (block, self.blocks_cnt))