From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Alberto Garcia <berto@igalia.com>,
Markus Armbruster <armbru@redhat.com>,
qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
John Snow <jsnow@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: [Qemu-devel] [PATCH v7 19/39] block: Make some BB functions fall back to BBRS
Date: Mon, 19 Oct 2015 17:53:25 +0200 [thread overview]
Message-ID: <1445270025-22999-20-git-send-email-mreitz@redhat.com> (raw)
In-Reply-To: <1445270025-22999-1-git-send-email-mreitz@redhat.com>
If there is no BDS tree attached to a BlockBackend, functions that can
do so should fall back to the BlockBackendRootState structure.
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
---
block/block-backend.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/block/block-backend.c b/block/block-backend.c
index 6a3f0c7..d790870 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -872,7 +872,11 @@ void blk_error_action(BlockBackend *blk, BlockErrorAction action,
int blk_is_read_only(BlockBackend *blk)
{
- return bdrv_is_read_only(blk->bs);
+ if (blk->bs) {
+ return bdrv_is_read_only(blk->bs);
+ } else {
+ return blk->root_state.read_only;
+ }
}
int blk_is_sg(BlockBackend *blk)
@@ -882,12 +886,24 @@ int blk_is_sg(BlockBackend *blk)
int blk_enable_write_cache(BlockBackend *blk)
{
- return bdrv_enable_write_cache(blk->bs);
+ if (blk->bs) {
+ return bdrv_enable_write_cache(blk->bs);
+ } else {
+ return !!(blk->root_state.open_flags & BDRV_O_CACHE_WB);
+ }
}
void blk_set_enable_write_cache(BlockBackend *blk, bool wce)
{
- bdrv_set_enable_write_cache(blk->bs, wce);
+ if (blk->bs) {
+ bdrv_set_enable_write_cache(blk->bs, wce);
+ } else {
+ if (wce) {
+ blk->root_state.open_flags |= BDRV_O_CACHE_WB;
+ } else {
+ blk->root_state.open_flags &= ~BDRV_O_CACHE_WB;
+ }
+ }
}
void blk_invalidate_cache(BlockBackend *blk, Error **errp)
@@ -917,7 +933,11 @@ void blk_eject(BlockBackend *blk, bool eject_flag)
int blk_get_flags(BlockBackend *blk)
{
- return bdrv_get_flags(blk->bs);
+ if (blk->bs) {
+ return bdrv_get_flags(blk->bs);
+ } else {
+ return blk->root_state.open_flags;
+ }
}
int blk_get_max_transfer_length(BlockBackend *blk)
--
2.6.1
next prev parent reply other threads:[~2015-10-19 15:54 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-19 15:53 [Qemu-devel] [PATCH v7 00/39] blockdev: BlockBackend and media Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 01/39] block: Remove host floppy support Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 02/39] block: Set BDRV_O_INCOMING in bdrv_fill_options() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 03/39] blockdev: Allow creation of BDS trees without BB Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 04/39] iotests: Only create BB if necessary Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 05/39] block: Make bdrv_is_inserted() return a bool Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 06/39] block: Add blk_is_available() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 07/39] block: Make bdrv_is_inserted() recursive Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 08/39] block/raw_bsd: Drop raw_is_inserted() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 09/39] block: Invoke change media CB before NULLing drv Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 10/39] hw/block/fdc: Implement tray status Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 11/39] hw/usb-storage: Check whether BB is inserted Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 12/39] block: Fix BB AIOCB AioContext without BDS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 13/39] block: Move guest_block_size into BlockBackend Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 14/39] block: Remove wr_highest_sector from BlockAcctStats Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 15/39] block: Move BlockAcctStats into BlockBackend Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 16/39] block: Move I/O status and error actions into BB Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 17/39] block/throttle-groups: Make incref/decref public Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 18/39] block: Add BlockBackendRootState Max Reitz
2015-10-19 15:53 ` Max Reitz [this message]
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 20/39] block: Fail requests to empty BlockBackend Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 21/39] block: Prepare remaining BB functions for NULL BDS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 22/39] block: Add blk_insert_bs() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 23/39] block: Prepare for NULL BDS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 24/39] blockdev: Do not create BDS for empty drive Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 25/39] blockdev: Pull out blockdev option extraction Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 26/39] blockdev: Allow more options for BB-less BDS tree Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 27/39] block: Add blk_remove_bs() Max Reitz
2015-10-20 8:33 ` Kevin Wolf
2015-10-21 13:47 ` Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 28/39] blockdev: Add blockdev-open-tray Max Reitz
2015-10-23 13:22 ` Kevin Wolf
2015-10-23 14:22 ` Max Reitz
2015-10-23 13:26 ` Kevin Wolf
2015-10-23 14:26 ` Max Reitz
2015-10-23 14:45 ` Kevin Wolf
2015-10-23 15:25 ` Max Reitz
2015-10-23 15:44 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 29/39] blockdev: Add blockdev-close-tray Max Reitz
2015-10-23 13:43 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 30/39] blockdev: Add blockdev-remove-medium Max Reitz
2015-10-23 13:45 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 31/39] blockdev: Add blockdev-insert-medium Max Reitz
2015-10-21 11:49 ` Alberto Garcia
2015-10-21 13:47 ` Max Reitz
2015-10-23 13:39 ` Kevin Wolf
2015-10-23 14:04 ` Max Reitz
2015-10-23 13:42 ` Kevin Wolf
2015-10-23 14:35 ` Max Reitz
2015-10-23 14:52 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 32/39] blockdev: Implement eject with basic operations Max Reitz
2015-10-23 13:54 ` Kevin Wolf
2015-10-23 14:42 ` Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 33/39] blockdev: Implement change " Max Reitz
2015-10-23 14:11 ` Kevin Wolf
2015-10-23 14:43 ` Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 34/39] block: Inquire tray state before tray-moved events Max Reitz
2015-10-23 14:16 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 35/39] qmp: Introduce blockdev-change-medium Max Reitz
2015-10-23 14:25 ` Kevin Wolf
2015-10-23 15:08 ` Max Reitz
2015-10-26 12:14 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 36/39] hmp: Use blockdev-change-medium for change command Max Reitz
2015-10-26 12:13 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 37/39] blockdev: read-only-mode for blockdev-change-medium Max Reitz
2015-10-26 12:13 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 38/39] hmp: Add read-only-mode option to change command Max Reitz
2015-10-26 12:12 ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 39/39] iotests: Add test for change-related QMP commands Max Reitz
2015-10-26 13:46 ` Kevin Wolf
2015-10-20 11:10 ` [Qemu-devel] [PATCH v7 00/39] blockdev: BlockBackend and media 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=1445270025-22999-20-git-send-email-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=armbru@redhat.com \
--cc=berto@igalia.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--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).