[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] n ways block filters
From: |
Benoît Canet |
Subject: |
[Qemu-devel] n ways block filters |
Date: |
Fri, 14 Mar 2014 16:57:56 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hello list,
I plan to convert throttling to a block filter and write n way throttling
support.
I discussed a bit with Stefan on the list and we came to the conclusion that the
block filter API need group support.
filter group:
-------------
My current plan to implement this is to add the following fields to the
BlockDriver
structure.
int bdrv_add_filter_group(const char *name, QDict options);
int bdrv_reconfigure_filter_group(const char *name, QDict options);
int bdrv_destroy_filter_group(const char *name);
These three extra method would allow to create, reconfigure or destroy a block
filter group. A block filter group contain the shared or non shared state of the
blockfilter. For throttling it would contains the ThrottleState structure.
Each block filter driver would contains a linked list of linked list where the
BDS are registered grouped by filter groups state.
The regular bdrv_open callback would be used to instantiate a block filter and
add it to a filter group. This method would also take a new-node-name for the
new
filter. This node-name would become the name of the new filter.
bdrv_close would cleanup and deregister from a filter group.
An extra filter-group field in the option dict would allow the bdrv_open method
to register the newly opened block filter in it's filter group.
The BDS structure would have a direct pointer to it's filter group state.
Utility methods to do the bdrv_add_filter_group bdrv_open then bdrv_swap to
install a new filter can be provided by block.c. The same can be done for filter
close and desinstallation.
Legacy throttling QMP API
-------------------------
The legacy throttling API would create throttling filters groups containing only
one BDS.
By default for every 1 way block filter block.c would create a filter group
using the BDS id or node-name as group name. This allow for easy filer removal
with the bds reference.
Group throttling API
--------------------
Commands would be added to create throttling filter groups reconfigure and
remove
them.
Two additional commands would be added to create and insert a block filter in a
given group or close and remove it.
Before I start implementing something what are your thougths on this ?
Best regards
Benoît
- [Qemu-devel] n ways block filters,
Benoît Canet <=
- Re: [Qemu-devel] n ways block filters, Fam Zheng, 2014/03/16
- Re: [Qemu-devel] n ways block filters, Benoît Canet, 2014/03/17
- Re: [Qemu-devel] n ways block filters, Stefan Hajnoczi, 2014/03/17
- Re: [Qemu-devel] n ways block filters, Kevin Wolf, 2014/03/18
- Re: [Qemu-devel] n ways block filters, Benoît Canet, 2014/03/20
- Re: [Qemu-devel] n ways block filters, Kevin Wolf, 2014/03/20
- Re: [Qemu-devel] n ways block filters, Benoît Canet, 2014/03/20
- Re: [Qemu-devel] n ways block filters, Benoît Canet, 2014/03/20
- Re: [Qemu-devel] n ways block filters, Benoît Canet, 2014/03/24
- Re: [Qemu-devel] n ways block filters, Kevin Wolf, 2014/03/24