From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NVCc4-00016O-If for qemu-devel@nongnu.org; Wed, 13 Jan 2010 18:26:56 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NVCbz-00014W-Si for qemu-devel@nongnu.org; Wed, 13 Jan 2010 18:26:56 -0500 Received: from [199.232.76.173] (port=57785 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NVCbz-00014H-H1 for qemu-devel@nongnu.org; Wed, 13 Jan 2010 18:26:51 -0500 Received: from mail-qy0-f194.google.com ([209.85.221.194]:34668) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NVCbz-0001J3-8x for qemu-devel@nongnu.org; Wed, 13 Jan 2010 18:26:51 -0500 Received: by qyk32 with SMTP id 32so3454591qyk.4 for ; Wed, 13 Jan 2010 15:26:50 -0800 (PST) Message-ID: <4B4E56B8.6000701@codemonkey.ws> Date: Wed, 13 Jan 2010 17:26:48 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 1/2] block: flush backing_hd in the right place References: <20100112124923.GA19631@lst.de> In-Reply-To: <20100112124923.GA19631@lst.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Christoph Hellwig Cc: qemu-devel@nongnu.org On 01/12/2010 06:49 AM, Christoph Hellwig wrote: > The backing device is only modified from bdrv_commit. So instead of > flushing it every time bdrv_flush is called for the front-end device > only flush it after we're written data to it in bdrv_commit. > > Signed-off-by: Christoph Hellwig > Applied. Thanks. Regards, Anthony Liguori > Index: qemu/block.c > =================================================================== > --- qemu.orig/block.c 2010-01-12 11:34:35.549024986 +0100 > +++ qemu/block.c 2010-01-12 11:43:28.965006129 +0100 > @@ -623,6 +623,12 @@ int bdrv_commit(BlockDriverState *bs) > if (drv->bdrv_make_empty) > return drv->bdrv_make_empty(bs); > > + /* > + * Make sure all data we wrote to the backing device is actually > + * stable on disk. > + */ > + if (bs->backing_hd) > + bdrv_flush(bs->backing_hd); > return 0; > } > > @@ -1124,12 +1130,8 @@ const char *bdrv_get_device_name(BlockDr > > void bdrv_flush(BlockDriverState *bs) > { > - if (!bs->drv) > - return; > - if (bs->drv->bdrv_flush) > + if (bs->drv&& bs->drv->bdrv_flush) > bs->drv->bdrv_flush(bs); > - if (bs->backing_hd) > - bdrv_flush(bs->backing_hd); > } > > void bdrv_flush_all(void) > @@ -1806,11 +1808,6 @@ BlockDriverAIOCB *bdrv_aio_flush(BlockDr > > if (!drv) > return NULL; > - > - /* > - * Note that unlike bdrv_flush the driver is reponsible for flushing a > - * backing image if it exists. > - */ > return drv->bdrv_aio_flush(bs, cb, opaque); > } > > > > >