From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51157) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YkvKs-0007mg-9e for qemu-devel@nongnu.org; Wed, 22 Apr 2015 10:09:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YkvKm-0003lu-C8 for qemu-devel@nongnu.org; Wed, 22 Apr 2015 10:09:06 -0400 Received: from relay.parallels.com ([195.214.232.42]:37634) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YkvKm-0003lQ-4A for qemu-devel@nongnu.org; Wed, 22 Apr 2015 10:09:00 -0400 Message-ID: <5537AB6E.6070608@openvz.org> Date: Wed, 22 Apr 2015 17:08:46 +0300 From: "Denis V. Lunev" MIME-Version: 1.0 References: <1426069701-1405-1-git-send-email-den@openvz.org> <1426069701-1405-22-git-send-email-den@openvz.org> <20150422140534.GW27617@stefanha-thinkpad.redhat.com> In-Reply-To: <20150422140534.GW27617@stefanha-thinkpad.redhat.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 21/27] block/parallels: no need to flush on each block allocation table update List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Kevin Wolf , qemu-devel@nongnu.org, Stefan Hajnoczi On 22/04/15 17:05, Stefan Hajnoczi wrote: > On Wed, Mar 11, 2015 at 01:28:15PM +0300, Denis V. Lunev wrote: >> From the point of guest each write to real disk prior to disk barrier >> operation could be lost. Therefore there is no problem that "not synced" >> new block is lost due to not updated allocation table if QEMU is crashed. >> This situation is properly detected and handled now using inuse magic >> and in parallels_check >> >> This patch improves writing performance of >> qemu-img create -f parallels -o cluster_size=64k ./1.hds 64G >> qemu-io -f parallels -c "write -P 0x11 0 1024k" 1.hds >> from 45 Mb/sec to 160 Mb/sec on my SSD disk. The gain on rotational media >> is much more sufficient, from 800 Kb/sec to 45 Mb/sec. >> >> Signed-off-by: Denis V. Lunev >> Reviewed-by: Roman Kagan >> CC: Kevin Wolf >> CC: Stefan Hajnoczi >> --- >> block/parallels.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/block/parallels.c b/block/parallels.c >> index bafc74b..2605c1a 100644 >> --- a/block/parallels.c >> +++ b/block/parallels.c >> @@ -118,7 +118,7 @@ static int64_t allocate_cluster(BlockDriverState *bs, int64_t sector_num) >> bdrv_truncate(bs->file, (pos + s->tracks) << BDRV_SECTOR_BITS); >> >> s->bat_bitmap[idx] = cpu_to_le32(pos / s->off_multiplier); >> - ret = bdrv_pwrite_sync(bs->file, >> + ret = bdrv_pwrite(bs->file, >> sizeof(ParallelsHeader) + idx * sizeof(s->bat_bitmap[idx]), >> s->bat_bitmap + idx, sizeof(s->bat_bitmap[idx])); >> if (ret < 0) { > Please squash this into the write support patch. ok