From fc89bcb4caa891db1a1feef2bb6d542ef1417bbd Mon Sep 17 00:00:00 2001 From: Bharath Thiruveedula Date: Sat, 9 May 2015 14:31:07 +0530 Subject: [PATCH] Removing extra locks for Pause and Unpause functions Signed-off-by: Bharath Thiruveedula Upstream-commit: 8c1ef5ceafcba2476693db7f5db39300ad2e7f88 Component: engine --- components/engine/daemon/container.go | 36 +++++++++++++++++++++------ components/engine/daemon/daemon.go | 16 ------------ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/components/engine/daemon/container.go b/components/engine/daemon/container.go index 1174a7071d..7896d46be6 100644 --- a/components/engine/daemon/container.go +++ b/components/engine/daemon/container.go @@ -766,23 +766,45 @@ func (container *Container) killPossiblyDeadProcess(sig int) error { } func (container *Container) Pause() error { - if container.IsPaused() { + container.Lock() + defer container.Unlock() + + // We cannot Pause the container which is already paused + if container.Paused { return fmt.Errorf("Container %s is already paused", container.ID) } - if !container.IsRunning() { + + // We cannot Pause the container which is not running + if !container.Running { return fmt.Errorf("Container %s is not running", container.ID) } - return container.daemon.Pause(container) + + if err := container.daemon.execDriver.Pause(container.command); err != nil { + return err + } + container.Paused = true + return nil } func (container *Container) Unpause() error { - if !container.IsPaused() { - return fmt.Errorf("Container %s is not paused", container.ID) + container.Lock() + defer container.Unlock() + + // We cannot unpause the container which is not paused + if !container.Paused { + return fmt.Errorf("Container %s is not paused, so what", container.ID) } - if !container.IsRunning() { + + // We cannot unpause the container which is not running + if !container.Running { return fmt.Errorf("Container %s is not running", container.ID) } - return container.daemon.Unpause(container) + + if err := container.daemon.execDriver.Unpause(container.command); err != nil { + return err + } + container.Paused = false + return nil } func (container *Container) Kill() error { diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go index 96364f9608..2a582be5e8 100644 --- a/components/engine/daemon/daemon.go +++ b/components/engine/daemon/daemon.go @@ -1004,22 +1004,6 @@ func (daemon *Daemon) Run(c *Container, pipes *execdriver.Pipes, startCallback e return daemon.execDriver.Run(c.command, pipes, startCallback) } -func (daemon *Daemon) Pause(c *Container) error { - if err := daemon.execDriver.Pause(c.command); err != nil { - return err - } - c.SetPaused() - return nil -} - -func (daemon *Daemon) Unpause(c *Container) error { - if err := daemon.execDriver.Unpause(c.command); err != nil { - return err - } - c.SetUnpaused() - return nil -} - func (daemon *Daemon) Kill(c *Container, sig int) error { return daemon.execDriver.Kill(c.command, sig) }