|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 04/11] tools/xenstore: rename do_tdb_delete() and change parameter type
Rename do_tdb_delete() to db_delete() and replace the key parameter
with db_name specifying the name of the node in the data base.
This is in preparation to replace TDB with a more simple data storage.
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
tools/xenstore/xenstored_core.c | 31 ++++++++++++--------------
tools/xenstore/xenstored_core.h | 5 +++--
tools/xenstore/xenstored_transaction.c | 18 ++++++---------
3 files changed, 24 insertions(+), 30 deletions(-)
diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 239f8c6bc4..a2454ad24d 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -657,28 +657,31 @@ int do_tdb_write(struct connection *conn, TDB_DATA *key,
TDB_DATA *data,
return 0;
}
-int do_tdb_delete(struct connection *conn, TDB_DATA *key,
- struct node_account_data *acc)
+int db_delete(struct connection *conn, const char *name,
+ struct node_account_data *acc)
{
struct node_account_data tmp_acc;
unsigned int domid;
+ TDB_DATA key;
+
+ set_tdb_key(name, &key);
if (!acc) {
acc = &tmp_acc;
acc->memory = -1;
}
- get_acc_data(key, acc);
+ get_acc_data(&key, acc);
- if (tdb_delete(tdb_ctx, *key)) {
+ if (tdb_delete(tdb_ctx, key)) {
errno = EIO;
return errno;
}
- trace_tdb("delete %s\n", key->dptr);
+ trace_tdb("delete %s\n", name);
if (acc->memory) {
- domid = get_acc_domid(conn, key, acc->domid);
- domain_memory_add_nochk(conn, domid, -acc->memory - key->dsize);
+ domid = get_acc_domid(conn, &key, acc->domid);
+ domain_memory_add_nochk(conn, domid, -acc->memory - key.dsize);
}
return 0;
@@ -1449,13 +1452,10 @@ nomem:
static void destroy_node_rm(struct connection *conn, struct node *node)
{
- TDB_DATA key;
-
if (streq(node->name, "/"))
corrupt(NULL, "Destroying root node!");
- set_tdb_key(node->db_name, &key);
- do_tdb_delete(conn, &key, &node->acc);
+ db_delete(conn, node->db_name, &node->acc);
}
static int destroy_node(struct connection *conn, struct node *node)
@@ -1646,7 +1646,6 @@ static int delnode_sub(const void *ctx, struct connection
*conn,
bool watch_exact;
int ret;
const char *db_name;
- TDB_DATA key;
/* Any error here will probably be repeated for all following calls. */
ret = access_node(conn, node, NODE_ACCESS_DELETE, &db_name);
@@ -1657,8 +1656,7 @@ static int delnode_sub(const void *ctx, struct connection
*conn,
return WALK_TREE_ERROR_STOP;
/* In case of error stop the walk. */
- set_tdb_key(db_name, &key);
- if (!ret && do_tdb_delete(conn, &key, &node->acc))
+ if (!ret && db_delete(conn, db_name, &node->acc))
return WALK_TREE_ERROR_STOP;
/*
@@ -2483,9 +2481,8 @@ static int clean_store_(TDB_CONTEXT *tdb, TDB_DATA key,
TDB_DATA val,
}
if (!hashtable_search(reachable, name)) {
log("clean_store: '%s' is orphaned!", name);
- if (recovery) {
- do_tdb_delete(NULL, &key, NULL);
- }
+ if (recovery)
+ db_delete(NULL, name, NULL);
}
talloc_free(name);
diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_core.h
index f7cb035f26..7fc6d73e5a 100644
--- a/tools/xenstore/xenstored_core.h
+++ b/tools/xenstore/xenstored_core.h
@@ -358,11 +358,12 @@ extern xengnttab_handle **xgt_handle;
int remember_string(struct hashtable *hash, const char *str);
+/* Data base access functions. */
void set_tdb_key(const char *name, TDB_DATA *key);
int do_tdb_write(struct connection *conn, TDB_DATA *key, TDB_DATA *data,
struct node_account_data *acc, int flag, bool no_quota_check);
-int do_tdb_delete(struct connection *conn, TDB_DATA *key,
- struct node_account_data *acc);
+int db_delete(struct connection *conn, const char *name,
+ struct node_account_data *acc);
void conn_free_buffered_data(struct connection *conn);
diff --git a/tools/xenstore/xenstored_transaction.c
b/tools/xenstore/xenstored_transaction.c
index 1646c07040..bf173f3d1d 100644
--- a/tools/xenstore/xenstored_transaction.c
+++ b/tools/xenstore/xenstored_transaction.c
@@ -385,8 +385,7 @@ static int finalize_transaction(struct connection *conn,
/* Entries for unmodified nodes can be removed early. */
if (!i->modified) {
if (i->ta_node) {
- set_tdb_key(i->trans_name, &ta_key);
- if (do_tdb_delete(conn, &ta_key, NULL))
+ if (db_delete(conn, i->trans_name, NULL))
return EIO;
}
list_del(&i->list);
@@ -395,21 +394,21 @@ static int finalize_transaction(struct connection *conn,
}
while ((i = list_top(&trans->accessed, struct accessed_node, list))) {
- set_tdb_key(i->node, &key);
if (i->ta_node) {
set_tdb_key(i->trans_name, &ta_key);
data = tdb_fetch(tdb_ctx, ta_key);
if (data.dptr) {
- trace_tdb("read %s size %zu\n", ta_key.dptr,
+ trace_tdb("read %s size %zu\n", i->trans_name,
ta_key.dsize + data.dsize);
hdr = (void *)data.dptr;
hdr->generation = ++generation;
flag = (i->generation == NO_GENERATION)
? NODE_CREATE : NODE_MODIFY;
+ set_tdb_key(i->node, &key);
*is_corrupt |= do_tdb_write(conn, &key, &data,
NULL, flag, true);
talloc_free(data.dptr);
- if (do_tdb_delete(conn, &ta_key, NULL))
+ if (db_delete(conn, i->trans_name, NULL))
*is_corrupt = true;
} else {
*is_corrupt = true;
@@ -422,7 +421,7 @@ static int finalize_transaction(struct connection *conn,
*/
*is_corrupt |= (i->generation == NO_GENERATION)
? false
- : do_tdb_delete(conn, &key, NULL);
+ : db_delete(conn, i->node, NULL);
}
if (i->fire_watch)
fire_watches(conn, trans, i->node, NULL, i->watch_exact,
@@ -439,15 +438,12 @@ static int destroy_transaction(void *_transaction)
{
struct transaction *trans = _transaction;
struct accessed_node *i;
- TDB_DATA key;
wrl_ntransactions--;
trace_destroy(trans, "transaction");
while ((i = list_top(&trans->accessed, struct accessed_node, list))) {
- if (i->ta_node) {
- set_tdb_key(i->trans_name, &key);
- do_tdb_delete(trans->conn, &key, NULL);
- }
+ if (i->ta_node)
+ db_delete(trans->conn, i->trans_name, NULL);
list_del(&i->list);
talloc_free(i);
}
--
2.35.3
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |