iscsi: add iscsi_truncate support
commitcb1b83e740384b4e0d950f3d7c81c02b8ce86c2e
authorPeter Lieven <pl@dlhnet.de>
Mon, 18 Feb 2013 13:50:46 +0000 (18 14:50 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 5 Mar 2013 16:51:51 +0000 (5 17:51 +0100)
tree784a7c9d3534987b1148088cac4c4b84129c3bcf
parent1dde716ed6719c341c1bfa427781f0715af90cbc
iscsi: add iscsi_truncate support

this patch adds iscsi_truncate which effectively allows for
online resizing of iscsi volumes. for this to work you have
to resize the volume on your storage and then call
block_resize command in qemu which will issue a
readcapacity16 to update the capacity.

v4:
  - factor out complete readcapacity logic into a separate function
  - handle capacity change check condition in readcapacity function
    (this happens if the block_resize cmd is the first iscsi task
    executed after a resize on the storage)

v3:
  - remove switch statement in iscsi_open
  - create separate patch for brdv_drain_all() in bdrv_truncate()

v2:
  - add a general bdrv_drain_all() before bdrv_truncate() to avoid
    in-flight AIOs while the device is truncated
  - since no AIOs are in flight we can use a sync libiscsi call
    to re-read the capacity
  - factor out the readcapacity16 logic as it is redundant
    to iscsi_open() and iscsi_truncate().

Signed-off-by: Peter Lieven <pl@kamp.de>
[allow any type of unit attention check condition in iscsi_readcapacity_sync(),
 as in Message-ID: <51263A2A.6070304@dlhnet.de> - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
block/iscsi.c