Call temp mounts and unmount in containerd server

Fixes #2004

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby
2018-02-07 11:16:15 -05:00
parent bc974a7a32
commit b2ec177bb2
8 changed files with 78 additions and 77 deletions

47
mount/temp_unix.go Normal file
View File

@@ -0,0 +1,47 @@
// +build !windows
package mount
import (
"os"
"path/filepath"
"sort"
"strings"
)
// SetTempMountLocation sets the temporary mount location
func SetTempMountLocation(root string) error {
root, err := filepath.Abs(root)
if err != nil {
return err
}
if err := os.MkdirAll(root, 0700); err != nil {
return err
}
tempMountLocation = root
return nil
}
// CleanupTempMounts all temp mounts and remove the directories
func CleanupTempMounts(flags int) error {
mounts, err := Self()
if err != nil {
return err
}
var toUnmount []string
for _, m := range mounts {
if strings.HasPrefix(m.Mountpoint, tempMountLocation) {
toUnmount = append(toUnmount, m.Mountpoint)
}
}
sort.Sort(sort.Reverse(sort.StringSlice(toUnmount)))
for _, path := range toUnmount {
if err := UnmountAll(path, flags); err != nil {
return err
}
if err := os.Remove(path); err != nil {
return err
}
}
return nil
}