ctdb-protocol: Add marshalling for control DB_VACUUM
authorMartin Schwenke <martin@meltin.net>
Tue, 30 Jul 2019 00:52:05 +0000 (10:52 +1000)
committerAmitay Isaacs <amitay@samba.org>
Thu, 24 Oct 2019 04:06:43 +0000 (04:06 +0000)
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/protocol/protocol_api.h
ctdb/protocol/protocol_client.c
ctdb/protocol/protocol_control.c
ctdb/protocol/protocol_debug.c
ctdb/tests/UNIT/cunit/protocol_test_101.sh
ctdb/tests/src/protocol_common_ctdb.c
ctdb/tests/src/protocol_ctdb_test.c

index cf4c4635dd46b2563ea8f764dd1808967dbdca9e..c2cd4a762897029d3a9b2890a9fe117989e80c25 100644 (file)
@@ -607,6 +607,10 @@ 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);
 
+void ctdb_req_control_db_vacuum(struct ctdb_req_control *request,
+                               struct ctdb_db_vacuum *db_vacuum);
+int ctdb_reply_control_db_vacuum(struct ctdb_reply_control *reply);
+
 /* From protocol/protocol_debug.c */
 
 void ctdb_packet_print(uint8_t *buf, size_t buflen, FILE *fp);
index 09909d39e58c8a78229783c6009dcab1ff7c2dbb..6c5180d6d6d39a3c265e25bee073f1609042f060 100644 (file)
@@ -2361,3 +2361,27 @@ int ctdb_reply_control_vacuum_fetch(struct ctdb_reply_control *reply)
 
        return reply->status;
 }
+
+/* CTDB_CONTROL_DB_VACUUM */
+
+void ctdb_req_control_db_vacuum(struct ctdb_req_control *request,
+                               struct ctdb_db_vacuum *db_vacuum)
+{
+       request->opcode = CTDB_CONTROL_DB_VACUUM;
+       request->pad = 0;
+       request->srvid = 0;
+       request->client_id = 0;
+       request->flags = 0;
+
+       request->rdata.opcode = CTDB_CONTROL_DB_VACUUM;
+       request->rdata.data.db_vacuum = db_vacuum;
+}
+
+int ctdb_reply_control_db_vacuum(struct ctdb_reply_control *reply)
+{
+       if (reply->rdata.opcode != CTDB_CONTROL_DB_VACUUM) {
+               return EPROTO;
+       }
+
+       return reply->status;
+}
index 1cc985a71a7d4edf004e0e722e84ba9aed9619a7..a25c9b1cfe0ae40bb1820f07570155b292cb0cd5 100644 (file)
@@ -411,6 +411,10 @@ static size_t ctdb_req_control_data_len(struct ctdb_req_control_data *cd)
        case CTDB_CONTROL_VACUUM_FETCH:
                len = ctdb_rec_buffer_len(cd->data.recbuf);
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               len = ctdb_db_vacuum_len(cd->data.db_vacuum);
+               break;
        }
 
        return len;
@@ -690,6 +694,10 @@ static void ctdb_req_control_data_push(struct ctdb_req_control_data *cd,
        case CTDB_CONTROL_VACUUM_FETCH:
                ctdb_rec_buffer_push(cd->data.recbuf, buf, &np);
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               ctdb_db_vacuum_push(cd->data.db_vacuum, buf, &np);
+               break;
        }
 
        *npush = np;
@@ -1019,6 +1027,14 @@ static int ctdb_req_control_data_pull(uint8_t *buf, size_t buflen,
                ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx,
                                           &cd->data.recbuf, &np);
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               ret = ctdb_db_vacuum_pull(buf,
+                                         buflen,
+                                         mem_ctx,
+                                         &cd->data.db_vacuum,
+                                         &np);
+               break;
        }
 
        if (ret != 0) {
@@ -1379,6 +1395,9 @@ static size_t ctdb_reply_control_data_len(struct ctdb_reply_control_data *cd)
 
        case CTDB_CONTROL_VACUUM_FETCH:
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               break;
        }
 
        return len;
