From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:48539) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S1z4X-0001fT-FM for qemu-devel@nongnu.org; Mon, 27 Feb 2012 06:48:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S1z4R-0003gx-Kc for qemu-devel@nongnu.org; Mon, 27 Feb 2012 06:48:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33907) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S1z4R-0003fH-Ca for qemu-devel@nongnu.org; Mon, 27 Feb 2012 06:48:47 -0500 Message-ID: <4F4B6D99.3090305@redhat.com> Date: Mon, 27 Feb 2012 12:48:41 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1329930815-7995-1-git-send-email-fsimonce@redhat.com> <1329930815-7995-2-git-send-email-fsimonce@redhat.com> <4F4B6AFE.6090601@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/3] Add blkmirror block driver List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: kwolf@redhat.com, Federico Simoncelli , mtosatti@redhat.com, qemu-devel@nongnu.org On 02/27/2012 12:42 PM, Stefan Hajnoczi wrote: >> > >> > Once non-incremental mode is added, I suspect blkmirror will diverge >> > from blkverify significantly. In particular, we would need to track >> > where have writes been done in the destination. We also would need to >> > hooks for block/stream.c, or perhaps a completely separate >> > implementation of streaming. > I'm not familiar with non-incremental mode, could you please explain > it or link to it? Non-incremental mode is "pre-copy" migration. It would stream in the background from the source to the destination. In this case: - you need to differentiate streaming writes from other writes. When streaming, you do not want to issue spurious writes to the source; - you can skip streaming anything that has been written to the destination already. This means that you need: 1) a bitmap similar to is_allocated; 2) to widen writes to a cluster; 3) serialization similar to copy-on-read. I'm not yet sure how much of this will be generalized in the block layer and block/stream.c, and how much will be specific to blkmirror, but in general none of this applies to blkverify. Paolo