diff --git a/pkg/config/config.go b/pkg/config/config.go index f13626f017..f510c0c43a 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -116,10 +116,10 @@ const ( DeleteDelayAtKey = "juicefs-delete-at" // default value - defaultMountPodCpuLimit = "2000m" - defaultMountPodMemLimit = "5Gi" - defaultMountPodCpuRequest = "1000m" - defaultMountPodMemRequest = "1Gi" + DefaultMountPodCpuLimit = "2000m" + DefaultMountPodMemLimit = "5Gi" + DefaultMountPodCpuRequest = "1000m" + DefaultMountPodMemRequest = "1Gi" ) var PodLocks [1024]sync.Mutex diff --git a/pkg/config/setting.go b/pkg/config/setting.go index 3058c9adad..cd0a7ed8ff 100644 --- a/pkg/config/setting.go +++ b/pkg/config/setting.go @@ -285,7 +285,7 @@ func ParseSetting(secrets, volCtx map[string]string, options []string, usePod bo memoryLimit := volCtx[MountPodMemLimitKey] cpuRequest := volCtx[MountPodCpuRequestKey] memoryRequest := volCtx[MountPodMemRequestKey] - jfsSetting.Resources, err = parsePodResources(cpuLimit, memoryLimit, cpuRequest, memoryRequest) + jfsSetting.Resources, err = ParsePodResources(cpuLimit, memoryLimit, cpuRequest, memoryRequest) if err != nil { klog.Errorf("Parse resource error: %v", err) return nil, err @@ -432,14 +432,14 @@ func parseYamlOrJson(source string, dst interface{}) error { return nil } -func parsePodResources(cpuLimit, memoryLimit, cpuRequest, memoryRequest string) (corev1.ResourceRequirements, error) { +func ParsePodResources(cpuLimit, memoryLimit, cpuRequest, memoryRequest string) (corev1.ResourceRequirements, error) { podLimit := map[corev1.ResourceName]resource.Quantity{} podRequest := map[corev1.ResourceName]resource.Quantity{} // set default value - podLimit[corev1.ResourceCPU] = resource.MustParse(defaultMountPodCpuLimit) - podLimit[corev1.ResourceMemory] = resource.MustParse(defaultMountPodMemLimit) - podRequest[corev1.ResourceCPU] = resource.MustParse(defaultMountPodCpuRequest) - podRequest[corev1.ResourceMemory] = resource.MustParse(defaultMountPodMemRequest) + podLimit[corev1.ResourceCPU] = resource.MustParse(DefaultMountPodCpuLimit) + podLimit[corev1.ResourceMemory] = resource.MustParse(DefaultMountPodMemLimit) + podRequest[corev1.ResourceCPU] = resource.MustParse(DefaultMountPodCpuRequest) + podRequest[corev1.ResourceMemory] = resource.MustParse(DefaultMountPodMemRequest) var err error if cpuLimit != "" { if podLimit[corev1.ResourceCPU], err = resource.ParseQuantity(cpuLimit); err != nil { @@ -470,12 +470,12 @@ func parsePodResources(cpuLimit, memoryLimit, cpuRequest, memoryRequest string) func getDefaultResource() corev1.ResourceRequirements { return corev1.ResourceRequirements{ Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse(defaultMountPodCpuLimit), - corev1.ResourceMemory: resource.MustParse(defaultMountPodMemLimit), + corev1.ResourceCPU: resource.MustParse(DefaultMountPodCpuLimit), + corev1.ResourceMemory: resource.MustParse(DefaultMountPodMemLimit), }, Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse(defaultMountPodCpuRequest), - corev1.ResourceMemory: resource.MustParse(defaultMountPodMemRequest), + corev1.ResourceCPU: resource.MustParse(DefaultMountPodCpuRequest), + corev1.ResourceMemory: resource.MustParse(DefaultMountPodMemRequest), }, } } diff --git a/pkg/juicefs/juicefs.go b/pkg/juicefs/juicefs.go index a2fd7212d0..9d2ec96d64 100644 --- a/pkg/juicefs/juicefs.go +++ b/pkg/juicefs/juicefs.go @@ -506,21 +506,26 @@ func (j *juicefs) validOptions(volumeId string, options []string, volCtx map[str if mountOption == "writeback" { klog.Warningf("writeback is not suitable in CSI, please do not use it. volumeId: %s", volumeId) } - if len(ops) == 2 && ops[0] == "buffer-size" && volCtx != nil { - if volCtx[config.MountPodMemLimitKey] != "" { - memLimit, err := resource.ParseQuantity(volCtx[config.MountPodMemLimitKey]) - memLimitByte := memLimit.Value() + if len(ops) == 2 && ops[0] == "buffer-size" { + rs := volCtx[config.MountPodMemLimitKey] + if rs == "" { + rs = config.DefaultMountPodMemLimit + } + memLimit, err := resource.ParseQuantity(rs) + if err != nil { + return []string{}, fmt.Errorf("invalid memory limit: %s", volCtx[config.MountPodMemLimitKey]) + } + memLimitByte := memLimit.Value() - // buffer-size is in MiB, turn to byte - bufSize, err := strconv.Atoi(ops[1]) - if err != nil { - return []string{}, fmt.Errorf("invalid mount option: %s", mountOption) - } - bufferSize := int64(bufSize) << 20 + // buffer-size is in MiB, turn to byte + bufSize, err := strconv.Atoi(ops[1]) + if err != nil { + return []string{}, fmt.Errorf("invalid mount option: %s", mountOption) + } + bufferSize := int64(bufSize) << 20 - if bufferSize > memLimitByte { - return []string{}, fmt.Errorf("buffer-size %s MiB is greater than pod memory limit %s", ops[1], memLimit.String()) - } + if bufferSize > memLimitByte { + return []string{}, fmt.Errorf("buffer-size %s MiB is greater than pod memory limit %s", ops[1], memLimit.String()) } } mountOptions = append(mountOptions, mountOption)