From: Max Reitz <mreitz@redhat.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 00/14] block: Remove "growable", add blk_new_open()
Date: Mon, 26 Jan 2015 09:01:02 -0500 [thread overview]
Message-ID: <54C6489E.5050709@redhat.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1501261217210.13428@kaball.uk.xensource.com>
On 2015-01-26 at 07:18, Stefano Stabellini wrote:
> On Thu, 22 Jan 2015, Max Reitz wrote:
>> This series removes the "growable" field from the BlockDriverState
>> object. Its use was to clamp guest requests against the limits of the
>> BDS; however, this can now be done more easily by moving those checks
>> into the BlockBackend functions.
>>
>> In a future series, "growable" may be reintroduced (maybe with a
>> different name); it will then signify whether a BDS is able to grow (in
>> contrast to the current "growable", which signifies whether it is
>> allowed to). Maybe I will add it to the BlockDriver instead of the BDS,
>> though.
>>
>> To be able to remove that field, qemu-io needs to be converted to
>> BlockBackend, which is done by this series as well. While working on
>> that I decided to convert blk_new_with_bs()+bdrv_open() to
>> blk_new_open(). I was skeptical about that decision at first, but it
>> seems good now that I was able to replace nearly every blk_new_with_bs()
>> call by blk_new_open(). In a future series I may try to convert some
>> remaining bdrv_open() calls to blk_new_open() as well. (And, in fact, in
>> a future series I *will* replace the last remaining blk_new_with_bs()
>> outside of blk_new_open() by blk_new_open().)
>>
>> Finally, the question needs to be asked: If, after this series, every
>> BDS is allowed to grow, are there any users which do not use BB, but
>> should still be disallowed from reading/writing beyond a BDS's limits?
>> The only users I could see were the block jobs. Some of them should
>> indeed be converted to BB; but none of them takes a user-supplied offset
>> or size, all work on the full BDS (or only on parts which have been
>> modified, etc.). Therefore, it is by design impossible for them to
>> exceed the BDS's limits, which makes making all BDS's growable safe.
> Hello Max,
> I applied the first four patches in this series, and this is what I get:
>
> hw/block/xen_disk.c: In function ‘blk_connect’:
> hw/block/xen_disk.c:907:27: error: implicit declaration of function ‘qstring_from_str’ [-Werror=implicit-function-declaration]
> hw/block/xen_disk.c:907:27: error: nested extern declaration of ‘qstring_from_str’ [-Werror=nested-externs]
> hw/block/xen_disk.c:907:27: error: invalid type argument of ‘->’ (have ‘int’)
> hw/block/xen_disk.c:901:22: error: unused variable ‘drv’ [-Werror=unused-variable]
> hw/block/xen_disk.c:900:23: error: unused variable ‘blk’ [-Werror=unused-variable]
>
> it would be great if you could build test it.
Sorry, of course I build test my patches, but I just don't have some
subsystems enabled (there was no real reason not to have the Xen
backends enabled, but that's just how it was; another example are
Windows-specific areas), so I have to work blind on them. In this case I
forgot to include the QMP type headers and to remove the now unused
variables.
Thank you for looking at my patches and finding this issue! I'll send a
fixed v3.
Max
>> v2:
>> - Rebased [Kevin]
>> - Patch 2: Added a TODO comment about removing @filename and @flags from
>> blk_new_open() when possible [Kevin]
>>
>>
>> git-backport-diff against v1:
>>
>> Key:
>> [----] : patches are identical
>> [####] : number of functional differences between upstream/downstream patch
>> [down] : patch is downstream-only
>> The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively
>>
>> 001/14:[----] [--] 'block: Lift some BDS functions to the BlockBackend'
>> 002/14:[0006] [FC] 'block: Add blk_new_open()'
>> 003/14:[----] [-C] 'blockdev: Use blk_new_open() in blockdev_init()'
>> 004/14:[----] [--] 'block/xen: Use blk_new_open() in blk_connect()'
>> 005/14:[----] [--] 'qemu-img: Use blk_new_open() in img_open()'
>> 006/14:[----] [--] 'qemu-img: Use blk_new_open() in img_rebase()'
>> 007/14:[----] [--] 'qemu-img: Use BlockBackend as far as possible'
>> 008/14:[----] [--] 'qemu-nbd: Use blk_new_open() in main()'
>> 009/14:[----] [--] 'qemu-io: Use blk_new_open() in openfile()'
>> 010/14:[0002] [FC] 'qemu-io: Remove "growable" option'
>> 011/14:[----] [--] 'qemu-io: Use BlockBackend'
>> 012/14:[----] [--] 'block: Clamp BlockBackend requests'
>> 013/14:[----] [--] 'block: Remove "growable" from BDS'
>> 014/14:[----] [--] 'block: Keep bdrv_check*_request()'s return value'
>>
>>
>> Max Reitz (14):
>> block: Lift some BDS functions to the BlockBackend
>> block: Add blk_new_open()
>> blockdev: Use blk_new_open() in blockdev_init()
>> block/xen: Use blk_new_open() in blk_connect()
>> qemu-img: Use blk_new_open() in img_open()
>> qemu-img: Use blk_new_open() in img_rebase()
>> qemu-img: Use BlockBackend as far as possible
>> qemu-nbd: Use blk_new_open() in main()
>> qemu-io: Use blk_new_open() in openfile()
>> qemu-io: Remove "growable" option
>> qemu-io: Use BlockBackend
>> block: Clamp BlockBackend requests
>> block: Remove "growable" from BDS
>> block: Keep bdrv_check*_request()'s return value
>>
>> block.c | 59 +++++-----
>> block/block-backend.c | 219 +++++++++++++++++++++++++++++++++++++
>> block/qcow2.c | 6 --
>> block/raw-posix.c | 2 +-
>> block/raw-win32.c | 2 +-
>> block/sheepdog.c | 2 +-
>> blockdev.c | 92 ++++++++--------
>> hmp.c | 9 +-
>> hw/block/xen_disk.c | 24 ++---
>> include/block/block_int.h | 3 -
>> include/qemu-io.h | 4 +-
>> include/sysemu/block-backend.h | 12 +++
>> qemu-img.c | 171 ++++++++++++++---------------
>> qemu-io-cmds.c | 238 ++++++++++++++++++++++-------------------
>> qemu-io.c | 58 ++++------
>> qemu-nbd.c | 25 ++---
>> tests/qemu-iotests/016 | 73 -------------
>> tests/qemu-iotests/016.out | 23 ----
>> tests/qemu-iotests/051.out | 60 +++++------
>> tests/qemu-iotests/087.out | 8 +-
>> tests/qemu-iotests/group | 1 -
>> 21 files changed, 590 insertions(+), 501 deletions(-)
>> delete mode 100755 tests/qemu-iotests/016
>> delete mode 100644 tests/qemu-iotests/016.out
>>
>> --
>> 2.1.0
>>
prev parent reply other threads:[~2015-01-26 14:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-22 20:09 [Qemu-devel] [PATCH v2 00/14] block: Remove "growable", add blk_new_open() Max Reitz
2015-01-22 20:09 ` [Qemu-devel] [PATCH v2 01/14] block: Lift some BDS functions to the BlockBackend Max Reitz
2015-01-22 20:09 ` [Qemu-devel] [PATCH v2 02/14] block: Add blk_new_open() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 03/14] blockdev: Use blk_new_open() in blockdev_init() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 04/14] block/xen: Use blk_new_open() in blk_connect() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 05/14] qemu-img: Use blk_new_open() in img_open() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 06/14] qemu-img: Use blk_new_open() in img_rebase() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 07/14] qemu-img: Use BlockBackend as far as possible Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 08/14] qemu-nbd: Use blk_new_open() in main() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 09/14] qemu-io: Use blk_new_open() in openfile() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 10/14] qemu-io: Remove "growable" option Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 11/14] qemu-io: Use BlockBackend Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 12/14] block: Clamp BlockBackend requests Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 13/14] block: Remove "growable" from BDS Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 14/14] block: Keep bdrv_check*_request()'s return value Max Reitz
2015-01-26 12:18 ` [Qemu-devel] [PATCH v2 00/14] block: Remove "growable", add blk_new_open() Stefano Stabellini
2015-01-26 14:01 ` Max Reitz [this message]
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=54C6489E.5050709@redhat.com \
--to=mreitz@redhat.com \
--cc=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=stefano.stabellini@eu.citrix.com \
/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).