qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: [Qemu-devel] [PULL 70/85] block: Add PreallocMode to BD.bdrv_truncate()
Date: Tue, 11 Jul 2017 18:07:59 +0200	[thread overview]
Message-ID: <20170711160814.20941-71-mreitz@redhat.com> (raw)
In-Reply-To: <20170711160814.20941-1-mreitz@redhat.com>

Add a PreallocMode parameter to the bdrv_truncate() function implemented
by each block driver. Currently, we always pass PREALLOC_MODE_OFF and no
driver accepts anything else.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20170613202107.10125-2-mreitz@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 include/block/block_int.h |  3 ++-
 block.c                   |  2 +-
 block/blkdebug.c          |  9 ++++++++-
 block/crypto.c            |  8 +++++++-
 block/file-posix.c        |  9 ++++++++-
 block/file-win32.c        |  9 ++++++++-
 block/gluster.c           |  8 +++++++-
 block/iscsi.c             |  9 ++++++++-
 block/nfs.c               |  9 ++++++++-
 block/qcow2.c             |  9 ++++++++-
 block/qed.c               |  9 ++++++++-
 block/raw-format.c        |  9 ++++++++-
 block/rbd.c               |  9 ++++++++-
 block/sheepdog.c          | 11 +++++++++--
 14 files changed, 98 insertions(+), 15 deletions(-)

diff --git a/include/block/block_int.h b/include/block/block_int.h
index d0cd8a3..669a279 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -204,7 +204,8 @@ struct BlockDriver {
     int coroutine_fn (*bdrv_co_flush_to_os)(BlockDriverState *bs);
 
     const char *protocol_name;
-    int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset, Error **errp);
+    int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset,
+                         PreallocMode prealloc, Error **errp);
 
     int64_t (*bdrv_getlength)(BlockDriverState *bs);
     bool has_variable_length;
diff --git a/block.c b/block.c
index 162e9d9..37e7b3d 100644
--- a/block.c
+++ b/block.c
@@ -3434,7 +3434,7 @@ int bdrv_truncate(BdrvChild *child, int64_t offset, Error **errp)
 
     assert(!(bs->open_flags & BDRV_O_INACTIVE));
 
-    ret = drv->bdrv_truncate(bs, offset, errp);
+    ret = drv->bdrv_truncate(bs, offset, PREALLOC_MODE_OFF, errp);
     if (ret == 0) {
         ret = refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS);
         bdrv_dirty_bitmap_truncate(bs);
diff --git a/block/blkdebug.c b/block/blkdebug.c
index b25856c..a9b03ff 100644
--- a/block/blkdebug.c
+++ b/block/blkdebug.c
@@ -821,8 +821,15 @@ static int64_t blkdebug_getlength(BlockDriverState *bs)
     return bdrv_getlength(bs->file->bs);
 }
 
-static int blkdebug_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int blkdebug_truncate(BlockDriverState *bs, int64_t offset,
+                             PreallocMode prealloc, Error **errp)
 {
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     return bdrv_truncate(bs->file, offset, errp);
 }
 
diff --git a/block/crypto.c b/block/crypto.c
index c561cba..33f690f 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -361,12 +361,18 @@ static int block_crypto_create_generic(QCryptoBlockFormat format,
 }
 
 static int block_crypto_truncate(BlockDriverState *bs, int64_t offset,
-                                 Error **errp)
+                                 PreallocMode prealloc, Error **errp)
 {
     BlockCrypto *crypto = bs->opaque;
     size_t payload_offset =
         qcrypto_block_get_payload_offset(crypto->block);
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     offset += payload_offset;
 
     return bdrv_truncate(bs->file, offset, errp);
diff --git a/block/file-posix.c b/block/file-posix.c
index 3927fab..4a40976 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1624,12 +1624,19 @@ static void raw_close(BlockDriverState *bs)
     }
 }
 
-static int raw_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int raw_truncate(BlockDriverState *bs, int64_t offset,
+                        PreallocMode prealloc, Error **errp)
 {
     BDRVRawState *s = bs->opaque;
     struct stat st;
     int ret;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     if (fstat(s->fd, &st)) {
         ret = -errno;
         error_setg_errno(errp, -ret, "Failed to fstat() the file");
diff --git a/block/file-win32.c b/block/file-win32.c
index ef2910b..4706335 100644
--- a/block/file-win32.c
+++ b/block/file-win32.c
@@ -461,12 +461,19 @@ static void raw_close(BlockDriverState *bs)
     }
 }
 
