package native import ( "fmt" "os" "os/exec" "strings" "github.com/Sirupsen/logrus" "github.com/opencontainers/runc/libcontainer/configs" ) func genTmpfsPremountCmd(tmpDir string, fullDest string, dest string) []configs.Command { var premount []configs.Command tarPath, err := exec.LookPath("tar") if err != nil { logrus.Warn("tar command is not available for tmpfs mount: %s", err) return premount } if _, err = exec.LookPath("rm"); err != nil { logrus.Warn("rm command is not available for tmpfs mount: %s", err) return premount } tarFile := fmt.Sprintf("%s/%s.tar", tmpDir, strings.Replace(dest, "/", "_", -1)) if _, err := os.Stat(fullDest); err == nil { premount = append(premount, configs.Command{ Path: tarPath, Args: []string{"-cf", tarFile, "-C", fullDest, "."}, }) } return premount } func genTmpfsPostmountCmd(tmpDir string, fullDest string, dest string) []configs.Command { var postmount []configs.Command tarPath, err := exec.LookPath("tar") if err != nil { return postmount } rmPath, err := exec.LookPath("rm") if err != nil { return postmount } if _, err := os.Stat(fullDest); os.IsNotExist(err) { return postmount } tarFile := fmt.Sprintf("%s/%s.tar", tmpDir, strings.Replace(dest, "/", "_", -1)) postmount = append(postmount, configs.Command{ Path: tarPath, Args: []string{"-xf", tarFile, "-C", fullDest, "."}, }) return append(postmount, configs.Command{ Path: rmPath, Args: []string{"-f", tarFile}, }) }