public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Daniel Kral <d.kral@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH cluster 11/12] pmxcfs: server: do not forward qb_ipc_request_header to s1_msg_handle_request
Date: Mon, 24 Aug 2026 10:56:10 +0200	[thread overview]
Message-ID: <20260824085610.111211-13-d.kral@proxmox.com> (raw)
In-Reply-To: <20260824085610.111211-2-d.kral@proxmox.com>

request_id and request_size is already passed to
s1_msg_handle_request(), which therefore do not need the information
from struct qb_ipc_request_header passed on to them.

This is done in preparation of an upcoming patch, where the IPC server
has to handle two different types of request headers to negotiate what
responses the client can handle. The request headers do have different
sizes and therefore an union cannot be used here.

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/pmxcfs/server.c | 24 +++++++++---------------
 1 file changed, 9 insertions(+), 15 deletions(-)

diff --git a/src/pmxcfs/server.c b/src/pmxcfs/server.c
index c53d4e0..46ad381 100644
--- a/src/pmxcfs/server.c
+++ b/src/pmxcfs/server.c
@@ -56,18 +56,15 @@ static GCond server_stopped_cond;
 static GMutex server_started_mutex;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
     char name[256];
 } cfs_status_update_request_header_t;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
     char name[256];
     char nodename[256];
 } cfs_status_get_request_header_t;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
     uint8_t priority;
     uint8_t ident_len;
     uint8_t tag_len;
@@ -75,7 +72,6 @@ typedef struct {
 } cfs_log_msg_request_header_t;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
     uint32_t max_entries;
     uint32_t res1;
     uint32_t res2;
@@ -83,21 +79,18 @@ typedef struct {
 } cfs_log_get_request_header_t;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
     uint32_t vmid;
     char property[];
 } cfs_guest_config_propery_get_request_header_t;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
     uint32_t vmid;
     uint8_t num_props;
     char props[]; /* list of \0 terminated properties */
 } cfs_guest_config_properties_get_request_header_t;
 
 typedef struct {
-    struct qb_ipc_request_header req_header;
-    char token[];
+    char *token;
 } cfs_verify_token_request_header_t;
 
 struct s1_context {
@@ -164,7 +157,7 @@ static int32_t s1_msg_handle_request(
     int32_t result = -ECHRNG;
     if (request_id == CFS_IPC_GET_FS_VERSION) {
 
-        if (request_size != sizeof(struct qb_ipc_request_header)) {
+        if (request_size != 0) {
             result = -EINVAL;
         } else {
             result = cfs_create_version_msg(outbuf);
@@ -172,7 +165,7 @@ static int32_t s1_msg_handle_request(
 
     } else if (request_id == CFS_IPC_GET_CLUSTER_INFO) {
 
-        if (request_size != sizeof(struct qb_ipc_request_header)) {
+        if (request_size != 0) {
             result = -EINVAL;
         } else {
             result = cfs_create_memberlist_msg(outbuf);
@@ -180,7 +173,7 @@ static int32_t s1_msg_handle_request(
 
     } else if (request_id == CFS_IPC_GET_GUEST_LIST) {
 
-        if (request_size != sizeof(struct qb_ipc_request_header)) {
+        if (request_size != 0) {
             result = -EINVAL;
         } else {
             result = cfs_create_vmlist_msg(outbuf);
@@ -220,14 +213,14 @@ static int32_t s1_msg_handle_request(
         }
     } else if (request_id == CFS_IPC_GET_CONFIG) {
 
-        int pathlen = request_size - sizeof(struct qb_ipc_request_header);
+        int pathlen = request_size;
 
         if (pathlen <= 0) {
             result = -EINVAL;
         } else {
             /* make sure path is 0 terminated */
             ((char *)data)[request_size - 1] = 0;
-            char *path = (char *)data + sizeof(struct qb_ipc_request_header);
+            char *path = (char *)data;
 
             if (ctx->read_only && path_is_private(path)) {
                 result = -EPERM;
@@ -294,7 +287,7 @@ static int32_t s1_msg_handle_request(
         }
     } else if (request_id == CFS_IPC_GET_RRD_DUMP) {
 
-        if (request_size != sizeof(struct qb_ipc_request_header)) {
+        if (request_size != 0) {
             result = -EINVAL;
         } else {
             cfs_rrd_dump(outbuf);
@@ -484,7 +477,8 @@ static int32_t s1_msg_process_fn(qb_ipcs_connection_t *c, void *data, size_t siz
     }
 
     int32_t request_id = req_pt->id;
-    int32_t request_size = req_pt->size;
+    int32_t request_size = req_pt->size - sizeof(struct qb_ipc_request_header);
+    data = (uint8_t *)data + sizeof(struct qb_ipc_request_header);
     cfs_debug("process msg:%d, size:%d", request_id, request_size);
 
     int32_t result = s1_msg_handle_request(ctx, data, request_id, request_size);
-- 
2.47.3





  parent reply	other threads:[~2026-08-24  8:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24  8:55 [PATCH-SERIES cluster 00/12] addressing large ipc message responses Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 01/12] buildsys: include pmxcfs tidy target in top-level tidy target Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 02/12] run make tidy Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 03/12] pmxcfs: server: simplify non-negative ipc message result responses Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 04/12] pmxcfs: server: simplify ipc message response logic Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 05/12] pmxcfs: server: report responses exceeding the maximum message size Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 06/12] pmxcfs: server: remove unnecessary local variable alignment attributes Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 07/12] pmxcfs: server: move message handling to separate function Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 08/12] pmxcfs: server: move message response sending " Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 09/12] pmxcfs: server: simplify message response size calculation Daniel Kral
2026-08-24  8:56 ` [PATCH cluster 10/12] ipcc: move the data pointer initialization up Daniel Kral
2026-08-24  8:56 ` Daniel Kral [this message]
2026-08-24  8:56 ` [RFC PATCH cluster 12/12] allow large ipc responses by sending the response message in chunks Daniel Kral

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260824085610.111211-13-d.kral@proxmox.com \
    --to=d.kral@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal