github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/client/allocdir/task_dir_linux.go (about) 1 // +build !android 2 3 package allocdir 4 5 import ( 6 "fmt" 7 "os" 8 "path/filepath" 9 10 multierror "github.com/hashicorp/go-multierror" 11 ) 12 13 // unmountSpecialDirs unmounts the dev and proc file system from the chroot. No 14 // error is returned if the directories do not exist or have already been 15 // unmounted. 16 func (t *TaskDir) unmountSpecialDirs() error { 17 errs := new(multierror.Error) 18 dev := filepath.Join(t.Dir, "dev") 19 if pathExists(dev) { 20 if err := unlinkDir(dev); err != nil { 21 errs = multierror.Append(errs, fmt.Errorf("Failed to unmount dev %q: %v", dev, err)) 22 } else if err := os.RemoveAll(dev); err != nil { 23 errs = multierror.Append(errs, fmt.Errorf("Failed to delete dev directory %q: %v", dev, err)) 24 } 25 } 26 27 // Unmount proc. 28 proc := filepath.Join(t.Dir, "proc") 29 if pathExists(proc) { 30 if err := unlinkDir(proc); err != nil { 31 errs = multierror.Append(errs, fmt.Errorf("Failed to unmount proc %q: %v", proc, err)) 32 } else if err := os.RemoveAll(proc); err != nil { 33 errs = multierror.Append(errs, fmt.Errorf("Failed to delete proc directory %q: %v", dev, err)) 34 } 35 } 36 37 return errs.ErrorOrNil() 38 }