All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Dunlap <George.Dunlap@eu.citrix.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Ian Campbell <Ian.Campbell@citrix.com>,
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	xen-devel <xen-devel@lists.xen.org>,
	Alex Bligh <alex@alex.org.uk>,
	Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [PATCHv3] QEMU(upstream): Disable xen's use of O_DIRECT by default as it results in crashes.
Date: Tue, 19 Mar 2013 10:06:53 +0000	[thread overview]
Message-ID: <CAFLBxZbL4JC9SBgHzehtfpcjtR5OQN90SPFSTsXRLrpTWUSBsQ__37968.7388464392$1363687757$gmane$org@mail.gmail.com> (raw)
In-Reply-To: <5147562E.1090203@redhat.com>

On Mon, Mar 18, 2013 at 6:00 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Il 18/03/2013 18:38, George Dunlap ha scritto:
>>>>
>>> This might be a difference between Xen and KVM. On Xen migration is
>>> made to a server in a paused state, and it's only unpaused when
>>> the migration to B is complete. There's a sort of extra handshake at
>>> the end.
>>
>> I think what you mean is that all the memory is handled by Xen and the
>> toolstack, not by qemu.  The qemu state is sent as the very last thing,
>> after all of the memory, and therefore (you are arguing) that qemu is
>> not started, and the files cannot be opened, until after the migration
>> is nearly complete, and certainly until after the file is closed on the
>> sending side.
>
> That would be quite dangerous.  Files aren't closed until after QEMU
> exits; at this point whatever problem you have launching QEMU on the
> destination would be unrecoverable.

But if I understand your concern correctly, you were concerned about
the following scenario:
R1. Receiver qemu opens file
R2. Something causes receiver kernel to cache parts of file (maybe
optimistic read-ahead)
S1. Sender qemu writes to file
S2. Sender qemu does final flush
S3. Sender qemu closes file
R3. Receiver reads stale blocks from cache

Even supposing that Xen doesn't actually shut down qemu until it is
started on the remote side, as long as the file isn't opened by qemu
until after S2, we should be safe, right?  It would look like this:

S1. Sender qemu writes to file
S2. Sender qemu does final flush
R1. Receiver qemu opens file
R2. Receiver kernel caches file
S3. Sender qemu closes file

This is all assuming that:
1. The barrier operations / write flush are effective at getting the
data back on to the NFS server
2. The receiver qemu doesn't open the file until after the last flush
by the sender.

Number 1 has been tested by Alex I believe, and is mentioned in the
changeset log; so if #2 is true, then we should be safe.  I'll try to
verify that today.

> Even for successful migration, it would also be bad for downtime (QEMU
> isn't exactly lightning-fast to start).  And even if failure weren't
> catastrophic, it would be a pity to transfer a few gigs of memory and
> then find out that QEMU isn't present in the destination. :)

Well, if qemu isn't present at the destination, that's definitely user
error. :-)  In any case, I know that he migrate can resume if it
fails, so I suspect that the qemu is just paused on the sending side
until the migration is known to complete.  As long as the last write
was flushed to the NFS server before the receiver opens the file, we
should be safe.

> Still, it's more than possible that I've forgotten something about Xen's
> management of QEMU.

