From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVeZi-0002Qy-6U for qemu-devel@nongnu.org; Fri, 26 Apr 2013 05:04:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UVeZg-0005TX-Ol for qemu-devel@nongnu.org; Fri, 26 Apr 2013 05:04:14 -0400 Received: from mail-pd0-f173.google.com ([209.85.192.173]:43945) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVeZg-0005St-Ic for qemu-devel@nongnu.org; Fri, 26 Apr 2013 05:04:12 -0400 Received: by mail-pd0-f173.google.com with SMTP id v14so999706pde.18 for ; Fri, 26 Apr 2013 02:04:12 -0700 (PDT) Message-ID: <517A4306.4060008@gmail.com> Date: Fri, 26 Apr 2013 17:04:06 +0800 From: Liu Yuan MIME-Version: 1.0 References: <1366822079-6582-1-git-send-email-namei.unix@gmail.com> <1366894179-9350-1-git-send-email-namei.unix@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [sheepdog] [PATCH v4] sheepdog: fix loadvm operation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: MORITA Kazutaka Cc: Kevin Wolf , sheepdog@lists.wpkg.org, qemu-devel@nongnu.org, Stefan Hajnoczi On 04/25/2013 09:06 PM, MORITA Kazutaka wrote: > At Thu, 25 Apr 2013 20:49:39 +0800, > Liu Yuan wrote: >> >> From: Liu Yuan >> >> Currently the 'loadvm' opertaion works as following: >> 1. switch to the snapshot >> 2. mark current working VDI as a snapshot >> 3. rely on sd_create_branch to create a new working VDI based on the snapshot >> >> This works not the same as other format as QCOW2. For e.g, >> >> qemu > savevm # get a live snapshot snap1 >> qemu > savevm # snap2 >> qemu > loadvm 1 # This will steally create snap3 of the working VDI >> >> Which will result in following snapshot chain: >> >> base <-- snap1 <-- snap2 <-- snap3 >> ^ >> | >> working VDI >> >> snap3 was unnecessarily created and might be annoying users. >> >> This patch discard the unnecessary 'snap3' creation. and implement >> rollback(loadvm) operation to the specified snapshot by >> 1. switch to the snapshot >> 2. delete working VDI >> 3. rely on sd_create_branch to create a new working VDI based on the snapshot >> >> The snapshot chain for above example will be: >> >> base <-- snap1 <-- snap2 >> ^ >> | >> working VDI >> >> Cc: qemu-devel@nongnu.org >> Cc: MORITA Kazutaka >> Cc: Kevin Wolf >> Cc: Stefan Hajnoczi >> Signed-off-by: Liu Yuan >> --- >> v4: >> - print an error message when NO_VDI found >> >> v3: >> - let boot from snapshot behave like 'loadvm' >> >> v2: >> - use do_req() because sd_delete isn't in coroutine >> - don't break old behavior if we boot up on the snapshot by using s->reverted >> to indicate if we delete working VDI successfully >> - fix a subtle case that sd_create_branch() isn't called yet while another >> 'loadvm' is executed >> >> block/sheepdog.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- >> 1 file changed, 53 insertions(+), 1 deletion(-) > > Reviewed-by: MORITA Kazutaka Missed this one, Stefan? Thanks, Yuan