Display holder information in info iothreads to aid manual debugging.
Reviewed-by: Markus Armbruster <[email protected]>
Signed-off-by: Zhang Chen <[email protected]>
---
monitor/hmp-cmds.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index 91701ddf33..d7dd24d951 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -246,11 +246,31 @@ void hmp_info_iothreads(MonitorHMP *hmp, const QDict
*qdict)
IOThreadInfoList *info_list = qmp_query_iothreads(NULL);
IOThreadInfoList *info;
IOThreadInfo *value;
+ IOThreadHolderList *h;
for (info = info_list; info; info = info->next) {
value = info->value;
monitor_hmp_printf(hmp, "%s:\n", value->id);
monitor_hmp_printf(hmp, " thread_id=%" PRId64 "\n", value->thread_id);
+ monitor_hmp_printf(hmp, " holders=");
+ for (h = value->holders; h; h = h->next) {
+ IOThreadHolder *holder = h->value;
+
+ switch (holder->type) {
+ case IO_THREAD_HOLDER_KIND_BLOCK_EXPORT:
+ monitor_hmp_printf(hmp, "[block-export: %s]",
+ holder->u.block_export.export_id);
+ break;
+ case IO_THREAD_HOLDER_KIND_QOM_OBJECT:
+ monitor_hmp_printf(hmp, "[qom-path: %s]",
+ holder->u.qom_object.qom_path);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+ }
+ monitor_hmp_printf(hmp, "\n");
+
monitor_hmp_printf(hmp, " poll-max-ns=%" PRId64 "\n",
value->poll_max_ns);
monitor_hmp_printf(hmp, " poll-grow=%" PRId64 "\n", value->poll_grow);
monitor_hmp_printf(hmp, " poll-shrink=%" PRId64 "\n",
value->poll_shrink);
--
2.43.0