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

[Libvir] [patch 3/9] Dont share virConnect->handle between xen and qemu



Don't share virConnect->handle with the xen hypervisor socket so
that we can have a qemud connection open at the same time as a
xen hypervisor connection.

Signed-off-by: Mark McLoughlin <markmc redhat com>

Index: libvirt-foo/src/internal.h
===================================================================
--- libvirt-foo.orig/src/internal.h	2007-01-23 14:39:45.000000000 +0000
+++ libvirt-foo.orig/src/internal.h	2007-01-23 14:39:45.000000000 +0000
@@ -117,6 +117,8 @@ struct _virConnect {
     struct sockaddr_un addr_un;     /* the unix address */
     struct sockaddr_in addr_in;     /* the inet address */
 
+    int qemud_fd;           /* connection to qemud */
+
     /* error stuff */
     virError err;           /* the last error */
     virErrorFunc handler;   /* associated handlet */
Index: libvirt-foo/src/qemu_internal.c
===================================================================
--- libvirt-foo.orig/src/qemu_internal.c	2007-02-14 01:40:09.000000000 +0000
+++ libvirt-foo.orig/src/qemu_internal.c	2007-02-14 01:40:09.000000000 +0000
@@ -244,7 +244,7 @@ qemuOpenClientUNIX(virConnectPtr conn, c
         return (-1);
     }
 
-    conn->handle = fd;
+    conn->qemud_fd = fd;
 
     return (0);
 }
@@ -269,7 +269,7 @@ static int qemuProcessRequest(virConnect
 
     /* Block sending entire outgoing packet */
     while (outLeft) {
-        int got = write(conn->handle, out+outDone, outLeft);
+        int got = write(conn->qemud_fd, out+outDone, outLeft);
         if (got < 0) {
             return -1;
         }
@@ -279,7 +279,7 @@ static int qemuProcessRequest(virConnect
 
     /* Block waiting for header to come back */
     while (inLeft) {
-        int done = read(conn->handle, in+inGot, inLeft);
+        int done = read(conn->qemud_fd, in+inGot, inLeft);
         if (done <= 0) {
             return -1;
         }
@@ -307,7 +307,7 @@ static int qemuProcessRequest(virConnect
     /* Now block reading in body */
     inLeft = reply->header.dataSize;
     while (inLeft) {
-        int done = read(conn->handle, in+inGot, inLeft);
+        int done = read(conn->qemud_fd, in+inGot, inLeft);
         if (done <= 0) {
             return -1;
         }
@@ -389,11 +389,11 @@ static int qemuOpen(virConnectPtr conn,
         return -1;
     }
 
-    conn->handle = -1;
+    conn->qemud_fd = -1;
     qemuOpenConnection(conn, uri, flags & VIR_DRV_OPEN_RO ? 1 : 0);
     xmlFreeURI(uri);
 
-    if (conn->handle < 0) {
+    if (conn->qemud_fd < 0) {
         return -1;
     }
 
@@ -402,9 +402,9 @@ static int qemuOpen(virConnectPtr conn,
 
 
 static int qemuClose  (virConnectPtr conn) {
-    if (conn->handle != -1) {
-        close(conn->handle);
-        conn->handle = -1;
+    if (conn->qemud_fd != -1) {
+        close(conn->qemud_fd);
+        conn->qemud_fd = -1;
     }
     return 0;
 }
Index: libvirt-foo/src/hash.c
===================================================================
--- libvirt-foo.orig/src/hash.c	2007-01-23 14:39:45.000000000 +0000
+++ libvirt-foo.orig/src/hash.c	2007-01-23 14:39:45.000000000 +0000
@@ -655,6 +655,8 @@ virGetConnect(void) {
     memset(ret, 0, sizeof(virConnect));
     ret->magic = VIR_CONNECT_MAGIC;
     ret->nb_drivers = 0;
+    ret->handle = -1;
+    ret->qemud_fd = -1;
     ret->domains = virHashCreate(20);
     if (ret->domains == NULL)
         goto failed;

-- 


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