All of lore.kernel.org
 help / color / mirror / Atom feed
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
>>

      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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.