From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LaC7q-0003A0-Pg for qemu-devel@nongnu.org; Thu, 19 Feb 2009 11:51:50 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LaC7q-000396-5b for qemu-devel@nongnu.org; Thu, 19 Feb 2009 11:51:50 -0500 Received: from [199.232.76.173] (port=44257 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LaC7q-00038u-24 for qemu-devel@nongnu.org; Thu, 19 Feb 2009 11:51:50 -0500 Received: from qw-out-1920.google.com ([74.125.92.146]:37015) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LaC7p-0003Pr-HB for qemu-devel@nongnu.org; Thu, 19 Feb 2009 11:51:49 -0500 Received: by qw-out-1920.google.com with SMTP id 4so143574qwk.4 for ; Thu, 19 Feb 2009 08:51:49 -0800 (PST) Message-ID: <499D8E05.2060207@codemonkey.ws> Date: Thu, 19 Feb 2009 10:51:17 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] migration: adding migration to/from a file (v2) References: <499D4654.9000305@redhat.com> <499D652D.60803@codemonkey.ws> <499D8564.1070007@redhat.com> In-Reply-To: <499D8564.1070007@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Uri Lublin Cc: qemu-devel@nongnu.org Uri Lublin wrote: > Anthony Liguori wrote: >> Uri Lublin wrote: >>> >>> Migration to file, uses migration-to-fd (supports live migration). >>> Migration from file, uses qemu-fopen directly. >> >> Eh? Haven't we already talked about why this doesn't work? Maybe >> there's a v3 that you meant to send? >> > > Actually I do have a v3 which uses posix-aio-compat.c > It's a much more complicated solution then just writing to a file though. > Also I am not sure if I need to use a signal or not as the migration > (to-fd) code is polling. And if I use signal should I use SIGUSR2 or a > different one and use a pipe similar to block-raw-posix.c ? How is the migration code polling? It will attempt to do writes until a write returns EAGAIN. At this point, it will wait for notification that the more writes are available. Remember, migration is a streaming protocol, not a random access, so it only makes sense to have one outstanding request at a time. Your code would look something like: write() -> submit aio request until aio completes, write returns EAGAIN when aio completes, notify migration code that we are writable again > > Your concern in the previous patch was that write() to a regular file > might block. That's why I'm calling select before calling write. Do > you think select will mark the fd as writeable but write would still > block ? select() doesn't help. It will return that the file descriptor is writable and then the subsequent write will block. Regards, Anthony Liguori > Thanks, > Uri. >