ctdb-client: Add a function to get db open flags
authorAmitay Isaacs <amitay@gmail.com>
Fri, 23 Jun 2017 06:11:53 +0000 (16:11 +1000)
committerMartin Schwenke <martins@samba.org>
Mon, 26 Jun 2017 13:47:24 +0000 (15:47 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/client/ctdb_client.c
ctdb/include/ctdb_client.h

index 6adf87894abc5d1552515cd4c051385ea3c51ff5..d80a04d33c70188e4962e0bfbdf95752cc795a08 100644 (file)
@@ -2078,6 +2078,39 @@ int ctdb_statistics_reset(struct ctdb_context *ctdb, uint32_t destnode)
        return 0;
 }
 
+/*
+ * Get db open flags
+ */
+int ctdb_ctrl_db_open_flags(struct ctdb_context *ctdb, uint32_t db_id,
+                           int *tdb_flags)
+{
+       TDB_DATA indata, outdata;
+       int ret;
+       int32_t res;
+
+       indata.dptr = (uint8_t *)&db_id;
+       indata.dsize = sizeof(db_id);
+
+       ret = ctdb_control(ctdb, CTDB_CURRENT_NODE, 0,
+                          CTDB_CONTROL_DB_OPEN_FLAGS, 0, indata,
+                          ctdb, &outdata, &res, NULL, NULL);
+       if (ret != 0 || res != 0) {
+               D_ERR("ctdb control for db open flags failed\n");
+               return  -1;
+       }
+
+       if (outdata.dsize != sizeof(int32_t)) {
+               D_ERR(__location__ " expected %zi bytes, received %zi bytes\n",
+                     sizeof(int32_t), outdata.dsize);
+               talloc_free(outdata.dptr);
+               return -1;
+       }
+
+       *tdb_flags = *(int32_t *)outdata.dptr;
+       talloc_free(outdata.dptr);
+       return 0;
+}
+
 /*
   attach to a specific database - client call
 */
index 94b9be4d804d1206dfa88620c0f04dbaf4a8d930..d4fd77142ecfde6fe7bbbccf89db04126504cdca 100644 (file)
@@ -270,6 +270,9 @@ int ctdb_statistics_reset(struct ctdb_context *ctdb, uint32_t destnode);
 /*
   attach to a ctdb database
 */
+int ctdb_ctrl_db_open_flags(struct ctdb_context *ctdb, uint32_t db_id,
+                           int *tdb_flags);
+
 struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb,
                                    struct timeval timeout,
                                    const char *name,