[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v9 07/11] block: Add QMP support for streaming t
From: |
Alberto Garcia |
Subject: |
Re: [Qemu-devel] [PATCH v9 07/11] block: Add QMP support for streaming to an intermediate layer |
Date: |
Thu, 28 Apr 2016 14:20:49 +0200 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu) |
On Wed 27 Apr 2016 03:34:19 PM CEST, Max Reitz <address@hidden> wrote:
>> + /* Look for the top-level node that contains 'bs' in its chain */
>> + active = NULL;
>> + do {
>> + active = bdrv_next(active);
>> + } while (active && !bdrv_chain_contains(active, bs));
>
> Alternatively, you could iterate up directly from @bs. Just look for
> the BdrvChild in bs->parents with .role == &child_backing.
Yes, but the BdrvChild in bs->parents does not contain any pointer to
the actual parent node, so unless we want to change that structure I
wouldn't go for this solution.
> More interesting question: What happens if you have e.g. a qcow2 file
> as a quorum child, and then want to stream inside of the qcow2 backing
> chain?
>
> So maybe you should first walk up along &child_backing and then along
> &child_file/&child_format. I think a generic bdrv_get_root_bs()
> wouldn't hurt.
You're right. I'm not sure if that would have other consequences that we
should consider, so maybe we can add that later, with its own set of
tests.
Also, this is all necessary because of the problem with bdrv_reopen().
If that is ever fixed there's no need to block the active layer at all.
>> - stream_start(bs, NULL, base_bs, base_name, has_speed ? speed : 0,
>> + stream_start(bs, active, base_bs, base_name, has_speed ? speed : 0,
>
> stream_start() behaves differently for active == NULL and active == bs.
> I think both kinds of behavior work, but it looks weird for active ==
> bs. Should we pass NULL in that case instead?
You're right, I'll change it to pass NULL and assert(active != bs).
Berto
- [Qemu-devel] [PATCH v9 05/11] block: allow block jobs in any arbitrary node, (continued)
- [Qemu-devel] [PATCH v9 05/11] block: allow block jobs in any arbitrary node, Alberto Garcia, 2016/04/04
- [Qemu-devel] [PATCH v9 03/11] block: use the block job list in qmp_query_block_jobs(), Alberto Garcia, 2016/04/04
- [Qemu-devel] [PATCH v9 07/11] block: Add QMP support for streaming to an intermediate layer, Alberto Garcia, 2016/04/04
- Re: [Qemu-devel] [PATCH v9 07/11] block: Add QMP support for streaming to an intermediate layer, Kevin Wolf, 2016/04/29
- Re: [Qemu-devel] [PATCH v9 07/11] block: Add QMP support for streaming to an intermediate layer, Eric Blake, 2016/04/29
- [Qemu-devel] [PATCH v9 09/11] qemu-iotests: test streaming to an intermediate layer, Alberto Garcia, 2016/04/04
- [Qemu-devel] [PATCH v9 11/11] qemu-iotests: test non-overlapping block-stream operations, Alberto Garcia, 2016/04/04
- [Qemu-devel] [PATCH v9 02/11] block: use the block job list in bdrv_drain_all(), Alberto Garcia, 2016/04/04