From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [RFC PATCH 03/17] block: add discard properties to BlockDriverInfo
Date: Thu, 8 Mar 2012 18:15:03 +0100 [thread overview]
Message-ID: <1331226917-6658-4-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1331226917-6658-1-git-send-email-pbonzini@redhat.com>
In the next patches we will declare the guest's semantics for discard
to be "always zero the data". We need to know whether the operation
need to be emulated or can be passed down. For this purpose we need
to know the semantics of the operation and its granularity.
The granularity may not be related to the cluster size (for example
"raw" does not have a cluster size), so add it separately.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
block.h | 4 ++++
block/qcow2.c | 2 ++
qemu-io.c | 5 ++++-
3 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/block.h b/block.h
index 48d0bf3..7feda73 100644
--- a/block.h
+++ b/block.h
@@ -15,6 +15,10 @@ typedef struct BlockDriverInfo {
int cluster_size;
/* offset at which the VM state can be saved (0 if not possible) */
int64_t vm_state_offset;
+ /* whether discard is guaranteed to zero bytes */
+ bool discard_zeroes_data;
+ /* discard granularity in sectors */
+ int discard_granularity;
} BlockDriverInfo;
typedef struct QEMUSnapshotInfo {
diff --git a/block/qcow2.c b/block/qcow2.c
index eb5ea48..2908484 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -1256,6 +1256,8 @@ static int qcow2_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
BDRVQcowState *s = bs->opaque;
bdi->cluster_size = s->cluster_size;
bdi->vm_state_offset = qcow2_vm_state_offset(s);
+ bdi->discard_zeroes_data = (bs->backing_hd == NULL);
+ bdi->discard_granularity = s->cluster_size / BDRV_SECTOR_SIZE;
return 0;
}
diff --git a/qemu-io.c b/qemu-io.c
index 3189530..8f28b6a 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -1437,7 +1437,7 @@ static const cmdinfo_t length_cmd = {
static int info_f(int argc, char **argv)
{
BlockDriverInfo bdi;
- char s1[64], s2[64];
+ char s1[64], s2[64], s3[64];
int ret;
if (bs->drv && bs->drv->format_name) {
@@ -1454,9 +1454,12 @@ static int info_f(int argc, char **argv)
cvtstr(bdi.cluster_size, s1, sizeof(s1));
cvtstr(bdi.vm_state_offset, s2, sizeof(s2));
+ cvtstr(bdi.discard_granularity * BDRV_SECTOR_SIZE, s3, sizeof(s3));
printf("cluster size: %s\n", s1);
printf("vm state offset: %s\n", s2);
+ printf("discard zeroes: %s\n", bdi.discard_zeroes_data ? "yes" : "no");
+ printf("discard granularity: %s\n", s3);
return 0;
}
--
1.7.7.6
next prev parent reply other threads:[~2012-03-08 17:15 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-08 17:15 [Qemu-devel] [RFC PATCH 00/17] Improvements around discard and write zeroes Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 01/17] qemu-iotests: add a simple test for write_zeroes Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 02/17] qed: make write-zeroes bounce buffer smaller than a single cluster Paolo Bonzini
2012-03-08 17:15 ` Paolo Bonzini [this message]
2012-03-09 16:47 ` [Qemu-devel] [RFC PATCH 03/17] block: add discard properties to BlockDriverInfo Kevin Wolf
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 04/17] qed: implement bdrv_aio_discard Paolo Bonzini
2012-03-09 16:31 ` Kevin Wolf
2012-03-09 17:53 ` Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 05/17] block: pass around qiov for write_zeroes operation Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 06/17] block: use bdrv_{co, aio}_discard for write_zeroes operations Paolo Bonzini
2012-03-09 16:37 ` Kevin Wolf
2012-03-09 18:06 ` Paolo Bonzini
2012-03-10 18:02 ` Richard Laager
2012-03-12 12:27 ` Paolo Bonzini
2012-03-12 13:04 ` Kevin Wolf
2012-03-13 19:13 ` Richard Laager
2012-03-14 7:41 ` Paolo Bonzini
2012-03-14 12:01 ` Kevin Wolf
2012-03-14 12:14 ` Paolo Bonzini
2012-03-14 12:37 ` Kevin Wolf
2012-03-14 12:49 ` Paolo Bonzini
2012-03-14 13:04 ` Kevin Wolf
2012-03-24 15:33 ` Christoph Hellwig
2012-03-24 15:30 ` Christoph Hellwig
2012-03-26 19:40 ` Richard Laager
2012-03-27 10:20 ` Kevin Wolf
2012-03-24 15:29 ` Christoph Hellwig
2012-03-26 9:44 ` Daniel P. Berrange
2012-03-26 9:56 ` Christoph Hellwig
2012-03-15 0:42 ` Richard Laager
2012-03-15 9:36 ` Paolo Bonzini
2012-03-16 0:47 ` Richard Laager
2012-03-16 9:34 ` Paolo Bonzini
2012-03-24 15:27 ` Christoph Hellwig
2012-03-26 19:40 ` Richard Laager
2012-03-27 9:08 ` Christoph Hellwig
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 07/17] block: make high level discard operation always zero Paolo Bonzini
2012-03-08 17:55 ` Avi Kivity
2012-03-09 16:42 ` Kevin Wolf
2012-03-12 10:42 ` Avi Kivity
2012-03-12 11:04 ` Kevin Wolf
2012-03-12 12:03 ` Avi Kivity
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 08/17] block: kill the write zeroes operation Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 09/17] ide: issue discard asynchronously but serialize the pieces Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 10/17] ide/scsi: add discard_zeroes_data property Paolo Bonzini
2012-03-08 18:13 ` Avi Kivity
2012-03-08 18:14 ` Avi Kivity
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 11/17] ide/scsi: prepare for flipping the discard defaults Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 12/17] ide/scsi: turn on discard Paolo Bonzini
2012-03-08 18:17 ` Avi Kivity
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 13/17] block: fallback from discard to writes Paolo Bonzini
2012-03-24 15:35 ` Christoph Hellwig
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 14/17] block: support FALLOC_FL_PUNCH_HOLE trimming Paolo Bonzini
2012-03-09 8:20 ` Chris Wedgwood
2012-03-09 8:31 ` Paolo Bonzini
2012-03-09 8:35 ` Chris Wedgwood
2012-03-09 8:40 ` Paolo Bonzini
2012-03-09 10:31 ` Stefan Hajnoczi
2012-03-09 10:43 ` Paolo Bonzini
2012-03-09 10:53 ` Stefan Hajnoczi
2012-03-09 10:57 ` Paolo Bonzini
2012-03-09 20:36 ` Richard Laager
2012-03-12 9:34 ` Paolo Bonzini
2012-03-24 15:40 ` Christoph Hellwig
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 15/17] raw: add get_info Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 16/17] qemu-io: fix the alloc command Paolo Bonzini
2012-03-08 17:15 ` [Qemu-devel] [RFC PATCH 17/17] raw: implement is_allocated Paolo Bonzini
2012-03-24 15:42 ` Christoph Hellwig
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=1331226917-6658-4-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--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).