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

[xen stable-4.19] tools/libxs: Track whether we're using a socket or file



commit c991b585c47177bf96afc1aa55fb8cb2a7dd20c5
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Mon Nov 25 11:53:35 2024 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Nov 25 11:53:35 2024 +0100

    tools/libxs: Track whether we're using a socket or file
    
    It will determine whether to use writev() or sendmsg().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jason Andryuk <jason.andryuk@xxxxxxx>
    master commit: 046efe529e82b8b999d8453d4ea49cb817c3f9b5
    master date: 2024-07-23 15:11:27 +0100
---
 tools/libs/store/xs.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/libs/store/xs.c b/tools/libs/store/xs.c
index 4d24bf7b0f..ae1f80d5e6 100644
--- a/tools/libs/store/xs.c
+++ b/tools/libs/store/xs.c
@@ -65,6 +65,9 @@ struct xs_stored_msg {
 struct xs_handle {
        /* Communications channel to xenstore daemon. */
        int fd;
+
+       bool is_socket; /* is @fd a file or socket? */
+
        Xentoolcore__Active_Handle tc_ah; /* for restrict */
 
        /*
@@ -140,6 +143,7 @@ static void *read_thread(void *arg);
 
 struct xs_handle {
        int fd;
+       bool is_socket; /* is @fd a file or socket? */
        Xentoolcore__Active_Handle tc_ah; /* for restrict */
        XEN_TAILQ_HEAD(, struct xs_stored_msg) reply_list;
        XEN_TAILQ_HEAD(, struct xs_stored_msg) watch_list;
@@ -300,7 +304,9 @@ static struct xs_handle *get_handle(const char *connect_to)
        if (stat(connect_to, &buf) != 0)
                goto err;
 
-       if (S_ISSOCK(buf.st_mode))
+       h->is_socket = S_ISSOCK(buf.st_mode);
+
+       if (h->is_socket)
                h->fd = get_socket(connect_to);
        else
                h->fd = get_dev(connect_to);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.19



 


Rackspace

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