From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54789) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bwGLl-0000sM-JJ for qemu-devel@nongnu.org; Mon, 17 Oct 2016 18:25:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bwGLk-0002AO-FU for qemu-devel@nongnu.org; Mon, 17 Oct 2016 18:25:41 -0400 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Golembiovsk=C3=BD?= Date: Tue, 18 Oct 2016 00:25:16 +0200 Message-Id: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2] Add 'offset' and 'size' options List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Tom=C3=A1=C5=A1=20Golembiovsk=C3=BD?= , Kevin Wolf , Max Reitz , Markus Armbruster , Eric Blake , qemu-block@nongnu.org This is a follow-up to the patch: [PATCH] raw-posix: add 'offset' and 'size' options The main changes are: - options were moved from 'file' driver into 'raw' driver as suggested - added support for writing, reopen and truncate when possible If I forgot to address somebody's comments feel free to raise them again, please. Some general notes to the code: 1) The size is rounded *down* to the 512 byte boundary. It's not that the raw driver really cares about this, but if we don't do it then=20 bdrv_getlength() will do that instead of us. The problem is that bdrv_getlength() does round *up* and this can lead to reads/writes outside the specified 'size'. 2) We don't provide '.bdrv_get_allocated_file_size' function. As a result the information about allocated disk size reports size of the whole file. This is, rather confusingly, larger than the provided 'size'. But I don't think this matters much. Note that we don't have any easy way how to get the correct information here apart from checking all the block with bdrv_co_get_block_status() (as suggested by Kevin Wolf). 3) No options for raw_create(). The 'size' and 'offset' options were added only to open/reopen. In my opinion there is no real reason for them there. AFAIK you cannot create embeded QCOW2/VMDK/etc. image that way anyway. Tom=C3=A1=C5=A1 Golembiovsk=C3=BD (1): raw_bsd: add offset and size options block/raw_bsd.c | 169 +++++++++++++++++++++++++++++++++++++++++++++= +++++- qapi/block-core.json | 16 ++++- 2 files changed, 181 insertions(+), 4 deletions(-) --=20 2.10.0