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