diff options
| author | chrislu <chris.lu@gmail.com> | 2023-01-16 12:40:11 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2023-01-16 12:40:11 -0800 |
| commit | 318c42a3f56acb04f0aff81d782cf69155abada8 (patch) | |
| tree | 3251d8ea8f1c83ac24338a405ee7686dc3a75dae | |
| parent | b930acc6701771a03f7bf5125f80fa0e820febb1 (diff) | |
| parent | 6ddc2e5d8e14276f4b450b29575e78cdc0979537 (diff) | |
| download | seaweedfs-csi-driver-318c42a3f56acb04f0aff81d782cf69155abada8.tar.xz seaweedfs-csi-driver-318c42a3f56acb04f0aff81d782cf69155abada8.zip | |
Merge branch 'master' of https://github.com/seaweedfs/seaweedfs-csi-driver
| -rw-r--r-- | cmd/seaweedfs-csi-driver/main.go | 4 | ||||
| -rw-r--r-- | pkg/driver/driver.go | 2 | ||||
| -rw-r--r-- | pkg/driver/mounter_seaweedfs.go | 102 |
3 files changed, 53 insertions, 55 deletions
diff --git a/cmd/seaweedfs-csi-driver/main.go b/cmd/seaweedfs-csi-driver/main.go index 8eedce3..99189d0 100644 --- a/cmd/seaweedfs-csi-driver/main.go +++ b/cmd/seaweedfs-csi-driver/main.go @@ -16,7 +16,7 @@ var ( nodeID = flag.String("nodeid", "", "node id") version = flag.Bool("version", false, "Print the version and exit.") concurrentWriters = flag.Int("concurrentWriters", 32, "limit concurrent goroutine writers if not 0") - cacheSizeMB = flag.Int("cacheCapacityMB", 0, "local file chunk cache capacity in MB") + cacheCapacityMB = flag.Int("cacheCapacityMB", 0, "local file chunk cache capacity in MB") cacheDir = flag.String("cacheDir", os.TempDir(), "local cache directory for file chunks and meta data") uidMap = flag.String("map.uid", "", "map local uid to uid on filer, comma-separated <local_uid>:<filer_uid>") gidMap = flag.String("map.gid", "", "map local gid to gid on filer, comma-separated <local_gid>:<filer_gid>") @@ -39,7 +39,7 @@ func main() { drv := driver.NewSeaweedFsDriver(*filer, *nodeID, *endpoint) drv.ConcurrentWriters = *concurrentWriters - drv.CacheSizeMB = *cacheSizeMB + drv.CacheCapacityMB = *cacheCapacityMB drv.CacheDir = *cacheDir drv.UidMap = *uidMap drv.GidMap = *gidMap diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 00ef2d9..47a55e0 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -39,7 +39,7 @@ type SeaweedFsDriver struct { filerIndex int grpcDialOption grpc.DialOption ConcurrentWriters int - CacheSizeMB int + CacheCapacityMB int CacheDir string UidMap string GidMap string diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index a82b10b..51adfdb 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -41,25 +41,6 @@ func newSeaweedFsMounter(volumeID string, path string, collection string, readOn }, nil } -func (seaweedFs *seaweedFsMounter) getOrDefaultContext(key string, defaultValue string) string { - v, ok := seaweedFs.volContext[key] - if ok { - return v - } - return defaultValue -} - -func (seaweedFs *seaweedFsMounter) getOrDefaultContextInt(key string, defaultValue int) int { - v := seaweedFs.getOrDefaultContext(key, "") - if v != "" { - iv, err := strconv.Atoi(v) - if err == nil { - return iv - } - } - return defaultValue -} - func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { glog.V(0).Infof("mounting %v %s to %s", seaweedFs.driver.filers, seaweedFs.path, target) @@ -68,55 +49,72 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { filers = append(filers, string(address)) } + // CacheDir should be always defined - we use temp dir in case it is not defined + // we need to use predictable cache path, because we need to clean it up on unstage + cacheDir := filepath.Join(seaweedFs.driver.CacheDir, seaweedFs.volumeID) + + // Final args args := []string{ "-logtostderr=true", "mount", "-dirAutoCreate=true", "-umask=000", fmt.Sprintf("-dir=%s", target), - fmt.Sprintf("-collection=%s", seaweedFs.collection), - fmt.Sprintf("-filer=%s", strings.Join(filers, ",")), - fmt.Sprintf("-filer.path=%s", seaweedFs.path), - fmt.Sprintf("-cacheCapacityMB=%d", seaweedFs.getOrDefaultContextInt("cacheSizeMB", seaweedFs.driver.CacheSizeMB)), fmt.Sprintf("-localSocket=%s", GetLocalSocket(seaweedFs.volumeID)), - } - - // came from https://github.com/seaweedfs/seaweedfs-csi-driver/pull/12 - // preferring explicit settings - // keeping this for backward compatibility - for arg, value := range seaweedFs.volContext { - switch arg { - case "map.uid": - args = append(args, fmt.Sprintf("-map.uid=%s", value)) - case "map.gid": - args = append(args, fmt.Sprintf("-map.gid=%s", value)) - case "replication": - args = append(args, fmt.Sprintf("-replication=%s", value)) - case "diskType": - args = append(args, fmt.Sprintf("-disk=%s", value)) - case "volumeCapacity": - capacityMB := parseVolumeCapacity(value) - args = append(args, fmt.Sprintf("-collectionQuotaMB=%d", capacityMB)) - } + fmt.Sprintf("-cacheDir=%s", cacheDir), } if seaweedFs.readOnly { args = append(args, "-readOnly") } - // CacheDir should be always defined - we use temp dir in case it is not defined - // we need to use predictable cache path, because we need to clean it up on unstage - cacheDir := filepath.Join(seaweedFs.driver.CacheDir, seaweedFs.volumeID) - args = append(args, fmt.Sprintf("-cacheDir=%s", cacheDir)) + // Handle volumeCapacity from controllerserver.go:51 + if value, ok := seaweedFs.volContext["volumeCapacity"]; ok{ + capacityMB := parseVolumeCapacity(value) + args = append(args, fmt.Sprintf("-collectionQuotaMB=%d", capacityMB)) + } - if cw := seaweedFs.getOrDefaultContextInt("concurrentWriters", seaweedFs.driver.ConcurrentWriters); cw > 0 { - args = append(args, fmt.Sprintf("-concurrentWriters=%d", cw)) + // Initial values for override-able args + argsMap := map[string]string { + "collection": seaweedFs.collection, + "filer": strings.Join(filers, ","), + "filer.path": seaweedFs.path, + "cacheCapacityMB": fmt.Sprint(seaweedFs.driver.CacheCapacityMB), + "concurrentWriters": fmt.Sprint(seaweedFs.driver.ConcurrentWriters), + "map.uid": seaweedFs.driver.UidMap, + "map.gid": seaweedFs.driver.GidMap, } - if uidMap := seaweedFs.getOrDefaultContext("uidMap", seaweedFs.driver.UidMap); uidMap != "" { - args = append(args, fmt.Sprintf("-map.uid=%s", uidMap)) + + // volContext-parameter -> mount-arg + parameterArgMap := map[string]string{ + "uidMap": "map.uid", + "gidMap": "map.gid", + "filerPath": "filer.path", + // volumeContext has "diskType", but mount-option is "disk", converting for backwards compatability + "diskType": "disk", + } + + // Merge volContext into argsMap with key-mapping + for arg, value := range seaweedFs.volContext { + if(arg == "volumeCapacity"){ // Ignore volumeCapacity, not the nicest solution like this :/ + continue + } + + // Check if key-mapping exists + newArg, ok := parameterArgMap[arg] + if(ok){ + arg = newArg + } + + // Write to args-map + argsMap[arg] = value } - if gidMap := seaweedFs.getOrDefaultContext("gidMap", seaweedFs.driver.GidMap); gidMap != "" { - args = append(args, fmt.Sprintf("-map.gid=%s", gidMap)) + + // Convert Args-Map to args + for arg, value := range argsMap{ + if(value != ""){ // ignore empty values + args = append(args, fmt.Sprintf("-%s=%s", arg, value)) + } } u, err := fuseMount(target, seaweedFsCmd, args) |
