mirror of
https://github.com/clearlinux/docker.git
synced 2026-09-05 05:01:28 +00:00
Merge branch 'migrate-aufs-containers' into v0.7-rc3
Conflicts: runtime.go
This commit is contained in:
+35
-18
@@ -327,31 +327,48 @@ func (runtime *Runtime) restore() error {
|
||||
|
||||
// Perform a migration for aufs containers
|
||||
if !deviceSet.HasDevice(container.ID) {
|
||||
utils.Debugf("[migration] Begin migration of %s", container.ID)
|
||||
|
||||
image, err := runtime.graph.Get(container.Image)
|
||||
contents, err := ioutil.ReadDir(container.rwPath())
|
||||
if err != nil {
|
||||
utils.Debugf("[migratoin] Failed to get image %s", err)
|
||||
continue
|
||||
}
|
||||
if err := image.Mount(runtime, container.RootfsPath(), container.rwPath(), container.ID); err != nil {
|
||||
utils.Debugf("[migratoin] Failed to mount image %s", err)
|
||||
if !os.IsNotExist(err) {
|
||||
utils.Debugf("[migration] Error reading rw dir %s", err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
if err := image.applyLayer(container.rwPath(), container.RootfsPath()); err != nil {
|
||||
utils.Debugf("[migration] Failed to apply layer %s", err)
|
||||
}
|
||||
if len(contents) > 0 {
|
||||
utils.Debugf("[migration] Begin migration of %s", container.ID)
|
||||
|
||||
if err := image.Unmount(runtime, container.RootfsPath(), container.ID); err != nil {
|
||||
utils.Debugf("[migraton] Failed to unmount image %s", err)
|
||||
}
|
||||
image, err := runtime.graph.Get(container.Image)
|
||||
if err != nil {
|
||||
utils.Debugf("[migratoin] Failed to get image %s", err)
|
||||
continue
|
||||
}
|
||||
|
||||
if err := os.RemoveAll(container.rwPath()); err != nil {
|
||||
utils.Debugf("[migration] Failed to remove rw dir %s", err)
|
||||
}
|
||||
unmount := func() {
|
||||
if err := image.Unmount(runtime, container.RootfsPath(), container.ID); err != nil {
|
||||
utils.Debugf("[migraton] Failed to unmount image %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
utils.Debugf("[migration] End migration of %s", container.ID)
|
||||
if err := image.Mount(runtime, container.RootfsPath(), container.rwPath(), container.ID); err != nil {
|
||||
utils.Debugf("[migratoin] Failed to mount image %s", err)
|
||||
continue
|
||||
}
|
||||
|
||||
if err := image.applyLayer(container.rwPath(), container.RootfsPath()); err != nil {
|
||||
utils.Debugf("[migration] Failed to apply layer %s", err)
|
||||
unmount()
|
||||
continue
|
||||
}
|
||||
|
||||
unmount()
|
||||
|
||||
if err := os.RemoveAll(container.rwPath()); err != nil {
|
||||
utils.Debugf("[migration] Failed to remove rw dir %s", err)
|
||||
}
|
||||
|
||||
utils.Debugf("[migration] End migration of %s", container.ID)
|
||||
}
|
||||
}
|
||||
|
||||
if err := runtime.Register(container); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user