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>
pgpJA0VEwI9zE.pgp
Description: PGP signature