On Thu, Jun 06, 2024 at 08:07:37 -0000, Chun Feng Wu wrote:
for comment
"Preferrably all these definitions should be shared with <iotune> as any
change would now need to change two places."
Trimming the context and mentioning this random bit makes it rather hard
to remember what I've based that comment on ...
do you mean we use domain xml like the following one(which reuse <iotune>
definition):
... so I have no idea how to respond to this without going back myself.
Plese preferably keep the context you are responding to rather than
starting a random new message.
Let me do that for you now:
> @@ -6637,6 +6641,164 @@
> </interleave>
> </element>
> </define>
> + <!--
> + throttlegroup is similar to <iotune>, however, group_name is required,
which is different from <iotune>
> + -->
> + <define name="throttlegroup">
> + <element name="throttlegroup">
> + <interleave>
> + <!-- required -->
> + <element name="group_name">
> + <text/>
> + </element>
> + <choice>
> + <element name="total_bytes_sec">
> + <data type="unsignedLong"/>
> + </element>
Preferrably all these definitions should be shared with <iotune> as any
change would now need to change two places.
It is okay if the schema is more lax (e.g. allowing 'group_name' to be
optional in the schema, which is then strictly required by the parser),
but it's not okay to have to change two distinct places.
> + <group>
> + <interleave>
> + <optional>
> + <element name="read_bytes_sec">
> + <data type="unsignedLong"/>
> + </element>
do you mean we use domain xml like the following one(which reuse
<iotune> definition):
<domain>
...
<iotunes>
<iotune>
<group_name>limit0</group_name>
<total_bytes_sec>10000000</total_bytes_sec>
<read_iops_sec>400000</read_iops_sec>
<write_iops_sec>100000</write_iops_sec>
</iotune>
</iotunes>
...
</devices>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' />
<source file='/var/lib/libvirt/images/disk.qcow2'/>
<target dev='vdh' bus='virtio'/>
<throttlefilters>
<throttlefilter iotune='limit2'/>
<throttlefilter iotune='limit012'/>
No, what I meant is to not reimplement the whole definition on the
schema jus tto make 'group_name' required by the schema itself.
You can make it required in the parser, and keep it optional in the
schema so that the schema can be reused in both places rather than
having two distinct copies of it that differ just in the optionality of
'group_name'.