[PATCH qemu-server 5/8] qmeventd: add block write threshold event handling

Tiago Sousa joao.sousa at eurotux.com
Fri Oct 17 13:25:30 CEST 2025


Signed-off-by: Tiago Sousa <joao.sousa at eurotux.com>
---
 src/qmeventd/qmeventd.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/qmeventd/qmeventd.c b/src/qmeventd/qmeventd.c
index 1d9eb74a..7bae13f9 100644
--- a/src/qmeventd/qmeventd.c
+++ b/src/qmeventd/qmeventd.c
@@ -43,7 +43,7 @@
 
 #define DEFAULT_KILL_TIMEOUT 60
 
-static int verbose = 0;
+static int verbose = 1;
 static int kill_timeout = DEFAULT_KILL_TIMEOUT;
 static int epoll_fd = 0;
 static const char *progname;
@@ -209,6 +209,25 @@ void handle_qmp_event(struct Client *client, struct json_object *obj) {
 
         // check if a backup is running and kill QEMU process if not
         terminate_check(client);
+    } else if (!strcmp(json_object_get_string(event), "BLOCK_WRITE_THRESHOLD")) {
+        struct json_object *data;
+        struct json_object *nodename;
+        if (json_object_object_get_ex(obj, "data", &data) &&
+            json_object_object_get_ex(data, "node-name", &nodename)) {
+
+            // needs concurrency control
+            char extend_queue_path[] = "/etc/pve/extend-queue";
+            FILE *p_extend_queue = fopen(extend_queue_path, "a");
+            if (p_extend_queue == NULL) {
+                VERBOSE_PRINT(
+                    "%s: Couldn't open extend queue file %s", client->qemu.vmid, extend_queue_path
+                );
+            } else {
+                const char *nodename_string = json_object_get_string(nodename);
+                fprintf(p_extend_queue, "%s: %s\n", client->qemu.vmid, nodename_string);
+            }
+            fclose(p_extend_queue);
+        }
     }
 }
 
-- 
2.47.3




More information about the pve-devel mailing list