Fiemap: fix failure for zero-sized files
authorArtem Bityutskiy <artem.bityutskiy@intel.com>
Tue, 17 Sep 2013 06:23:11 +0000 (09:23 +0300)
committerArtem Bityutskiy <artem.bityutskiy@intel.com>
Tue, 17 Sep 2013 12:10:36 +0000 (15:10 +0300)
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>
bmaptools/Fiemap.py

index 3066f185aa830afd6f58799353042e347e40c8f7..9413358f494a991ac6e663962c5a3de88eb2d2e3 100644 (file)
@@ -144,7 +144,7 @@ class Fiemap:
         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))