block/iscsi: allow caching of the allocation map
commite1123a3b40a1a9a625a29c8ed4debb7e206ea690
authorPeter Lieven <pl@kamp.de>
Mon, 18 Jul 2016 08:52:20 +0000 (18 10:52 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 19 Jul 2016 06:34:53 +0000 (19 08:34 +0200)
tree1a7c9d98747dcaf59f9b2a295393bcfcd6e2aaa6
parenteb36b953e0ebf4129b188a241fbc367062ac2e06
block/iscsi: allow caching of the allocation map

until now the allocation map was used only as a hint if a cluster
is allocated or not. If a block was not allocated (or Qemu had
no info about the allocation status) a get_block_status call was
issued to check the allocation status and possibly avoid
a subsequent read of unallocated sectors. If a block known to be
allocated the get_block_status call was omitted. In the other case
a get_block_status call was issued before every read to avoid
the necessity for a consistent allocation map. To avoid the
potential overhead of calling get_block_status for each and
every read request this took only place for the bigger requests.

This patch enhances this mechanism to cache the allocation
status and avoid calling get_block_status for blocks where
the allocation status has been queried before. This allows
for bypassing the read request even for smaller requests and
additionally omits calling get_block_status for known to be
unallocated blocks.

Signed-off-by: Peter Lieven <pl@kamp.de>
Message-Id: <1468831940-15556-3-git-send-email-pl@kamp.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
block/iscsi.c