ctdb-protocol: Add marshalling for new control VACUUM_FETCH
authorAmitay Isaacs <amitay@gmail.com>
Thu, 15 Feb 2018 00:57:44 +0000 (11:57 +1100)
committerAmitay Isaacs <amitay@samba.org>
Thu, 24 Oct 2019 04:06:42 +0000 (04:06 +0000)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/protocol/protocol_api.h
ctdb/protocol/protocol_client.c
ctdb/protocol/protocol_control.c
ctdb/protocol/protocol_debug.c

index 6104c10e7b5a269ff914cd894d3897e47ae68f72..cf4c4635dd46b2563ea8f764dd1808967dbdca9e 100644 (file)
@@ -603,6 +603,10 @@ void ctdb_req_control_tunnel_deregister(struct ctdb_req_control *request,
                                        uint64_t tunnel_id);
 int ctdb_reply_control_tunnel_deregister(struct ctdb_reply_control *reply);
 
+void ctdb_req_control_vacuum_fetch(struct ctdb_req_control *request,
+                                  struct ctdb_rec_buffer *recbuf);
+int ctdb_reply_control_vacuum_fetch(struct ctdb_reply_control *reply);
+
 /* From protocol/protocol_debug.c */
 
 void ctdb_packet_print(uint8_t *buf, size_t buflen, FILE *fp);
index 2617c7a3d9f0628ff688cabc5a78fb7b9255da6f..09909d39e58c8a78229783c6009dcab1ff7c2dbb 100644 (file)
@@ -2337,3 +2337,27 @@ int ctdb_reply_control_tunnel_deregister(struct ctdb_reply_control *reply)
 
        return reply->status;
 }
+
+/* CTDB_CONTROL_VACUUM_FETCH */
+
+void ctdb_req_control_vacuum_fetch(struct ctdb_req_control *request,
+                                  struct ctdb_rec_buffer *recbuf)
+{
+       request->opcode = CTDB_CONTROL_VACUUM_FETCH;
+       request->pad = 0;
+       request->srvid = 0;
+       request->client_id = 0;
+       request->flags = 0;
+
+       request->rdata.opcode = CTDB_CONTROL_VACUUM_FETCH;
+       request->rdata.data.recbuf = recbuf;
+}
+
+int ctdb_reply_control_vacuum_fetch(struct ctdb_reply_control *reply)
+{
+       if (reply->rdata.opcode != CTDB_CONTROL_VACUUM_FETCH) {
+               return EPROTO;
+       }
+
+       return reply->status;
+}
index b2d17611108a1e0b346a6336ee2b7e1596034583..1cc985a71a7d4edf004e0e722e84ba9aed9619a7 100644 (file)
@@ -407,6 +407,10 @@ static size_t ctdb_req_control_data_len(struct ctdb_req_control_data *cd)
 
        case CTDB_CONTROL_TUNNEL_DEREGISTER:
                break;
+
+       case CTDB_CONTROL_VACUUM_FETCH:
+               len = ctdb_rec_buffer_len(cd->data.recbuf);
+               break;
        }
 
        return len;
@@ -682,6 +686,10 @@ static void ctdb_req_control_data_push(struct ctdb_req_control_data *cd,
        case CTDB_CONTROL_CHECK_PID_SRVID:
                ctdb_pid_srvid_push(cd->data.pid_srvid, buf, &np);
                break;
+
+       case CTDB_CONTROL_VACUUM_FETCH:
+               ctdb_rec_buffer_push(cd->data.recbuf, buf, &np);
+               break;
        }
 
        *npush = np;
@@ -1006,6 +1014,11 @@ static int ctdb_req_control_data_pull(uint8_t *buf, size_t buflen,
                ret = ctdb_pid_srvid_pull(buf, buflen, mem_ctx,
                                          &cd->data.pid_srvid, &np);
                break;
+
+       case CTDB_CONTROL_VACUUM_FETCH:
+               ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx,
+                                          &cd->data.recbuf, &np);
+               break;
        }
 
        if (ret != 0) {
@@ -1363,6 +1376,9 @@ static size_t ctdb_reply_control_data_len(struct ctdb_reply_control_data *cd)
 
        case CTDB_CONTROL_TUNNEL_DEREGISTER:
                break;
+
+       case CTDB_CONTROL_VACUUM_FETCH:
+               break;
        }
 
        return len;
@@ -1517,6 +1533,9 @@ static void ctdb_reply_control_data_push(struct ctdb_reply_control_data *cd,
 
        case CTDB_CONTROL_CHECK_PID_SRVID:
                break;
+
+       case CTDB_CONTROL_VACUUM_FETCH:
+               break;
        }
 
        *npush = np;
@@ -1701,6 +1720,9 @@ static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen,
 
        case CTDB_CONTROL_CHECK_PID_SRVID:
                break;
+
+       case CTDB_CONTROL_VACUUM_FETCH:
+               break;
        }
 
        if (ret != 0) {
index a34f5a86947edf06ed412abd589cda0f5cd1101a..97903ea98f4a728cdd6e5ecedcf40f4c25479da2 100644 (file)
@@ -242,6 +242,7 @@ static void ctdb_opcode_print(uint32_t opcode, FILE *fp)
                { CTDB_CONTROL_CHECK_PID_SRVID, "CHECK_PID_SRVID" },
                { CTDB_CONTROL_TUNNEL_REGISTER, "TUNNEL_REGISTER" },
                { CTDB_CONTROL_TUNNEL_DEREGISTER, "TUNNEL_DEREGISTER" },
+               { CTDB_CONTROL_VACUUM_FETCH, "VACUUM_FETCH" },
                { MAP_END, "" },
        };