mirror of https://github.com/docker/docs.git
Merge pull request #3789 from pwaller/issue-3674
Fix for #3674 Can't `rm` containers when disk full
This commit is contained in:
commit
ed12818f99
1
AUTHORS
1
AUTHORS
|
@ -231,6 +231,7 @@ Paul Morie <pmorie@gmail.com>
|
||||||
Paul Nasrat <pnasrat@gmail.com>
|
Paul Nasrat <pnasrat@gmail.com>
|
||||||
Paul <paul9869@gmail.com>
|
Paul <paul9869@gmail.com>
|
||||||
Peter Braden <peterbraden@peterbraden.co.uk>
|
Peter Braden <peterbraden@peterbraden.co.uk>
|
||||||
|
Peter Waller <p@pwaller.net>
|
||||||
Phil Spitler <pspitler@gmail.com>
|
Phil Spitler <pspitler@gmail.com>
|
||||||
Pierre-Alain RIVIERE <pariviere@ippon.fr>
|
Pierre-Alain RIVIERE <pariviere@ippon.fr>
|
||||||
Piotr Bogdan <ppbogdan@gmail.com>
|
Piotr Bogdan <ppbogdan@gmail.com>
|
||||||
|
|
|
@ -192,20 +192,17 @@ func (a *Driver) Remove(id string) error {
|
||||||
"diff",
|
"diff",
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the dirs atomically
|
// Atomically remove each directory in turn by first moving it out of the
|
||||||
|
// way (so that docker doesn't find it anymore) before doing removal of
|
||||||
|
// the whole tree.
|
||||||
for _, p := range tmpDirs {
|
for _, p := range tmpDirs {
|
||||||
// We need to use a temp dir in the same dir as the driver so Rename
|
|
||||||
// does not fall back to the slow copy if /tmp and the driver dir
|
|
||||||
// are on different devices
|
|
||||||
tmp := path.Join(a.rootPath(), "tmp", p, id)
|
|
||||||
if err := os.MkdirAll(tmp, 0755); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
realPath := path.Join(a.rootPath(), p, id)
|
realPath := path.Join(a.rootPath(), p, id)
|
||||||
if err := os.Rename(realPath, tmp); err != nil && !os.IsNotExist(err) {
|
tmpPath := path.Join(a.rootPath(), p, fmt.Sprintf("%s-removing", id))
|
||||||
|
if err := os.Rename(realPath, tmpPath); err != nil && !os.IsNotExist(err) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(tmp)
|
defer os.RemoveAll(tmpPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the layers file for the id
|
// Remove the layers file for the id
|
||||||
|
|
Loading…
Reference in New Issue