@@ -1536,6 +1555,9 @@ static void ctdb_reply_control_data_push(struct ctdb_reply_control_data *cd,
 
        case CTDB_CONTROL_VACUUM_FETCH:
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               break;
        }
 
        *npush = np;
@@ -1723,6 +1745,9 @@ static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen,
 
        case CTDB_CONTROL_VACUUM_FETCH:
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               break;
        }
 
        if (ret != 0) {
index 97903ea98f4a728cdd6e5ecedcf40f4c25479da2..3fe78b131620dc764127d071133176ffe919413f 100644 (file)
@@ -243,6 +243,7 @@ static void ctdb_opcode_print(uint32_t opcode, FILE *fp)
                { CTDB_CONTROL_TUNNEL_REGISTER, "TUNNEL_REGISTER" },
                { CTDB_CONTROL_TUNNEL_DEREGISTER, "TUNNEL_DEREGISTER" },
                { CTDB_CONTROL_VACUUM_FETCH, "VACUUM_FETCH" },
+               { CTDB_CONTROL_DB_VACUUM, "DB_VACUUM" },
                { MAP_END, "" },
        };
 
index a0bf9d08754ed09499cf1414b9a29d827ca88328..6b07dc017bac8abdd6178b04274ec85f990987ee 100755 (executable)
@@ -2,7 +2,7 @@
 
 . "${TEST_SCRIPTS_DIR}/unit.sh"
 
-last_control=154
+last_control=155
 
 generate_control_output ()
 {
index b02976b5d67f27f947d28a7035a4a6f0fc2bf627..6989010cd6f2ac3316ed5f2c3836fe3e53cd5e46 100644 (file)
@@ -594,6 +594,12 @@ void fill_ctdb_req_control_data(TALLOC_CTX *mem_ctx,
                assert(cd->data.recbuf != NULL);
                fill_ctdb_rec_buffer(mem_ctx, cd->data.recbuf);
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               cd->data.db_vacuum = talloc(mem_ctx, struct ctdb_db_vacuum);
+               assert(cd->data.db_vacuum != NULL);
+               fill_ctdb_db_vacuum(mem_ctx, cd->data.db_vacuum);
+               break;
        }
 }
 
@@ -984,6 +990,10 @@ void verify_ctdb_req_control_data(struct ctdb_req_control_data *cd,
        case CTDB_CONTROL_VACUUM_FETCH:
                verify_ctdb_rec_buffer(cd->data.recbuf, cd2->data.recbuf);
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               verify_ctdb_db_vacuum(cd->data.db_vacuum, cd2->data.db_vacuum);
+               break;
        }
 }
 
@@ -1381,6 +1391,8 @@ void fill_ctdb_reply_control_data(TALLOC_CTX *mem_ctx,
        case CTDB_CONTROL_VACUUM_FETCH:
                break;
 
+       case CTDB_CONTROL_DB_VACUUM:
+               break;
        }
 }
 
@@ -1718,6 +1730,9 @@ void verify_ctdb_reply_control_data(struct ctdb_reply_control_data *cd,
 
        case CTDB_CONTROL_VACUUM_FETCH:
                break;
+
+       case CTDB_CONTROL_DB_VACUUM:
+               break;
        }
 }
 
index 3ebf15dff6cbabaa08af789e47f703163e519ce4..b13cd5491d1ea3f97836a6e1ab8105abbe6df2f7 100644 (file)
@@ -284,7 +284,7 @@ PROTOCOL_CTDB4_TEST(struct ctdb_req_dmaster, ctdb_req_dmaster,
 PROTOCOL_CTDB4_TEST(struct ctdb_reply_dmaster, ctdb_reply_dmaster,
                        CTDB_REPLY_DMASTER);
 
-#define NUM_CONTROLS   155
+#define NUM_CONTROLS   156
 
 PROTOCOL_CTDB2_TEST(struct ctdb_req_control_data, ctdb_req_control_data);
 PROTOCOL_CTDB2_TEST(struct ctdb_reply_control_data, ctdb_reply_control_data);