From a62d21a398c17467aa91b91eca5e1730ce1934e6 Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Fri, 17 May 2019 11:50:54 +0800 Subject: [PATCH 1/2] fix guest on start failed no call task failed --- pkg/hostman/guestman/qemu-kvm.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/hostman/guestman/qemu-kvm.go b/pkg/hostman/guestman/qemu-kvm.go index 16aeaa6fa9..c46af7b971 100644 --- a/pkg/hostman/guestman/qemu-kvm.go +++ b/pkg/hostman/guestman/qemu-kvm.go @@ -273,7 +273,10 @@ func (s *SKVMGuestInstance) asyncScriptStart(ctx context.Context, params interfa return nil, nil } else { log.Infof("Async start server %s failed: %s!!!", s.GetName(), err) - timeutils2.AddTimeout(100*time.Millisecond, s.SyncStatus) + if ctx != nil && len(appctx.AppContextTaskId(ctx)) >= 0 { + hostutils.TaskFailed(ctx, fmt.Sprintf("Async start server failed: %s", err)) + } + s.SyncStatus() return nil, err } } @@ -750,10 +753,10 @@ func (s *SKVMGuestInstance) Stop() bool { } func (s *SKVMGuestInstance) scriptStart() error { - _, err := procutils.NewCommand("sh", s.GetStartScriptPath()).Run() + output, err := procutils.NewCommand("sh", s.GetStartScriptPath()).Run() if err != nil { s.scriptStop() - return err + return fmt.Errorf("Start VM Failed %s %s", output, err) } return nil } From 03aff2800fc062cb4b46d9650a95dd2ce5745147 Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Fri, 17 May 2019 14:28:40 +0800 Subject: [PATCH 2/2] fix live migrate --- pkg/hostman/guestman/guesttasks.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/hostman/guestman/guesttasks.go b/pkg/hostman/guestman/guesttasks.go index 9c3c0bab14..d4011bab62 100644 --- a/pkg/hostman/guestman/guesttasks.go +++ b/pkg/hostman/guestman/guesttasks.go @@ -364,9 +364,10 @@ func (s *SGuestLiveMigrateTask) startMigrate(string) { func (s *SGuestLiveMigrateTask) startMigrateStatusCheck(string) { s.c = make(chan struct{}) - for { + for s.c != nil { select { case <-s.c: // on c close + s.c = nil break case <-time.After(time.Second * 1): s.Monitor.GetMigrateStatus(s.onGetMigrateStatus)