Merge pull request #32525 from cpuguy83/ensure_unmount_plugin

Make sure plugin rootfs is unmounted on upgrade
Upstream-commit: aa92df71b2d8e64ac9ddb2109b6ff0ddfcd0e556
Component: engine
This commit is contained in:
Vincent Demeester
2017-04-12 18:08:06 +02:00
committed by GitHub
2 changed files with 10 additions and 2 deletions

View File

@ -648,7 +648,7 @@ func (pm *Manager) Remove(name string, config *types.PluginRmConfig) error {
func getMounts(root string) ([]string, error) {
infos, err := mount.GetMounts()
if err != nil {
return nil, errors.Wrap(err, "failed to read mount table while performing recursive unmount")
return nil, errors.Wrap(err, "failed to read mount table")
}
var mounts []string

View File

@ -199,9 +199,17 @@ func (pm *Manager) upgradePlugin(p *v2.Plugin, configDigest digest.Digest, blobs
pdir := filepath.Join(pm.config.Root, p.PluginObj.ID)
orig := filepath.Join(pdir, "rootfs")
// Make sure nothing is mounted
// This could happen if the plugin was disabled with `-f` with active mounts.
// If there is anything in `orig` is still mounted, this should error out.
if err := recursiveUnmount(orig); err != nil {
return err
}
backup := orig + "-old"
if err := os.Rename(orig, backup); err != nil {
return err
return errors.Wrap(err, "error backing up plugin data before upgrade")
}
defer func() {