diff --git a/internal/cephfs/mounter/kernel.go b/internal/cephfs/mounter/kernel.go index 09bc707f5b8..43a0207fbe6 100644 --- a/internal/cephfs/mounter/kernel.go +++ b/internal/cephfs/mounter/kernel.go @@ -72,24 +72,25 @@ func (m *kernelMounter) mountKernel( m.needsModprobe = false } + fsID, err := volOptions.GetFSID() + if err != nil { + return fmt.Errorf("failed to get fsID, stop mounting: %w", err) + } + args := []string{ "-t", "ceph", - fmt.Sprintf("%s:%s", volOptions.Monitors, volOptions.RootPath), + fmt.Sprintf("%s@%s.%s=%s", cr.ID, fsID, volOptions.FsName, volOptions.RootPath), mountPoint, } - optionsStr := fmt.Sprintf("name=%s,secretfile=%s", cr.ID, cr.KeyFile) - mdsNamespace := "" - if volOptions.FsName != "" { - mdsNamespace = "mds_namespace=" + volOptions.FsName - } - optionsStr = util.MountOptionsAdd(optionsStr, mdsNamespace, volOptions.KernelMountOptions, netDev) + optionsStr := fmt.Sprintf("mon_addr=%s,secretfile=%s", strings.ReplaceAll(volOptions.Monitors, ",", "/"), cr.KeyFile) + + optionsStr = util.MountOptionsAdd(optionsStr, volOptions.KernelMountOptions, netDev) args = append(args, "-o", optionsStr) var ( stderr string - err error ) if volOptions.NetNamespaceFilePath != "" { diff --git a/internal/cephfs/store/volumeoptions.go b/internal/cephfs/store/volumeoptions.go index 285b15ffcdb..fde90430a02 100644 --- a/internal/cephfs/store/volumeoptions.go +++ b/internal/cephfs/store/volumeoptions.go @@ -101,6 +101,19 @@ func (vo *VolumeOptions) Destroy() { } } +func (vo *VolumeOptions) GetFSID() (string, error) { + if vo.conn == nil { + return "", errors.New("cluster not connected yet") + } + + fsID, err := vo.conn.GetFSID() + if err != nil { + return "", err + } + + return fsID, nil +} + func validateNonEmptyField(field, fieldName string) error { if field == "" { return fmt.Errorf("parameter '%s' cannot be empty", fieldName)