qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Jeff Cody" <jcody@redhat.com>,
	"Benoît Canet" <benoit@irqsave.net>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>
Subject: [Qemu-devel] [PATCH v2 0/8] block: Integrate bdrv_file_open() into bdrv_open()
Date: Sat,  8 Feb 2014 18:39:11 +0100	[thread overview]
Message-ID: <1391881159-13585-1-git-send-email-mreitz@redhat.com> (raw)

bdrv_file_open() is now nearly a subset of bdrv_open(), except for the
fact that bdrv_file_open() is for protocols and bdrv_open() for block
drivers. It is possible to use bdrv_file_open() with a block driver, but
in that case that block driver must be explicitly specified.

Due to these great similarities, bdrv_file_open() can be integrated and
made a special case of bdrv_open(). If the flag BDRV_O_PROTOCOL is
specified, bdrv_open() will now do what bdrv_file_open() used to do:
Auto-detecting a protocol instead of a block driver.

This series implements this and changes all calls to bdrv_file_open() to
bdrv_open() calls with BDRV_O_PROTOCOL specified.

Note that this flag cannot be discerned automatically since it is
impossible for bdrv_open() to know by itself whether a given file should
be opened with or without the format layer involved: Both are valid
alternatives. Therefore, it still has to be specified by the user.


v2:
 - patch 1:
   - added appropriate assertions before every bdrv_open() and
     bdrv_open_image() call where the BDS should be NULL (i.e., where a
     new BDS should be created) and it is not obvious
   - don't initialize BDS pointers to NULL if that is necessary for a
     bdrv_open(); rather, set them to NULL directly before calling
     bdrv_open() in order to make the expected behavior of bdrv_open()
     (create a new BDS) more obvious
   - make bdrv_open_image() behave the same way as bdrv_open() in regard
     to BDS creation/reuse (completed in patch 8)
   - keep "options == NULL" check in bdrv_open() together with the block
     for setting "bs->options"
 - patch 2:
   - due to options now possibly being NULL in the reference handling
     block of bdrv_open(), the condition for "options_non_empty" has to
     be adjusted
   - contextual changes due to patch 1
 - patch 3:
   - adjust comment for BDRV_O_PROTOCOL
   - contextual changes due to the previous patches
 - patch 4 (previously 5):
   - contextual changes due to the previous patches
 - patch 5 (previously 6):
   - bdrv_close() is unnecessary if the BDS could not be opened
 - patch 6:
   - melded together from previous patches 4, 7 and 8
 - patch 7 (previously 9):
   - make the "options" parameter of bdrv_file_open() an indirect
     pointer; if bdrv_file_open() takes the reference, it will be set to
     NULL; otherwise, the caller is responsible for freeing the QDict
 - patch 8 (previously 10):
   - make bdrv_open_image() behave the same way as bdrv_open() in regard
     to BDS creation/reuse
   - contextual changes due to the previous patches


Max Reitz (8):
  block: Change BDS parameter of bdrv_open() to **
  block: Add reference parameter to bdrv_open()
  block: Make bdrv_file_open() static
  block: Reuse reference handling from bdrv_open()
  block: Remove bdrv_new() from bdrv_file_open()
  block: Handle bs->options in bdrv_open() only
  block: Reuse success path from bdrv_open()
  block: Remove bdrv_open_image()'s force_raw option

 block.c               | 229 +++++++++++++++++++++++++-------------------------
 block/blkdebug.c      |   3 +-
 block/blkverify.c     |   6 +-
 block/cow.c           |   6 +-
 block/qcow.c          |   6 +-
 block/qcow2.c         |  19 +++--
 block/qed.c           |   5 +-
 block/sheepdog.c      |   8 +-
 block/vhdx.c          |   5 +-
 block/vmdk.c          |  17 ++--
 block/vvfat.c         |   6 +-
 blockdev.c            |  22 +++--
 hw/block/xen_disk.c   |   4 +-
 include/block/block.h |  13 +--
 qemu-img.c            |  12 ++-
 qemu-io.c             |   8 +-
 qemu-nbd.c            |   2 +-
 17 files changed, 194 insertions(+), 177 deletions(-)

-- 
1.8.5.4

             reply	other threads:[~2014-02-08 17:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-08 17:39 Max Reitz [this message]
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 1/8] block: Change BDS parameter of bdrv_open() to ** Max Reitz
2014-02-10 12:42   ` Kevin Wolf
2014-02-12  0:10     ` Max Reitz
2014-02-10 13:17   ` Benoît Canet
2014-02-12  0:15     ` Max Reitz
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 2/8] block: Add reference parameter to bdrv_open() Max Reitz
2014-02-10 13:30   ` Benoît Canet
2014-02-12  0:17     ` Max Reitz
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 3/8] block: Make bdrv_file_open() static Max Reitz
2014-02-10 13:40   ` Benoît Canet
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 4/8] block: Reuse reference handling from bdrv_open() Max Reitz
2014-02-10 13:42   ` Benoît Canet
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 5/8] block: Remove bdrv_new() from bdrv_file_open() Max Reitz
2014-02-10 13:49   ` Benoît Canet
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 6/8] block: Handle bs->options in bdrv_open() only Max Reitz
2014-02-10 16:23   ` Benoît Canet
2014-02-10 16:23   ` Benoît Canet
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 7/8] block: Reuse success path from bdrv_open() Max Reitz
2014-02-10 14:56   ` Kevin Wolf
2014-02-12  0:26     ` Max Reitz
2014-02-10 16:28   ` Benoît Canet
2014-02-08 17:39 ` [Qemu-devel] [PATCH v2 8/8] block: Remove bdrv_open_image()'s force_raw option Max Reitz
2014-02-10 16:31   ` Benoît Canet
2014-02-10 15:01 ` [Qemu-devel] [PATCH v2 0/8] block: Integrate bdrv_file_open() into bdrv_open() Kevin Wolf

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=1391881159-13585-1-git-send-email-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=benoit@irqsave.net \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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).