And unfortunately I am not intimately familiar with that codepath; it
just happens that I'm the last person to have to dig into that code
and fix something. :-)

 -George

  reply	other threads:[~2013-03-19 10:06 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-18 12:18 [Qemu-devel] [PATCHv3] QEMU(upstream): Disable xen's use of O_DIRECT by default as it results in crashes Alex Bligh
2013-03-18 12:18 ` Alex Bligh
2013-03-18 13:03 ` [Qemu-devel] " Stefan Hajnoczi
2013-03-18 13:03 ` Stefan Hajnoczi
2013-03-18 13:19   ` Alex Bligh
2013-03-18 13:32 ` Paolo Bonzini
2013-03-18 13:49   ` Alex Bligh
2013-03-18 13:49   ` Alex Bligh
2013-03-18 14:05     ` Paolo Bonzini
2013-03-18 14:30       ` Alex Bligh
2013-03-18 14:49         ` Paolo Bonzini
2013-03-18 15:40           ` Alex Bligh
2013-03-18 15:40           ` [Qemu-devel] " Alex Bligh
2013-03-18 16:19             ` Paolo Bonzini
2013-03-18 16:19             ` [Qemu-devel] " Paolo Bonzini
2013-03-18 16:53               ` Alex Bligh
2013-03-18 16:53                 ` Alex Bligh
2013-03-18 17:38                 ` [Qemu-devel] " George Dunlap
2013-03-18 17:38                   ` George Dunlap
2013-03-18 17:47                   ` [Qemu-devel] " Alex Bligh
2013-03-18 17:47                     ` Alex Bligh
2013-03-18 18:00                   ` [Qemu-devel] " Paolo Bonzini
2013-03-19 10:06                     ` George Dunlap [this message]
2013-03-19 10:06                     ` [Qemu-devel] [Xen-devel] " George Dunlap
2013-03-19 10:43                       ` Paolo Bonzini
2013-03-19 10:43                       ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
2013-03-19 10:51                         ` George Dunlap
2013-03-19 11:14                           ` Paolo Bonzini
2013-03-19 11:14                           ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
2013-03-19 11:21                             ` George Dunlap
2013-03-19 11:21                               ` George Dunlap
2013-03-19 15:12                               ` George Dunlap
2013-03-19 15:12                               ` [Qemu-devel] [Xen-devel] " George Dunlap
2013-03-19 15:29                                 ` George Dunlap
2013-03-19 15:29                                 ` [Qemu-devel] [Xen-devel] " George Dunlap
2013-03-19 19:15                                   ` [Qemu-devel] " Alex Bligh
2013-03-19 19:15                                   ` [Qemu-devel] [Xen-devel] " Alex Bligh
2013-03-20 10:24                                     ` Stefano Stabellini
2013-03-20 10:37                                       ` [Qemu-devel] " George Dunlap
2013-03-20 10:37                                       ` [Qemu-devel] [Xen-devel] " George Dunlap
2013-03-20 11:08                                         ` Paolo Bonzini
2013-03-20 11:20                                           ` Alex Bligh
2013-03-20 11:20                                           ` [Qemu-devel] [Xen-devel] " Alex Bligh
2013-03-20 11:08                                         ` Paolo Bonzini
2013-03-20 11:57                                       ` [Qemu-devel] [Xen-devel] " David Scott
2013-03-20 11:57                                         ` [Qemu-devel] " David Scott
2013-03-20 10:24                                     ` Stefano Stabellini
2013-03-19 11:44                             ` [Qemu-devel] [Xen-devel] " Alex Bligh
2013-03-19 11:49                               ` Paolo Bonzini
2013-03-19 11:49                               ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
2013-03-19 11:44                             ` Alex Bligh
2013-03-19 10:51                         ` George Dunlap
2013-03-19 15:13                         ` [Qemu-devel] [Xen-devel] " Stefano Stabellini
2013-03-19 16:53                           ` Paolo Bonzini
2013-03-19 17:03                             ` Stefano Stabellini
2013-03-19 17:03                             ` Stefano Stabellini
2013-03-19 16:53                           ` Paolo Bonzini
2013-03-20  8:33                           ` [Qemu-devel] [Xen-devel] " Alex Bligh
2013-03-20  8:33                             ` Alex Bligh
2013-03-20  9:26                             ` Paolo Bonzini
2013-03-20  9:26                             ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
2013-03-29 17:19                               ` Stefano Stabellini
2013-03-29 17:19                                 ` Stefano Stabellini
2013-03-31 19:53                                 ` Alex Bligh
2013-03-31 19:53                                 ` [Qemu-devel] [Xen-devel] " Alex Bligh
2013-04-01 15:32                                   ` [Qemu-devel] [PATCH] [RFC] Xen PV backend: Move call to bdrv_new from blk_init to blk_connect Alex Bligh
2013-04-01 15:32                                     ` Alex Bligh
2013-04-01 15:44                                     ` [Qemu-devel] " Stefano Stabellini
2013-04-01 20:56                                       ` Alex Bligh
2013-04-01 20:56                                       ` [Qemu-devel] " Alex Bligh
2013-04-02 11:08                                         ` Stefano Stabellini
2013-04-02 11:08                                         ` [Qemu-devel] " Stefano Stabellini
2013-04-05 10:31                                           ` [PATCHv2 1/2] " Alex Bligh
2013-04-05 10:31                                           ` [Qemu-devel] " Alex Bligh
2013-04-05 10:31                                             ` [PATCHv2 2/2] Xen PV backend: Disable use of O_DIRECT by default as it results in crashes Alex Bligh
2013-04-05 10:31                                             ` [Qemu-devel] " Alex Bligh
2013-04-05 14:22                                             ` [PATCHv2 1/2] Xen PV backend: Move call to bdrv_new from blk_init to blk_connect Stefano Stabellini
2013-04-05 14:22                                             ` [Qemu-devel] " Stefano Stabellini
2013-04-05 15:42                                               ` [PATCHv3 " Alex Bligh
2013-04-05 15:42                                               ` [Qemu-devel] " Alex Bligh
2013-04-05 15:42                                                 ` [PATCHv3 2/2] Xen PV backend: Disable use of O_DIRECT by default as it results in crashes Alex Bligh
2013-04-05 15:42                                                 ` [Qemu-devel] " Alex Bligh
2013-04-05 15:43                                               ` [Qemu-devel] [PATCHv2 1/2] Xen PV backend: Move call to bdrv_new from blk_init to blk_connect Alex Bligh
2013-04-05 15:43                                               ` Alex Bligh
2013-04-05 10:32                                           ` [PATCHv2 1/2] Xen PV backend (for qemu-upstream-4.2-testing): " Alex Bligh
2013-04-05 10:32                                           ` [Qemu-devel] " Alex Bligh
2013-04-05 10:32                                             ` [PATCHv2 2/2] Xen PV backend (for qemu-upstream-4.2-testing): Disable use of O_DIRECT by default as it results in crashes Alex Bligh
2013-04-05 10:32                                             ` [Qemu-devel] " Alex Bligh
2013-04-05 10:34                                           ` [PATCH] [RFC] Xen PV backend: Move call to bdrv_new from blk_init to blk_connect Alex Bligh
2013-04-05 10:34                                           ` [Qemu-devel] " Alex Bligh
2013-04-01 15:44                                     ` Stefano Stabellini
2013-04-01 16:35                                   ` [Qemu-devel] [Xen-devel] [PATCHv3] QEMU(upstream): Disable xen's use of O_DIRECT by default as it results in crashes Alex Bligh
2013-04-01 16:35                                     ` Alex Bligh
2013-03-19 15:13                         ` Stefano Stabellini
2013-03-18 18:00                   ` Paolo Bonzini
2013-03-18 14:49         ` Paolo Bonzini
2013-03-18 14:30       ` [Qemu-devel] " Alex Bligh
2013-03-18 14:05     ` Paolo Bonzini
2013-03-18 13:32 ` Paolo Bonzini
  -- strict thread matches above, loose matches on Subject: below --
2013-03-08 11:18 [PATCH] " George Dunlap
2013-03-08 11:40 ` [PATCHv3] " Alex Bligh
2013-03-08 12:54   ` George Dunlap
2013-03-11 14:02     ` Alex Bligh
2013-03-11 14:42       ` George Dunlap
2013-03-11 17:48         ` Konrad Rzeszutek Wilk
2013-03-11 17:55           ` Ian Jackson
2013-03-14 17:06             ` Alex Bligh
2013-03-14 18:26               ` Ian Jackson
2013-03-12 12:08         ` Ian Campbell
2013-03-14 18:37   ` Stefano Stabellini
2013-03-14 19:30     ` Ian Jackson
2013-03-14 19:56       ` Alex Bligh
2013-03-15  9:28       ` Ian Campbell
2013-03-15 10:43         ` Stefano Stabellini
2013-03-15 11:21           ` Ian Jackson
2013-03-15 11:28             ` Stefano Stabellini
2013-03-15 11:37               ` Ian Jackson
2013-03-15 11:43                 ` Stefano Stabellini
2013-03-15 12:43                   ` Alex Bligh
2013-03-15 12:50                     ` Ian Campbell
2013-03-15 18:31                   ` Ian Jackson
2013-03-18 10:29                   ` Alex Bligh
2013-03-18 11:47                     ` Stefano Stabellini
2013-03-18 12:21                       ` Alex Bligh

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='CAFLBxZbL4JC9SBgHzehtfpcjtR5OQN90SPFSTsXRLrpTWUSBsQ__37968.7388464392$1363687757$gmane$org@mail.gmail.com' \
    --to=george.dunlap@eu.citrix.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=Stefano.Stabellini@eu.citrix.com \
    --cc=alex@alex.org.uk \
    --cc=anthony@codemonkey.ws \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=xen-devel@lists.xen.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.