-static int raw_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int raw_truncate(BlockDriverState *bs, int64_t offset,
+                        PreallocMode prealloc, Error **errp)
 {
     BDRVRawState *s = bs->opaque;
     LONG low, high;
     DWORD dwPtrLow;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     low = offset;
     high = offset >> 32;
 
diff --git a/block/gluster.c b/block/gluster.c
index addceed..bfa4df1 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -1096,11 +1096,17 @@ static coroutine_fn int qemu_gluster_co_rw(BlockDriverState *bs,
 }
 
 static int qemu_gluster_truncate(BlockDriverState *bs, int64_t offset,
-                                 Error **errp)
+                                 PreallocMode prealloc, Error **errp)
 {
     int ret;
     BDRVGlusterState *s = bs->opaque;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     ret = glfs_ftruncate(s->fd, offset);
     if (ret < 0) {
         ret = -errno;
diff --git a/block/iscsi.c b/block/iscsi.c
index 54067e2..904ef20 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -2079,11 +2079,18 @@ static void iscsi_reopen_commit(BDRVReopenState *reopen_state)
     }
 }
 
-static int iscsi_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int iscsi_truncate(BlockDriverState *bs, int64_t offset,
+                          PreallocMode prealloc, Error **errp)
 {
     IscsiLun *iscsilun = bs->opaque;
     Error *local_err = NULL;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     if (iscsilun->type != TYPE_DISK) {
         error_setg(errp, "Cannot resize non-disk iSCSI devices");
         return -ENOTSUP;
diff --git a/block/nfs.c b/block/nfs.c
index c3c5de0..c396ee1 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -759,11 +759,18 @@ static int64_t nfs_get_allocated_file_size(BlockDriverState *bs)
     return (task.ret < 0 ? task.ret : st.st_blocks * 512);
 }
 
-static int nfs_file_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int nfs_file_truncate(BlockDriverState *bs, int64_t offset,
+                             PreallocMode prealloc, Error **errp)
 {
     NFSClient *client = bs->opaque;
     int ret;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     ret = nfs_ftruncate(client->context, client->fh, offset);
     if (ret < 0) {
         error_setg_errno(errp, -ret, "Failed to truncate file");
diff --git a/block/qcow2.c b/block/qcow2.c
index 52dc6bf..b7c5994 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -3058,12 +3058,19 @@ static coroutine_fn int qcow2_co_pdiscard(BlockDriverState *bs,
     return ret;
 }
 
-static int qcow2_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int qcow2_truncate(BlockDriverState *bs, int64_t offset,
+                          PreallocMode prealloc, Error **errp)
 {
     BDRVQcow2State *s = bs->opaque;
     int64_t new_l1_size;
     int ret;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     if (offset & 511) {
         error_setg(errp, "The new size must be a multiple of 512");
         return -EINVAL;
diff --git a/block/qed.c b/block/qed.c
index 385381a..8f7e45c 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -1342,12 +1342,19 @@ static int coroutine_fn bdrv_qed_co_pwrite_zeroes(BlockDriverState *bs,
                           QED_AIOCB_WRITE | QED_AIOCB_ZERO);
 }
 
-static int bdrv_qed_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int bdrv_qed_truncate(BlockDriverState *bs, int64_t offset,
+                             PreallocMode prealloc, Error **errp)
 {
     BDRVQEDState *s = bs->opaque;
     uint64_t old_image_size;
     int ret;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     if (!qed_is_image_size_valid(offset, s->header.cluster_size,
                                  s->header.table_size)) {
         error_setg(errp, "Invalid image size specified");
diff --git a/block/raw-format.c b/block/raw-format.c
index a1622c6..721c9a0 100644
--- a/block/raw-format.c
+++ b/block/raw-format.c
@@ -352,10 +352,17 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp)
     }
 }
 
-static int raw_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int raw_truncate(BlockDriverState *bs, int64_t offset,
+                        PreallocMode prealloc, Error **errp)
 {
     BDRVRawState *s = bs->opaque;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     if (s->has_size) {
         error_setg(errp, "Cannot resize fixed-size raw disks");
         return -ENOTSUP;
diff --git a/block/rbd.c b/block/rbd.c
index 9da02cd..9151d5c 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -936,11 +936,18 @@ static int64_t qemu_rbd_getlength(BlockDriverState *bs)
     return info.size;
 }
 
-static int qemu_rbd_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int qemu_rbd_truncate(BlockDriverState *bs, int64_t offset,
+                             PreallocMode prealloc, Error **errp)
 {
     BDRVRBDState *s = bs->opaque;
     int r;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     r = rbd_resize(s->image, offset);
     if (r < 0) {
         error_setg_errno(errp, -r, "Failed to resize file");
diff --git a/block/sheepdog.c b/block/sheepdog.c
index 08d7b11..b7b7e6b 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -2153,13 +2153,20 @@ static int64_t sd_getlength(BlockDriverState *bs)
     return s->inode.vdi_size;
 }
 
-static int sd_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int sd_truncate(BlockDriverState *bs, int64_t offset,
+                       PreallocMode prealloc, Error **errp)
 {
     BDRVSheepdogState *s = bs->opaque;
     int ret, fd;
     unsigned int datalen;
     uint64_t max_vdi_size;
 
+    if (prealloc != PREALLOC_MODE_OFF) {
+        error_setg(errp, "Unsupported preallocation mode '%s'",
+                   PreallocMode_lookup[prealloc]);
+        return -ENOTSUP;
+    }
+
     max_vdi_size = (UINT64_C(1) << s->inode.block_size_shift) * MAX_DATA_OBJS;
     if (offset < s->inode.vdi_size) {
         error_setg(errp, "shrinking is not supported");
@@ -2448,7 +2455,7 @@ static coroutine_fn int sd_co_writev(BlockDriverState *bs, int64_t sector_num,
     BDRVSheepdogState *s = bs->opaque;
 
     if (offset > s->inode.vdi_size) {
-        ret = sd_truncate(bs, offset, NULL);
+        ret = sd_truncate(bs, offset, PREALLOC_MODE_OFF, NULL);
         if (ret < 0) {
             return ret;
         }
-- 
2.9.4

  parent reply	other threads:[~2017-07-11 16:12 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-11 16:06 [Qemu-devel] [PULL 00/85] Block layer patches Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 01/85] block: expose crypto option names / defs to other drivers Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 02/85] block: add ability to set a prefix for opt names Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 03/85] qcow: document another weakness of qcow AES encryption Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 04/85] qcow: require image size to be > 1 for new images Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 05/85] iotests: skip 042 with qcow which dosn't support zero sized images Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 06/85] iotests: skip 048 with qcow which doesn't support resize Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 07/85] block: deprecate "encryption=on" in favor of "encrypt.format=aes" Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 08/85] qcow: make encrypt_sectors encrypt in place Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 09/85] qcow: convert QCow to use QCryptoBlock for encryption Max Reitz
2017-07-11 16:06 ` [Qemu-devel] [PULL 10/85] qcow2: make qcow2_encrypt_sectors encrypt in place Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 11/85] qcow2: convert QCow2 to use QCryptoBlock for encryption Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 12/85] qcow2: extend specification to cover LUKS encryption Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 13/85] qcow2: add support for LUKS encryption format Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 14/85] qcow2: add iotests to cover LUKS encryption support Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 15/85] iotests: enable tests 134 and 158 to work with qcow (v1) Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 16/85] block: rip out all traces of password prompting Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 17/85] block: remove all encryption handling APIs Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 18/85] block: pass option prefix down to crypto layer Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 19/85] qcow2: report encryption specific image information Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 20/85] docs: document encryption options for qcow, qcow2 and luks Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 21/85] iotests: 181 does not work for all formats Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 22/85] mirror: Fix inconsistent backing AioContext for after mirroring Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 23/85] specs/qcow2: fix bitmap granularity qemu-specific note Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 24/85] specs/qcow2: do not use wording 'bitmap header' Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 25/85] hbitmap: improve dirty iter Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 26/85] tests: add hbitmap iter test Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 27/85] block: fix bdrv_dirty_bitmap_granularity signature Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 28/85] block/dirty-bitmap: add deserialize_ones func Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 29/85] qcow2-refcount: rename inc_refcounts() and make it public Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 30/85] qcow2: add bitmaps extension Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 31/85] block/dirty-bitmap: fix comment for BlockDirtyBitmap.disabled field Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 32/85] block/dirty-bitmap: add readonly field to BdrvDirtyBitmap Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 33/85] qcow2: autoloading dirty bitmaps Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 34/85] block: refactor bdrv_reopen_commit Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 35/85] block: new bdrv_reopen_bitmaps_rw interface Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 36/85] qcow2: support .bdrv_reopen_bitmaps_rw Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 37/85] block/dirty-bitmap: add autoload field to BdrvDirtyBitmap Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 38/85] block: bdrv_close: release bitmaps after drv->bdrv_close Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 39/85] block: introduce persistent dirty bitmaps Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 40/85] block/dirty-bitmap: add bdrv_dirty_bitmap_next() Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 41/85] qcow2: add persistent dirty bitmaps support Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 42/85] qcow2: store bitmaps on reopening image as read-only Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 43/85] block: add bdrv_can_store_new_dirty_bitmap Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 44/85] qcow2: add .bdrv_can_store_new_dirty_bitmap Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 45/85] qmp: add persistent flag to block-dirty-bitmap-add Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 46/85] qmp: add autoload parameter " Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 47/85] qmp: add x-debug-block-dirty-bitmap-sha256 Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 48/85] iotests: test qcow2 persistent dirty bitmap Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 49/85] block/dirty-bitmap: add bdrv_remove_persistent_dirty_bitmap Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 50/85] qcow2: add .bdrv_remove_persistent_dirty_bitmap Max Reitz
2017-07-14 10:42   ` Peter Maydell
2017-07-14 12:04     ` Vladimir Sementsov-Ogievskiy
2017-07-14 12:08       ` Peter Maydell
2017-07-14 12:11       ` Eric Blake
2017-07-11 16:07 ` [Qemu-devel] [PULL 51/85] qmp: block-dirty-bitmap-remove: remove persistent Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 52/85] block: release persistent bitmaps on inactivate Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 53/85] iotests: skip 159 & 170 with luks format Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 54/85] iotests: fix remainining tests to work with LUKS Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 55/85] iotests: reduce PBKDF iterations when testing LUKS Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 56/85] iotests: add more LUKS hash combination tests Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 57/85] iotests: chown LUKS device before qemu-io launches Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 58/85] iotests: Use absolute paths for executables Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 59/85] iotests: Add test for colon handling Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 60/85] tests: Avoid non-portable 'echo -ARG' Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 61/85] block: add bdrv_measure() API Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 62/85] raw-format: add bdrv_measure() support Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 63/85] qcow2: extract preallocation calculation function Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 64/85] qcow2: make refcount size calculation conservative Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 65/85] qcow2: extract image creation option parsing Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 66/85] qcow2: add bdrv_measure() support Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 67/85] qemu-img: add measure subcommand Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 68/85] qemu-iotests: support per-format golden output files Max Reitz
2017-07-11 16:07 ` [Qemu-devel] [PULL 69/85] iotests: add test 178 for qemu-img measure Max Reitz
2017-07-11 16:07 ` Max Reitz [this message]
2017-07-11 16:08 ` [Qemu-devel] [PULL 71/85] block: Add PreallocMode to bdrv_truncate() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 72/85] block: Add PreallocMode to blk_truncate() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 73/85] qemu-img: Expose PreallocMode for resizing Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 74/85] block/file-posix: Small fixes in raw_create() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 75/85] block/file-posix: Extract raw_regular_truncate() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 76/85] block/file-posix: Generalize raw_regular_truncate Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 77/85] block/file-posix: Preallocation for truncate Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 78/85] block/qcow2: Generalize preallocate() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 79/85] block/qcow2: Lock s->lock in preallocate() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 80/85] block/qcow2: Metadata preallocation for truncate Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 81/85] block/qcow2: Add qcow2_refcount_area() Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 82/85] block/qcow2: Rename "fail_block" to just "fail" Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 83/85] block/qcow2: falloc/full preallocating growth Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 84/85] iotests: Add preallocated resize test for raw Max Reitz
2017-07-11 16:08 ` [Qemu-devel] [PULL 85/85] iotests: Add preallocated growth test for qcow2 Max Reitz
2017-07-13 13:53 ` [Qemu-devel] [PULL 00/85] Block layer patches Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170711160814.20941-71-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).