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

[Xen-devel] [PATCH RFC 20/59] xenworker: Use libxl_domain_unpause rather than forking xl



From: George Dunlap <george.dunlap@xxxxxxxxxx>

Unpause is a time-sensitive operation; use libxl to unpause directly
rather than forking and execing xl for each VM.

Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
 libxl.go     | 14 ++++++++++++++
 xenworker.go | 12 ++----------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/libxl.go b/libxl.go
index 39e47ab..415de7f 100644
--- a/libxl.go
+++ b/libxl.go
@@ -114,3 +114,17 @@ func (Ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err 
error) {
        di.Domain_type = int32(cdi.domain_type)
        return
 }
+
+func (Ctx *Context) DomainUnpause(Id Domid) (err error) {
+       if Ctx.ctx == nil {
+               err = fmt.Errorf("Context not opened")
+               return
+       }
+
+       ret := C.libxl_domain_unpause(Ctx.ctx, C.uint32_t(Id))
+
+       if ret != 0 {
+               err = fmt.Errorf("libxl_domain_unpause failed: %d", ret)
+       }
+       return
+}
diff --git a/xenworker.go b/xenworker.go
index 31af35f..4077e77 100644
--- a/xenworker.go
+++ b/xenworker.go
@@ -232,16 +232,8 @@ func (w *XenWorker) Shutdown() {
 
 // FIXME: Return an error
 func (w *XenWorker) Process(report chan WorkerReport, done chan bool) {
-       mock := false
-       
-       // xl unpause [vmname]
-       args := []string{"xl", "unpause", w.vmname}
-       if mock {
-               args = append([]string{"echo"}, args...)
-       }
-       e := exec.Command(args[0], args[1:]...)
-
-       err := e.Run()
+       // // xl unpause [vmname]
+       err := xg.Ctx.DomainUnpause(Domid(w.domid))
        if err != nil {
                fmt.Printf("Error unpausing domain: %v\n", err)
                return
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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