*/
# define VIR_DOMAIN_STATS_NET_SUFFIX_TX_DROP ".tx.drop"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_COUNT:
+ *
+ * Number of block devices in the subsequent list, as unsigned int.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_COUNT "block.count"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_PREFIX:
+ *
+ * The parameter name prefix to access each disk entry. Concatenate the
+ * prefix, the entry number formatted as an unsigned integer and one of the
+ * block suffix parameters to form a complete parameter name.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_PREFIX "block."
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_NAME:
+ *
+ * Name of the block device as string. Matches the target name (vda/sda/hda)
+ * of the block device. If the backing chain is listed, this name is the same
+ * for all host resources tied to the same guest device.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_NAME ".name"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_BACKINGINDEX:
+ *
+ * The <backingStore> index as unsigned int, only used when backing images are
+ * listed.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_BACKINGINDEX ".backingIndex"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_PATH:
+ *
+ * Source of the block device as a string, if it is a file or block device
+ * (omitted for network sources and drives with no media inserted).
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_PATH ".path"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_REQS:
+ *
+ * Number of read requests as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_REQS ".rd.reqs"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_BYTES:
+ *
+ * Number of read bytes as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_BYTES ".rd.bytes"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_TIMES:
+ *
+ * Total time (ns) spent on reads as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_TIMES ".rd.times"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_REQS:
+ *
+ * Number of write requests as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_REQS ".wr.reqs"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_BYTES:
+ *
+ * Number of written bytes as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_BYTES ".wr.bytes"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_TIMES:
+ *
+ * Total time (ns) spent on writes as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_TIMES ".wr.times"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_FL_REQS:
+ *
+ * Total flush requests as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_FL_REQS ".fl.reqs"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_FL_TIMES:
+ *
+ * Total time (ns) spent on cache flushing as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_FL_TIMES ".fl.times"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_ERRORS:
+ *
+ * Xen only: the 'oo_req' value as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_ERRORS ".errors"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_ALLOCATION:
+ *
+ * Offset of the highest written sector as unsigned long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_ALLOCATION ".allocation"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_CAPACITY:
+ *
+ * Logical size in bytes of the block device backing image as unsigned long
+ * long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_CAPACITY ".capacity"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_PHYSICAL:
+ *
+ * Physical size in bytes of the container of the backing image as unsigned
+ * long long.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_PHYSICAL ".physical"
+
+/**
+ * VIR_DOMAIN_STATS_BLOCK_SUFFIX_THRESHOLD:
+ *
+ * Current threshold for delivering the VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
+ * event in bytes as unsigned long long. See virDomainSetBlockThreshold.
+ *
+ * Since: 11.2.0
+ */
+# define VIR_DOMAIN_STATS_BLOCK_SUFFIX_THRESHOLD ".threshold"
+
/**
* virDomainStatsTypes:
*
* VIR_CONNECT_GET_ALL_DOMAINS_STATS_BACKING to @flags will expand the
* array to cover backing chains (block.count corresponds to the number
* of host resources used together to provide the guest disks).
- * The typed parameter keys are in this format:
- *
- * "block.count" - number of block devices in the subsequent list,
- * as unsigned int.
- * "block.<num>.name" - name of the block device <num> as string.
- * matches the target name (vda/sda/hda) of the
- * block device. If the backing chain is listed,
- * this name is the same for all host resources tied
- * to the same guest device.
- * "block.<num>.backingIndex" - unsigned int giving the <backingStore>
- * index, only used when backing images
- * are listed.
- * "block.<num>.path" - string describing the source of block device <num>,
- * if it is a file or block device (omitted for network
- * sources and drives with no media inserted).
- * "block.<num>.rd.reqs" - number of read requests as unsigned long long.
- * "block.<num>.rd.bytes" - number of read bytes as unsigned long long.
- * "block.<num>.rd.times" - total time (ns) spent on reads as
- * unsigned long long.
- * "block.<num>.wr.reqs" - number of write requests as unsigned long long.
- * "block.<num>.wr.bytes" - number of written bytes as unsigned long long.
- * "block.<num>.wr.times" - total time (ns) spent on writes as
- * unsigned long long.
- * "block.<num>.fl.reqs" - total flush requests as unsigned long long.
- * "block.<num>.fl.times" - total time (ns) spent on cache flushing as
- * unsigned long long.
- * "block.<num>.errors" - Xen only: the 'oo_req' value as
- * unsigned long long.
- * "block.<num>.allocation" - offset of the highest written sector
- * as unsigned long long.
- * "block.<num>.capacity" - logical size in bytes of the block device
- * backing image as unsigned long long.
- * "block.<num>.physical" - physical size in bytes of the container of the
- * backing image as unsigned long long.
- * "block.<num>.threshold" - current threshold for delivering the
- * VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD
- * event in bytes. See virDomainSetBlockThreshold.
+ * The VIR_DOMAIN_STATS_BLOCK_* constants define the known typed
+ * parameter keys.
*
* VIR_DOMAIN_STATS_PERF:
* Return perf event statistics.
}
if (src->allocation)
- virTypedParamListAddULLong(params, src->allocation, "block.%zu.allocation", block_idx);
+ virTypedParamListAddULLong(params, src->allocation,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_ALLOCATION, block_idx);
if (src->capacity)
- virTypedParamListAddULLong(params, src->capacity, "block.%zu.capacity", block_idx);
+ virTypedParamListAddULLong(params, src->capacity,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_CAPACITY, block_idx);
if (src->physical)
- virTypedParamListAddULLong(params, src->physical, "block.%zu.physical", block_idx);
+ virTypedParamListAddULLong(params, src->physical,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_PHYSICAL, block_idx);
}
if (!stats || !entryname || !(entry = virHashLookup(stats, entryname)))
return;
- virTypedParamListAddULLong(params, entry->wr_highest_offset, "block.%zu.allocation", block_idx);
+ virTypedParamListAddULLong(params, entry->wr_highest_offset,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_ALLOCATION, block_idx);
if (entry->capacity)
- virTypedParamListAddULLong(params, entry->capacity, "block.%zu.capacity", block_idx);
+ virTypedParamListAddULLong(params, entry->capacity,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_CAPACITY, block_idx);
if (entry->physical) {
- virTypedParamListAddULLong(params, entry->physical, "block.%zu.physical", block_idx);
+ virTypedParamListAddULLong(params, entry->physical,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_PHYSICAL, block_idx);
} else {
if (qemuDomainStorageUpdatePhysical(cfg, dom, src) == 0) {
- virTypedParamListAddULLong(params, src->physical, "block.%zu.physical", block_idx);
+ virTypedParamListAddULLong(params, src->physical,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_PHYSICAL, block_idx);
}
}
}
return;
if (entry->write_threshold)
- virTypedParamListAddULLong(params, entry->write_threshold, "block.%zu.threshold", recordnr);
+ virTypedParamListAddULLong(params, entry->write_threshold,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_THRESHOLD, recordnr);
}
if (!stats || !frontendname || !(en = virHashLookup(stats, frontendname)))
return;
- virTypedParamListAddULLong(par, en->rd_req, "block.%zu.rd.reqs", idx);
- virTypedParamListAddULLong(par, en->rd_bytes, "block.%zu.rd.bytes", idx);
- virTypedParamListAddULLong(par, en->rd_total_times, "block.%zu.rd.times", idx);
- virTypedParamListAddULLong(par, en->wr_req, "block.%zu.wr.reqs", idx);
- virTypedParamListAddULLong(par, en->wr_bytes, "block.%zu.wr.bytes", idx);
- virTypedParamListAddULLong(par, en->wr_total_times, "block.%zu.wr.times", idx);
- virTypedParamListAddULLong(par, en->flush_req, "block.%zu.fl.reqs", idx);
- virTypedParamListAddULLong(par, en->flush_total_times, "block.%zu.fl.times", idx);
+ virTypedParamListAddULLong(par, en->rd_req,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_REQS, idx);
+ virTypedParamListAddULLong(par, en->rd_bytes,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_BYTES, idx);
+ virTypedParamListAddULLong(par, en->rd_total_times,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_RD_TIMES, idx);
+ virTypedParamListAddULLong(par, en->wr_req,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_REQS, idx);
+ virTypedParamListAddULLong(par, en->wr_bytes,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_BYTES, idx);
+ virTypedParamListAddULLong(par, en->wr_total_times,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_WR_TIMES, idx);
+ virTypedParamListAddULLong(par, en->flush_req,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_FL_REQS, idx);
+ virTypedParamListAddULLong(par, en->flush_total_times,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_FL_TIMES, idx);
}
size_t recordnr,
virTypedParamList *params)
{
- virTypedParamListAddString(params, disk->dst, "block.%zu.name", recordnr);
+ virTypedParamListAddString(params, disk->dst,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_NAME, recordnr);
if (virStorageSourceIsLocalStorage(src) && src->path)
- virTypedParamListAddString(params, src->path, "block.%zu.path", recordnr);
+ virTypedParamListAddString(params, src->path,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_PATH, recordnr);
if (src->id)
- virTypedParamListAddUInt(params, src->id, "block.%zu.backingIndex", recordnr);
+ virTypedParamListAddUInt(params, src->id,
+ VIR_DOMAIN_STATS_BLOCK_PREFIX "%zu" VIR_DOMAIN_STATS_BLOCK_SUFFIX_BACKINGINDEX, recordnr);
}
&visited, visitBacking, cfg, dom);
}
- virTypedParamListAddUInt(params, visited, "block.count");
+ virTypedParamListAddUInt(params, visited,
+ VIR_DOMAIN_STATS_BLOCK_COUNT);
virTypedParamListConcat(params, &blockparams);
}