On Wed, May 20, 2015 at 12:57:36PM +0300, Dimitris Aragiorgis wrote:
> During migration, QEMU uses fsync()/fdatasync() on the open file
> descriptor for read-write block devices to flush data just before
> stopping the VM.
> 
> However, fsync() on a scsi-generic device returns -EINVAL which
> causes the migration to fail. This patch skips flushing data in case
> of an SG device, since submitting SCSI commands directly via an SG
> character device (e.g. /dev/sg0) bypasses the page cache completely,
> anyway.
> 
> Note that fsync() not only flushes the page cache but also the disk
> cache. The scsi-generic device never sends flushes, and for
> migration it assumes that the same SCSI device is used by the
> destination host, so it does not issue any SCSI SYNCHRONIZE CACHE
> (10) command.
> 
> Finally, remove the bdrv_is_sg() test from iscsi_co_flush() since
> this is now redundant (we flush the underlying protocol at the end
> of bdrv_co_flush() which, with this patch, we never reach).
> 
> Signed-off-by: Dimitris Aragiorgis <dim...@arrikto.com>
> ---
>  block/io.c    |    3 ++-
>  block/iscsi.c |    4 ----
>  2 files changed, 2 insertions(+), 5 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>

Attachment: pgpJA0VEwI9zE.pgp
Description: PGP signature

Reply via email to