From patchwork Thu Oct 24 10:06:53 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Lieven X-Patchwork-Id: 285856 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 3ED022C00B9 for ; Thu, 24 Oct 2013 21:09:07 +1100 (EST) Received: from localhost ([::1]:53596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZHqi-0001TG-2v for incoming@patchwork.ozlabs.org; Thu, 24 Oct 2013 06:09:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56587) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZHpz-0001Mv-NE for qemu-devel@nongnu.org; Thu, 24 Oct 2013 06:08:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VZHpt-0005i2-SY for qemu-devel@nongnu.org; Thu, 24 Oct 2013 06:08:19 -0400 Received: from mx.ipv6.kamp.de ([2a02:248:0:51::16]:33485 helo=mx01.kamp.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZHpt-0005hj-Hl for qemu-devel@nongnu.org; Thu, 24 Oct 2013 06:08:13 -0400 Received: (qmail 30671 invoked by uid 89); 24 Oct 2013 10:08:12 -0000 Received: from [82.141.1.145] by client-16-kamp (envelope-from , uid 89) with qmail-scanner-2010/03/19-MF (clamdscan: 0.98/18001. hbedv: 8.2.12.132/7.11.109.62. spamassassin: 3.3.1. Clear:RC:1(82.141.1.145):SA:0(-1.2/5.0):. Processed in 10.461747 secs); 24 Oct 2013 10:08:12 -0000 Received: from ns.kamp-intra.net (HELO dns.kamp-intra.net) ([82.141.1.145]) by mx01.kamp.de with SMTP; 24 Oct 2013 10:08:01 -0000 X-GL_Whitelist: yes Received: from lieven-pc.kamp-intra.net (lieven-pc.kamp-intra.net [172.21.12.60]) by dns.kamp-intra.net (Postfix) with ESMTP id B811E206AB; Thu, 24 Oct 2013 12:07:11 +0200 (CEST) Received: by lieven-pc.kamp-intra.net (Postfix, from userid 1000) id 41A33612C9; Thu, 24 Oct 2013 12:07:17 +0200 (CEST) From: Peter Lieven To: qemu-devel@nongnu.org Date: Thu, 24 Oct 2013 12:06:53 +0200 Message-Id: <1382609227-23989-5-git-send-email-pl@kamp.de> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1382609227-23989-1-git-send-email-pl@kamp.de> References: <1382609227-23989-1-git-send-email-pl@kamp.de> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a02:248:0:51::16 Cc: kwolf@redhat.com, stefanha@redhat.com, Peter Lieven , ronniesahlberg@gmail.com, pbonzini@redhat.com Subject: [Qemu-devel] [PATCHv7 04/17] block: add logical block provisioning info to BlockDriverInfo X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Reviewed-by: Eric Blake Signed-off-by: Peter Lieven --- include/block/block.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/block/block.h b/include/block/block.h index 1f30a56..9c76967 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -18,6 +18,22 @@ typedef struct BlockDriverInfo { /* offset at which the VM state can be saved (0 if not possible) */ int64_t vm_state_offset; bool is_dirty; + /* + * True if unallocated blocks read back as zeroes. This is equivalent + * to the the LBPRZ flag in the SCSI logical block provisioning page. + */ + bool unallocated_blocks_are_zero; + /* + * True if the driver can optimize writing zeroes by unmapping + * sectors. This is equivalent to the BLKDISCARDZEROES ioctl in Linux + * with the difference that in qemu a discard is allowed to silently + * fail. Therefore we have to use bdrv_write_zeroes with the + * BDRV_REQ_MAY_UNMAP flag for an optimized zero write with unmapping. + * After this call the driver has to guarantee that the contents read + * back as zero. It is additionally required that the block device is + * opened with BDRV_O_UNMAP flag for this to work. + */ + bool can_write_zeroes_with_unmap; } BlockDriverInfo; typedef struct BlockFragInfo {