From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>,
qemu-devel@nongnu.org, qemu-block@nongnu.org,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 09/14] block: Move some bdrv_*_all() functions to BB
Date: Sat, 20 Feb 2016 14:46:41 +0100 [thread overview]
Message-ID: <56C86E41.6070700@redhat.com> (raw)
In-Reply-To: <20160217155126.GH29494@noname.str.redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2530 bytes --]
On 17.02.2016 16:51, Kevin Wolf wrote:
> Am 16.02.2016 um 19:08 hat Max Reitz geschrieben:
>> Move bdrv_commit_all() and bdrv_flush_all() to the BlockBackend level.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>> block.c | 20 ------------
>> block/block-backend.c | 44 +++++++++++++++++++++++----
>> block/io.c | 20 ------------
>> include/block/block.h | 2 --
>> stubs/Makefile.objs | 2 +-
>> stubs/{bdrv-commit-all.c => blk-commit-all.c} | 4 +--
>> 6 files changed, 41 insertions(+), 51 deletions(-)
>> rename stubs/{bdrv-commit-all.c => blk-commit-all.c} (53%)
>>
[...]
>> diff --git a/block/block-backend.c b/block/block-backend.c
>> index a10fe44..a918c35 100644
>> --- a/block/block-backend.c
>> +++ b/block/block-backend.c
[...]
>> @@ -1361,5 +1356,42 @@ BlockBackendRootState *blk_get_root_state(BlockBackend *blk)
>>
>> int blk_commit_all(void)
>> {
>> - return bdrv_commit_all();
>> + BlockBackend *blk = NULL;
>> +
>> + while ((blk = blk_all_next(blk)) != NULL) {
>> + AioContext *aio_context = blk_get_aio_context(blk);
>> +
>> + aio_context_acquire(aio_context);
>> + if (blk_is_available(blk) && blk->bs->drv && blk->bs->backing) {
>
> blk->bs->drv is already implied by blk_is_available(), so it's
> unnecessary, even though it doesn't actively hurt.
>
> Also, using blk_is_available() instead of blk_is_inserted() as in
> blk_flush_all() means that a drive with an open tray, but inserted
> medium isn't committed. I assume you did this on purpose because you're
> using two different functions in this patch, but isn't this a change in
> behaviour? If so, and we really want it, it should at least be mentioned
> in the commit message.
Drives with open trays are strange.
I found it reasonable that every medium in the system should be flushed
on blk_flush_all(), because flushing data should only bring the on-disk
state to a state it is supposed to be in anyway.
On the other hand, the commit operation actively changes data.
Therefore, I decided to treat it like a guest write operation. However,
considering that blk_commit_all() is basically only available through
HMP and is thus more of a legacy operation, I don't think its behavior
should be changed here. I'm therefore going to change this to
blk_is_inserted(), thanks.
Max
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2016-02-20 13:46 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-16 18:08 [Qemu-devel] [PATCH v3 00/14] blockdev: Further BlockBackend work Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 01/14] monitor: Use BB list for BB name completion Max Reitz
2016-02-17 10:09 ` Kevin Wolf
2016-02-17 15:35 ` Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 02/14] block: Use blk_next() where appropriate Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 03/14] block: Add blk_all_next() Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 04/14] block: Add blk_name_taken() Max Reitz
2016-02-17 10:29 ` Kevin Wolf
2016-02-17 15:36 ` Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 05/14] block: Add blk_commit_all() Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 06/14] block: Use blk_{commit, flush}_all() consistently Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 07/14] blockdev: Add list of monitor-owned BlockBackends Max Reitz
2016-02-17 10:53 ` Kevin Wolf
2016-02-17 15:41 ` Max Reitz
2016-02-17 16:20 ` Kevin Wolf
2016-02-20 13:34 ` Max Reitz
2016-02-20 13:36 ` Max Reitz
2016-02-22 8:24 ` Markus Armbruster
2016-02-22 16:29 ` Max Reitz
2016-02-23 9:48 ` Markus Armbruster
2016-02-23 13:52 ` Max Reitz
2016-02-23 14:10 ` Kevin Wolf
2016-02-24 9:28 ` Markus Armbruster
2016-02-24 9:56 ` Kevin Wolf
2016-02-24 15:25 ` Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 08/14] blockdev: Remove blk_hide_on_behalf_of_hmp_drive_del() Max Reitz
2016-02-17 14:18 ` Kevin Wolf
2016-02-17 15:47 ` Max Reitz
2016-02-17 16:22 ` Kevin Wolf
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 09/14] block: Move some bdrv_*_all() functions to BB Max Reitz
2016-02-17 15:51 ` Kevin Wolf
2016-02-20 13:46 ` Max Reitz [this message]
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 10/14] block: Add bdrv_next_monitor_owned() Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 11/14] block: Add blk_next_root_bs() Max Reitz
2016-02-17 16:06 ` Kevin Wolf
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 12/14] block: Rewrite bdrv_next() Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 13/14] block: Use bdrv_next() instead of bdrv_states Max Reitz
2016-02-16 18:08 ` [Qemu-devel] [PATCH v3 14/14] block: Remove bdrv_states list Max Reitz
2016-02-17 16:12 ` [Qemu-devel] [PATCH v3 00/14] blockdev: Further BlockBackend work 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=56C86E41.6070700@redhat.com \
--to=mreitz@redhat.com \
--cc=armbru@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 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.