qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Dimitris Aragiorgis <dimara@arrikto.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com, stefanha@redhat.com,
	qemu-block@nongnu.org
Subject: [Qemu-devel] [PATCH v4 2/5] Fix migration in case of scsi-generic
Date: Wed, 20 May 2015 12:57:36 +0300	[thread overview]
Message-ID: <1432115859-11413-3-git-send-email-dimara@arrikto.com> (raw)
In-Reply-To: <1432115859-11413-1-git-send-email-dimara@arrikto.com>

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 <dimara@arrikto.com>
---
 block/io.c    |    3 ++-
 block/iscsi.c |    4 ----
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/block/io.c b/block/io.c
index 1ce62c4..922dc07 100644
--- a/block/io.c
+++ b/block/io.c
@@ -2231,7 +2231,8 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs)
 {
     int ret;
 
-    if (!bs || !bdrv_is_inserted(bs) || bdrv_is_read_only(bs)) {
+    if (!bs || !bdrv_is_inserted(bs) || bdrv_is_read_only(bs) ||
+        bdrv_is_sg(bs)) {
         return 0;
     }
 
diff --git a/block/iscsi.c b/block/iscsi.c
index 502a81f..965978b 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -627,10 +627,6 @@ static int coroutine_fn iscsi_co_flush(BlockDriverState *bs)
     IscsiLun *iscsilun = bs->opaque;
     struct IscsiTask iTask;
 
-    if (bdrv_is_sg(bs)) {
-        return 0;
-    }
-
     if (!iscsilun->force_next_flush) {
         return 0;
     }
-- 
1.7.10.4

  parent reply	other threads:[~2015-05-20  9:58 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-20  9:57 [Qemu-devel] [PATCH v4 0/5] Some fixes related to scsi-generic Dimitris Aragiorgis
2015-05-20  9:57 ` [Qemu-devel] [PATCH v4 1/5] block: Use bdrv_is_sg() everywhere Dimitris Aragiorgis
2015-06-19 12:18   ` Stefan Hajnoczi
2015-05-20  9:57 ` Dimitris Aragiorgis [this message]
2015-06-19 12:23   ` [Qemu-devel] [PATCH v4 2/5] Fix migration in case of scsi-generic Stefan Hajnoczi
2015-05-20  9:57 ` [Qemu-devel] [PATCH v4 3/5] raw-posix: DPRINTF instead of DEBUG_BLOCK_PRINT Dimitris Aragiorgis
2015-06-18 20:05   ` Eric Blake
2015-06-19 12:25   ` Stefan Hajnoczi
2015-05-20  9:57 ` [Qemu-devel] [PATCH v4 4/5] raw-posix: Use DPRINTF for DEBUG_FLOPPY Dimitris Aragiorgis
2015-06-18 20:14   ` Eric Blake
2015-06-19 12:25   ` Stefan Hajnoczi
2015-05-20  9:57 ` [Qemu-devel] [PATCH v4 5/5] raw-posix: Introduce hdev_is_sg() Dimitris Aragiorgis
2015-06-18 20:16   ` Eric Blake
2015-06-19 12:33   ` Stefan Hajnoczi
2015-06-22 10:18     ` Dimitris Aragiorgis
2015-06-22 12:33       ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-05-29  5:15 ` [Qemu-devel] [PATCH v4 0/5] Some fixes related to scsi-generic Dimitris Aragiorgis
2015-06-18 11:07   ` Dimitris Aragiorgis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1432115859-11413-3-git-send-email-dimara@arrikto.com \
    --to=dimara@arrikto.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).