From b697db52c8336430584ff7744bf2d6c89af343dc Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Mon, 24 Feb 2014 16:35:11 -0800 Subject: [PATCH] Fix restore container by nspid Docker-DCO-1.1-Signed-off-by: Michael Crosby (github: crosbymichael) Upstream-commit: 9f03fd76b578f2d9d00b0a1bd76b776e20a7d681 Component: engine --- .../engine/execdriver/namespaces/driver.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/components/engine/execdriver/namespaces/driver.go b/components/engine/execdriver/namespaces/driver.go index 8143b39d90..d948594059 100644 --- a/components/engine/execdriver/namespaces/driver.go +++ b/components/engine/execdriver/namespaces/driver.go @@ -112,7 +112,24 @@ func (d *driver) Kill(p *execdriver.Command, sig int) error { } func (d *driver) Restore(c *execdriver.Command) error { - return ErrNotSupported + var ( + nspid int + p = filepath.Join(d.root, "containers", c.ID, "root", ".nspid") + ) + f, err := os.Open(p) + if err != nil { + return err + } + defer f.Close() + if _, err := fmt.Fscanf(f, "%d", &nspid); err != nil { + return err + } + proc, err := os.FindProcess(nspid) + if err != nil { + return err + } + _, err = proc.Wait() + return err } func (d *driver) Info(id string) execdriver.Info {