From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44844) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRdw0-0001dd-1b for qemu-devel@nongnu.org; Wed, 10 Sep 2014 05:11:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XRdvt-0007Zp-RF for qemu-devel@nongnu.org; Wed, 10 Sep 2014 05:11:28 -0400 Received: from [59.151.112.132] (port=36675 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRdvs-0007Xh-KX for qemu-devel@nongnu.org; Wed, 10 Sep 2014 05:11:21 -0400 From: Hu Tao Date: Wed, 10 Sep 2014 17:05:44 +0800 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v15 0/5] qcow2, raw: add preallocation=full and preallocation=falloc List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Fam Zheng , "Richard W.M. Jones" , Max Reitz , Stefan Hajnoczi , Yasunori Goto This series adds two preallocation mode to qcow2 and raw: Option preallocation=3Dfull preallocates disk space for image by writing zeros to disk, this ensures disk space in any cases. Option preallocation=3Dfalloc preallocates disk space by calling posix_fallocate(). This is faster than preallocation=3Dfull. Note: there is a false positive reported by checkpatch.pl to patch 1. changes to v14: - add detailed commit message to patch 1 - change the coding style as Eric and Beno=C3=AEt suggested (patch 3) - use break as Beno=C3=AEt suggested (patch 4) changes to v13: - rebase (patch 3 in v13 is already in) - don't convert file size to sector size in hdev_create(), too (patch 2) - reintroduce preallocation=3Dfalloc. (patch 3) - split the implementation of preallocation=3Dfull in v13 into preallocation=3Dfalloc and preallocation=3Dfull (patch 4) changes to v12: - remove dependence on minimal_blob_size() (patch 6) - remove preallocation=3Dfalloc. (patch 4) - preallocation=3Dfull tries posix_fallocate() first then writing zeros (patch 5) - round up file size for all formats (patch 1) - avoid converting file size for more formats (patch 2) changes to v11: - fix test case 049 (patch 4) - unsigned nl2e -> uint64_t nl2e (patch 6) - use >> instead of / (patch 6) changes to v10: - PreallocMode is moved from file qapi-schema.json to qapi/block-core.jso= n - introdues preallocation=3Dfalloc, no changes to preallocation=3Dmetadat= a - using minimal_blob_size() to calculate metadata size for qcow2 - indentation fix in file blockdev.c changes to v9: - use ROUND_UP to do round up - split the round up into its own patch and add test case - new patch rename parse_enum_option to qapi_enum_parse and make it public - reuse qapi_enum_parse changes to v8: - round up image file size to nearest sector size - dont' blindly lose error info - target for 2.1 rather than 2.0 - and, rebase to latest git tree changes to v5: - add `Since 2.0' to PreallocMode - apply total_size change to raw-win32.c as well changes to v4: - fix wrong calculation of qcow2 metadata size in v4 - remove raw_preallocate2() - better error out path in raw_create() - fix coding style changes to v3: - remove bdrv_preallocate and make preallocation a bdrv_create_file option - prealloc_mode -> PreallocMode and add it to QAPI - fix return value in raw_preallocate2 changes to v2: - Fix comments to v2 by Fam. - qcow2: first fallocate disk space, then allocate metadata. This avoids the problem in v2 that bdrv_preallocate may clear all information in metadata. This does not necessarily map all data clusters sequentially but does keep information in metadata. Peter, is this acceptable? Hu Tao (5): block: round up file size to nearest sector block: don't convert file size to sector size qapi: introduce PreallocMode and new PreallocModes full and falloc. raw-posix: Add falloc and full preallocation option qcow2: Add falloc and full preallocation option block/archipelago.c | 3 +- block/cow.c | 3 +- block/gluster.c | 9 ++-- block/iscsi.c | 4 +- block/nfs.c | 3 +- block/qcow.c | 7 +-- block/qcow2.c | 82 +++++++++++++++++++++++++------ block/qed.c | 3 +- block/raw-posix.c | 102 ++++++++++++++++++++++++++++++-----= ---- block/raw-win32.c | 6 +-- block/rbd.c | 3 +- block/sheepdog.c | 3 +- block/ssh.c | 3 +- block/vdi.c | 3 +- block/vhdx.c | 3 +- block/vmdk.c | 3 +- block/vpc.c | 3 +- qapi/block-core.json | 17 +++++++ qemu-doc.texi | 17 +++++-- qemu-img.texi | 17 +++++-- tests/qemu-iotests/049.out | 2 +- tests/qemu-iotests/082.out | 54 ++++++++++----------- tests/qemu-iotests/104 | 57 ++++++++++++++++++++++ tests/qemu-iotests/104.out | 12 +++++ tests/qemu-iotests/common.filter | 21 ++++++++ tests/qemu-iotests/group | 1 + 26 files changed, 344 insertions(+), 97 deletions(-) create mode 100755 tests/qemu-iotests/104 create mode 100644 tests/qemu-iotests/104.out --=20 1.9.3