Browse code

Persist pause state to disk to support container live restore

Signed-off-by: Lei Jitang <leijitang@huawei.com>

Lei Jitang authored on 2016/08/19 18:12:01
Showing 2 changed files
... ...
@@ -210,7 +210,6 @@ func (s *State) SetExitCode(ec int) {
210 210
 func (s *State) SetRunning(pid int, initial bool) {
211 211
 	s.error = ""
212 212
 	s.Running = true
213
-	s.Paused = false
214 213
 	s.Restarting = false
215 214
 	s.exitCode = 0
216 215
 	s.Pid = pid
... ...
@@ -99,11 +99,17 @@ func (daemon *Daemon) StateChanged(id string, e libcontainerd.StateInfo) error {
99 99
 	case libcontainerd.StatePause:
100 100
 		// Container is already locked in this case
101 101
 		c.Paused = true
102
+		if err := c.ToDisk(); err != nil {
103
+			return err
104
+		}
102 105
 		daemon.updateHealthMonitor(c)
103 106
 		daemon.LogContainerEvent(c, "pause")
104 107
 	case libcontainerd.StateResume:
105 108
 		// Container is already locked in this case
106 109
 		c.Paused = false
110
+		if err := c.ToDisk(); err != nil {
111
+			return err
112
+		}
107 113
 		daemon.updateHealthMonitor(c)
108 114
 		daemon.LogContainerEvent(c, "unpause")
109 115
 	}