Re: [PATCH RFC v3 03/16] config: Introduce ThrottleGroup and corresponding XML parsing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2024/7/26 21:03, Peter Krempa wrote:
+static virDomainThrottleGroupDef *
+virDomainThrottleGroupDefParseXML(xmlNodePtr node,
+                                  xmlXPathContextPtr ctxt)
+{
+    g_autoptr(virDomainThrottleGroupDef) group = g_new0(virDomainThrottleGroupDef, 1);
+
+    VIR_XPATH_NODE_AUTORESTORE(ctxt)
+    ctxt->node = node;
+
+    PARSE_THROTTLEGROUP(total_bytes_sec);
+    PARSE_THROTTLEGROUP(read_bytes_sec);
+    PARSE_THROTTLEGROUP(write_bytes_sec);
+    PARSE_THROTTLEGROUP(total_iops_sec);
+    PARSE_THROTTLEGROUP(read_iops_sec);
+    PARSE_THROTTLEGROUP(write_iops_sec);
+
+    PARSE_THROTTLEGROUP(total_bytes_sec_max);
+    PARSE_THROTTLEGROUP(read_bytes_sec_max);
+    PARSE_THROTTLEGROUP(write_bytes_sec_max);
+    PARSE_THROTTLEGROUP(total_iops_sec_max);
+    PARSE_THROTTLEGROUP(read_iops_sec_max);
+    PARSE_THROTTLEGROUP(write_iops_sec_max);
+
+    PARSE_THROTTLEGROUP(size_iops_sec);
+
+    PARSE_THROTTLEGROUP(total_bytes_sec_max_length);
+    PARSE_THROTTLEGROUP(read_bytes_sec_max_length);
+    PARSE_THROTTLEGROUP(write_bytes_sec_max_length);
+    PARSE_THROTTLEGROUP(total_iops_sec_max_length);
+    PARSE_THROTTLEGROUP(read_iops_sec_max_length);
+    PARSE_THROTTLEGROUP(write_iops_sec_max_length);
I'd prefer if we had only one copy of the code parsing this and the
equivalent disk throttling data so that the code doesn't need to be
duplicated. The cleanup can be done as a followup though.

in v4 drafting, I am defining the following common macro to avoid duplication of iterating all options in all parsing and formatting codes for both iotune and throttlegroup:

#define FOR_EACH_IOTUNE_ULL_OPTION(process) \
    process(total_bytes_sec) \
    process(read_bytes_sec) \
    process(write_bytes_sec) \
    process(total_iops_sec) \
    process(read_iops_sec) \
    process(write_iops_sec) \
    process(total_bytes_sec_max) \
    process(read_bytes_sec_max) \
    process(write_bytes_sec_max) \
    process(total_iops_sec_max) \
    process(read_iops_sec_max) \
    process(write_iops_sec_max) \
    process(size_iops_sec) \
    process(total_bytes_sec_max_length) \
    process(read_bytes_sec_max_length) \
    process(write_bytes_sec_max_length) \
    process(total_iops_sec_max_length) \
    process(read_iops_sec_max_length) \
    process(write_iops_sec_max_length)

and define different "process" macro for parse and format, and this can be reused by iotune and format by just calling e.g. 

FOR_EACH_IOTUNE_ULL_OPTION(PARSE_IOTUNE);

FOR_EACH_IOTUNE_ULL_OPTION(FORMAT_IOTUNE);


-- 
Thanks and Regards,

Wu

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux