[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 21/27] block/parallels: no need to flush on each blo
From: |
Denis V. Lunev |
Subject: |
[Qemu-devel] [PATCH 21/27] block/parallels: no need to flush on each block allocation table update |
Date: |
Tue, 10 Mar 2015 11:51:15 +0300 |
>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 <address@hidden>
CC: Roman Kagan <address@hidden>
CC: Kevin Wolf <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
---
block/parallels.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/parallels.c b/block/parallels.c
index 9933c49..e8b3d09 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -117,7 +117,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) {
--
1.9.1
- [Qemu-devel] [PATCH 11/27] iotests, parallels: test for newly created parallels image via qemu-img, (continued)
- [Qemu-devel] [PATCH 11/27] iotests, parallels: test for newly created parallels image via qemu-img, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH 26/27] block/parallels: optimize linear image expansion, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH 08/27] block/parallels: _co_writev callback for Parallels format, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH 18/27] block/parallels: implement parallels_check method of block driver, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH 07/27] block/parallels: replace magic constants 4, 64 with proper sizeofs, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH 24/27] block/parallels: delay writing to BAT till bdrv_co_flush_to_os, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH 21/27] block/parallels: no need to flush on each block allocation table update,
Denis V. Lunev <=
- [Qemu-devel] [PATCH 02/27] block/parallels: rename parallels_header to ParallelsHeader, Denis V. Lunev, 2015/03/10
- [Qemu-devel] [PATCH v3 0/27] write/create for Parallels images with reasonable performance, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 22/27] block/parallels: improve image reading performance, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 05/27] block/parallels: add get_block_status, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 01/27] iotests, parallels: quote TEST_IMG in 076 test to be path-safe, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 03/27] block/parallels: switch to bdrv_read, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 24/27] block/parallels: delay writing to BAT till bdrv_co_flush_to_os, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 13/27] block/parallels: rename catalog_ names to bat_, Denis V. Lunev, 2015/03/11
- [Qemu-devel] [PATCH 10/27] block/parallels: support parallels image creation, Denis V. Lunev, 2015/03/11