[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 06/25] tools/xenstore: switch get_acc_data() to use name instead of key



Eliminate further TDB_DATA usage by switching get_acc_data() and
get_acc_domid() from a TDB key to the name of the node in the data base
as a parameter.

This is in preparation to replace TDB with a more simple data storage.

Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx>
---
 tools/xenstore/xenstored_core.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 2aa3d37c18..dab09b5236 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -566,19 +566,20 @@ void set_tdb_key(const char *name, TDB_DATA *key)
        key->dsize = strlen(name);
 }
 
-static void get_acc_data(TDB_DATA *key, struct node_account_data *acc)
+static void get_acc_data(const char *name, struct node_account_data *acc)
 {
-       TDB_DATA old_data;
+       TDB_DATA key, old_data;
        struct xs_tdb_record_hdr *hdr;
 
        if (acc->memory < 0) {
-               old_data = tdb_fetch(tdb_ctx, *key);
+               set_tdb_key(name, &key);
+               old_data = tdb_fetch(tdb_ctx, key);
                /* No check for error, as the node might not exist. */
                if (old_data.dptr == NULL) {
                        acc->memory = 0;
                } else {
-                       trace_tdb("read %s size %zu\n", key->dptr,
-                                 old_data.dsize + key->dsize);
+                       trace_tdb("read %s size %zu\n", name,
+                                 old_data.dsize + key.dsize);
                        hdr = (void *)old_data.dptr;
                        acc->memory = old_data.dsize;
                        acc->domid = hdr->perms[0].id;
@@ -593,11 +594,10 @@ static void get_acc_data(TDB_DATA *key, struct 
node_account_data *acc)
  * count prepended (e.g. 123/local/domain/...). So testing for the node's
  * key not to start with "/" or "@" is sufficient.
  */
-static unsigned int get_acc_domid(struct connection *conn, TDB_DATA *key,
+static unsigned int get_acc_domid(struct connection *conn, const char *name,
                                  unsigned int domid)
 {
-       return (!conn || key->dptr[0] == '/' || key->dptr[0] == '@')
-              ? domid : conn->id;
+       return (!conn || name[0] == '/' || name[0] == '@') ? domid : conn->id;
 }
 
 int db_write(struct connection *conn, const char *db_name, void *data,
@@ -618,9 +618,9 @@ int db_write(struct connection *conn, const char *db_name, 
void *data,
        else
                old_acc = *acc;
 
-       get_acc_data(&key, &old_acc);
-       old_domid = get_acc_domid(conn, &key, old_acc.domid);
-       new_domid = get_acc_domid(conn, &key, hdr->perms[0].id);
+       get_acc_data(db_name, &old_acc);
+       old_domid = get_acc_domid(conn, db_name, old_acc.domid);
+       new_domid = get_acc_domid(conn, db_name, hdr->perms[0].id);
 
        /*
         * Don't check for ENOENT, as we want to be able to switch orphaned
@@ -675,7 +675,7 @@ int db_delete(struct connection *conn, const char *name,
                acc->memory = -1;
        }
 
-       get_acc_data(&key, acc);
+       get_acc_data(name, acc);
 
        if (tdb_delete(tdb_ctx, key)) {
                errno = EIO;
@@ -684,7 +684,7 @@ int db_delete(struct connection *conn, const char *name,
        trace_tdb("delete %s\n", name);
 
        if (acc->memory) {
-               domid = get_acc_domid(conn, &key, acc->domid);
+               domid = get_acc_domid(conn, name, acc->domid);
                domain_memory_add_nochk(conn, domid, -acc->memory - key.dsize);
        }
 
-- 
2.35.3




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.