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

[xen staging] tools/xenstored: Introduce lu_get_connection() and use it



commit 3ce271ef535cfe3c0839fdea56f33abf5fdbf23c
Author:     Julien Grall <jgrall@xxxxxxxxxx>
AuthorDate: Thu Jun 24 09:02:59 2021 +0100
Commit:     Julien Grall <jgrall@xxxxxxxxxx>
CommitDate: Thu Jun 24 09:02:59 2021 +0100

    tools/xenstored: Introduce lu_get_connection() and use it
    
    At the moment, dump_state_buffered_data() is taking two connections
    in parameters (one is the connection to dump, the other is the
    connection used to request LU). The naming doesn't help to
    distinguish (c vs conn) them and this already lead to several mistake
    while modifying the function.
    
    To remove the confusion, introduce an help lu_get_connection() that
    will return the connection used to request LU and use it
    in place of the existing parameter.
    
    Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>
    Reviewed-by: Luca Fancellu <luca.fancellu@xxxxxxx>
    Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
---
 tools/xenstore/xenstored_control.c | 13 ++++++++++++-
 tools/xenstore/xenstored_control.h |  2 ++
 tools/xenstore/xenstored_core.c    |  7 +++----
 tools/xenstore/xenstored_core.h    |  1 -
 tools/xenstore/xenstored_domain.c  |  6 +++---
 tools/xenstore/xenstored_domain.h  |  2 +-
 6 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/tools/xenstore/xenstored_control.c 
b/tools/xenstore/xenstored_control.c
index 0d57f9f940..d08a2b9614 100644
--- a/tools/xenstore/xenstored_control.c
+++ b/tools/xenstore/xenstored_control.c
@@ -104,6 +104,17 @@ static const char *lu_begin(struct connection *conn)
 
        return NULL;
 }
+
+struct connection *lu_get_connection(void)
+{
+       return lu_status ? lu_status->conn : NULL;
+}
+
+#else
+struct connection *lu_get_connection(void)
+{
+       return NULL;
+}
 #endif
 
 struct cmd_s {
@@ -516,7 +527,7 @@ static const char *lu_dump_state(const void *ctx, struct 
connection *conn)
        ret = dump_state_global(fp);
        if (ret)
                goto out;
-       ret = dump_state_connections(fp, conn);
+       ret = dump_state_connections(fp);
        if (ret)
                goto out;
        ret = dump_state_special_nodes(fp);
diff --git a/tools/xenstore/xenstored_control.h 
b/tools/xenstore/xenstored_control.h
index aac61f0590..6842b8d887 100644
--- a/tools/xenstore/xenstored_control.h
+++ b/tools/xenstore/xenstored_control.h
@@ -18,3 +18,5 @@
 
 int do_control(struct connection *conn, struct buffered_data *in);
 void lu_read_state(void);
+
+struct connection *lu_get_connection(void);
diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 883a1a582a..607187361d 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -2369,14 +2369,13 @@ const char *dump_state_global(FILE *fp)
 
 /* Called twice: first with fp == NULL to get length, then for writing data. */
 const char *dump_state_buffered_data(FILE *fp, const struct connection *c,
-                                    const struct connection *conn,
                                     struct xs_state_connection *sc)
 {
        unsigned int len = 0, used;
        struct buffered_data *out, *in = c->in;
        bool partial = true;
 
-       if (in && c != conn) {
+       if (in && c != lu_get_connection()) {
                len = in->inhdr ? in->used : sizeof(in->hdr);
                if (fp && fwrite(&in->hdr, len, 1, fp) != 1)
                        return "Dump read data error";
@@ -2416,8 +2415,8 @@ const char *dump_state_buffered_data(FILE *fp, const 
struct connection *c,
        }
 
        /* Add "OK" for live-update command. */
-       if (c == conn) {
-               struct xsd_sockmsg msg = conn->in->hdr.msg;
+       if (c == lu_get_connection()) {
+               struct xsd_sockmsg msg = c->in->hdr.msg;
 
                msg.len = sizeof("OK");
                if (fp && fwrite(&msg, sizeof(msg), 1, fp) != 1)
diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_core.h
index bb36111ecc..89ce155e75 100644
--- a/tools/xenstore/xenstored_core.h
+++ b/tools/xenstore/xenstored_core.h
@@ -269,7 +269,6 @@ void set_tdb_key(const char *name, TDB_DATA *key);
 
 const char *dump_state_global(FILE *fp);
 const char *dump_state_buffered_data(FILE *fp, const struct connection *c,
-                                    const struct connection *conn,
                                     struct xs_state_connection *sc);
 const char *dump_state_nodes(FILE *fp, const void *ctx);
 const char *dump_state_node_perms(FILE *fp, const struct xs_permissions *perms,
diff --git a/tools/xenstore/xenstored_domain.c 
b/tools/xenstore/xenstored_domain.c
index 322b0dbca4..6d8d29cbe4 100644
--- a/tools/xenstore/xenstored_domain.c
+++ b/tools/xenstore/xenstored_domain.c
@@ -1183,7 +1183,7 @@ void wrl_apply_debit_trans_commit(struct connection *conn)
        wrl_apply_debit_actual(conn->domain);
 }
 
-const char *dump_state_connections(FILE *fp, struct connection *conn)
+const char *dump_state_connections(FILE *fp)
 {
        const char *ret = NULL;
        unsigned int conn_id = 1;
@@ -1209,7 +1209,7 @@ const char *dump_state_connections(FILE *fp, struct 
connection *conn)
                        sc.spec.socket_fd = c->fd;
                }
 
-               ret = dump_state_buffered_data(NULL, c, conn, &sc);
+               ret = dump_state_buffered_data(NULL, c, &sc);
                if (ret)
                        return ret;
                head.length += sc.data_in_len + sc.data_out_len;
@@ -1219,7 +1219,7 @@ const char *dump_state_connections(FILE *fp, struct 
connection *conn)
                if (fwrite(&sc, offsetof(struct xs_state_connection, data),
                           1, fp) != 1)
                        return "Dump connection state error";
-               ret = dump_state_buffered_data(fp, c, conn, NULL);
+               ret = dump_state_buffered_data(fp, c, NULL);
                if (ret)
                        return ret;
                ret = dump_state_align(fp);
diff --git a/tools/xenstore/xenstored_domain.h 
b/tools/xenstore/xenstored_domain.h
index cc5147d7e7..62ee471ea6 100644
--- a/tools/xenstore/xenstored_domain.h
+++ b/tools/xenstore/xenstored_domain.h
@@ -101,7 +101,7 @@ void wrl_log_periodic(struct wrl_timestampt now);
 void wrl_apply_debit_direct(struct connection *conn);
 void wrl_apply_debit_trans_commit(struct connection *conn);
 
-const char *dump_state_connections(FILE *fp, struct connection *conn);
+const char *dump_state_connections(FILE *fp);
 const char *dump_state_special_nodes(FILE *fp);
 
 void read_state_connection(const void *ctx, const void *state);
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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