From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57207) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VT80r-0002rL-3I for qemu-devel@nongnu.org; Mon, 07 Oct 2013 06:26:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VT80k-0001HW-O6 for qemu-devel@nongnu.org; Mon, 07 Oct 2013 06:26:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:18708) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VT80k-0001HR-Fa for qemu-devel@nongnu.org; Mon, 07 Oct 2013 06:25:58 -0400 Message-ID: <525281F6.5070709@redhat.com> Date: Mon, 07 Oct 2013 11:42:14 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1380029714-5239-1-git-send-email-pl@kamp.de> <20131007084259.GF6254@stefanha-thinkpad.redhat.com> In-Reply-To: <20131007084259.GF6254@stefanha-thinkpad.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCHv3 00/20] block: logical block provisioning enhancements List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: kwolf@redhat.com, anthony@codemonkey.ws, Peter Lieven , qemu-devel@nongnu.org, stefanha@redhat.com, ronniesahlberg@gmail.com Il 07/10/2013 10:42, Stefan Hajnoczi ha scritto: > Could you make bdrv_co_write_zeroes() always use UNMAP, if possible, and > avoid adding the new BDRV_REQ_MAY_UNMAP flag? While reading the first > few patches in this series I wondered why there is a need to expose > flags at all... > > Sometimes it is useful to distinguish between zeroing at the image > format level from discarding at the device level, but I don't think we > make use of that yet. I'd prefer to keep the interface simple for now > and add flags later, if necessary. > > Or maybe I just missed something ;) The flag is needed to implement the right semantics for the SCSI WRITE SAME command, which are: - if the UNMAP bit is off, always write the sectors (that's bdrv_aio_write_zeroes without BDRV_REQ_MAY_UNMAP if the payload is zero, otherwise it's emulated with bdrv_aio_writev) - if the target can "discard and write the specified payload", you can discard, else you must write the sectors with the correct payload (that's bdrv_aio_write_zeroes with BDRV_REQ_MAY_UNMAP). Contrast this with the UNMAP command, which does not make any guarantee on the content of the sectors after the command is completed (a few months ago we agreed that, even if you have discard_zeroes=true in the target, it is fine for UNMAP to do nothing). Paolo