From 2428b279071b440e5f007b2099a9b6555585b6b6 Mon Sep 17 00:00:00 2001
From: Vitaliy Filippov <vitalif@yourcmc.ru>
Date: Fri, 16 Jul 2021 16:29:44 +0300
Subject: [PATCH] Use goofys binary

---
 pkg/mounter/goofys.go | 42 ++++++++----------------------------------
 1 file changed, 8 insertions(+), 34 deletions(-)

diff --git a/pkg/mounter/goofys.go b/pkg/mounter/goofys.go
index 3fab96d..f73ba08 100644
--- a/pkg/mounter/goofys.go
+++ b/pkg/mounter/goofys.go
@@ -4,12 +4,8 @@ import (
 	"fmt"
 	"os"
 	"path"
-	"strings"
-
-	"context"
 
 	"github.com/ctrox/csi-s3/pkg/s3"
-	goofysApi "github.com/kahing/goofys/api"
 )
 
 const (
@@ -50,37 +46,15 @@ func (goofys *goofysMounter) Unstage(stageTarget string) error {
 }
 
 func (goofys *goofysMounter) Mount(source string, target string) error {
-	mountOptions := make(map[string]string)
-	for _, opt := range goofys.meta.MountOptions {
-		s := 0
-		if len(opt) >= 2 && opt[0] == '-' && opt[1] == byte('-') {
-			s = 2
-		}
-		p := strings.Index(opt, "=")
-		if p > 0 {
-			mountOptions[string(opt[s : p])] = string(opt[p : ])
-		} else {
-			mountOptions[string(opt[s : ])] = ""
-		}
+	fullPath := fmt.Sprintf("%s:%s", goofys.meta.BucketName, path.Join(goofys.meta.Prefix, goofys.meta.FSPath))
+	args := []string{
+		"--endpoint", goofys.endpoint,
+		"--region", goofys.region,
+		"-o", "allow_other",
+		fullPath, target,
 	}
-	mountOptions["allow_other"] = ""
-	goofysCfg := &goofysApi.Config{
-		MountPoint: target,
-		Endpoint:   goofys.endpoint,
-		Region:     goofys.region,
-		DirMode:    0755,
-		FileMode:   0644,
-		MountOptions: mountOptions,
-	}
-
+	args = append(args, goofys.meta.MountOptions...)
 	os.Setenv("AWS_ACCESS_KEY_ID", goofys.accessKeyID)
 	os.Setenv("AWS_SECRET_ACCESS_KEY", goofys.secretAccessKey)
-	fullPath := fmt.Sprintf("%s:%s", goofys.meta.BucketName, path.Join(goofys.meta.Prefix, goofys.meta.FSPath))
-
-	_, _, err := goofysApi.Mount(context.Background(), fullPath, goofysCfg)
-
-	if err != nil {
-		return fmt.Errorf("Error mounting via goofys: %s", err)
-	}
-	return nil
+	return fuseMount(target, goofysCmd, args)
 }