From 21d1d640e2591e063781674006e39e4137247dbf Mon Sep 17 00:00:00 2001 From: mageekchiu Date: Sat, 18 Jan 2025 02:34:17 +0800 Subject: [PATCH 1/3] cephfs: upgrading mount syntax The old syntax is almost deprecated,and there are reasons to upgrade it - old syntax is lack of fsid(critical for debugging and observability) - mds_namespace is deprecated, it might be inappropriate to continue using it - kernel will try new syntax first and then the old one, it's a waste Signed-off-by: mageekchiu --- internal/cephfs/mounter/kernel.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/internal/cephfs/mounter/kernel.go b/internal/cephfs/mounter/kernel.go index 09bc707f5b8..192e880c0a8 100644 --- a/internal/cephfs/mounter/kernel.go +++ b/internal/cephfs/mounter/kernel.go @@ -74,16 +74,13 @@ func (m *kernelMounter) mountKernel( args := []string{ "-t", "ceph", - fmt.Sprintf("%s:%s", volOptions.Monitors, volOptions.RootPath), + fmt.Sprintf("%s@%s.%s=%s", cr.ID, volOptions.ClusterID, 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) From 42b818b59e0d006022963b0c4af1dd14bf6aed8d Mon Sep 17 00:00:00 2001 From: mageekchiu Date: Sat, 25 Jan 2025 23:50:19 +0800 Subject: [PATCH 2/3] cephfs: upgrading mount syntax Getting FsID instead of ClusterID as parameter Signed-off-by: mageekchiu --- internal/cephfs/mounter/kernel.go | 2 +- internal/cephfs/store/volumeoptions.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/cephfs/mounter/kernel.go b/internal/cephfs/mounter/kernel.go index 192e880c0a8..c7d90e38219 100644 --- a/internal/cephfs/mounter/kernel.go +++ b/internal/cephfs/mounter/kernel.go @@ -74,7 +74,7 @@ func (m *kernelMounter) mountKernel( args := []string{ "-t", "ceph", - fmt.Sprintf("%s@%s.%s=%s", cr.ID, volOptions.ClusterID, volOptions.FsName, volOptions.RootPath), + fmt.Sprintf("%s@%s.%s=%s", cr.ID, volOptions.FsID, volOptions.FsName, volOptions.RootPath), mountPoint, } diff --git a/internal/cephfs/store/volumeoptions.go b/internal/cephfs/store/volumeoptions.go index 285b15ffcdb..883127a5ea2 100644 --- a/internal/cephfs/store/volumeoptions.go +++ b/internal/cephfs/store/volumeoptions.go @@ -46,6 +46,7 @@ type VolumeOptions struct { RequestName string NamePrefix string ClusterID string + FsID string MetadataPool string // ReservedID represents the ID reserved for a subvolume ReservedID string @@ -318,6 +319,11 @@ func NewVolumeOptions( return nil, err } + opts.FsID, err = opts.conn.GetFSID() + if err != nil { + return nil, err + } + opts.MetadataPool, err = fs.GetMetadataPool(ctx, opts.FsName) if err != nil { return nil, err @@ -442,6 +448,11 @@ func NewVolumeOptionsFromVolID( return nil, nil, err } + volOptions.FsID, err = volOptions.conn.GetFSID() + if err != nil { + return nil, nil, err + } + volOptions.MetadataPool, err = fs.GetMetadataPool(ctx, volOptions.FsName) if err != nil { return nil, nil, err @@ -826,6 +837,11 @@ func NewSnapshotOptionsFromID( return &volOptions, nil, &sid, err } + volOptions.FsID, err = volOptions.conn.GetFSID() + if err != nil { + return &volOptions, nil, &sid, err + } + volOptions.MetadataPool, err = fs.GetMetadataPool(ctx, volOptions.FsName) if err != nil { return &volOptions, nil, &sid, err From 60b8dae1aba4a142d4be26e1fe7ee770313ff318 Mon Sep 17 00:00:00 2001 From: mageekchiu Date: Sun, 2 Feb 2025 19:40:19 +0800 Subject: [PATCH 3/3] cephfs: upgrading mount syntax Getting FsID with func rather than field Signed-off-by: mageekchiu --- internal/cephfs/mounter/kernel.go | 8 +++++-- internal/cephfs/store/volumeoptions.go | 29 ++++++++++++-------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/internal/cephfs/mounter/kernel.go b/internal/cephfs/mounter/kernel.go index c7d90e38219..43a0207fbe6 100644 --- a/internal/cephfs/mounter/kernel.go +++ b/internal/cephfs/mounter/kernel.go @@ -72,9 +72,14 @@ 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.%s=%s", cr.ID, volOptions.FsID, volOptions.FsName, volOptions.RootPath), + fmt.Sprintf("%s@%s.%s=%s", cr.ID, fsID, volOptions.FsName, volOptions.RootPath), mountPoint, } @@ -86,7 +91,6 @@ func (m *kernelMounter) mountKernel( var ( stderr string - err error ) if volOptions.NetNamespaceFilePath != "" { diff --git a/internal/cephfs/store/volumeoptions.go b/internal/cephfs/store/volumeoptions.go index 883127a5ea2..fde90430a02 100644 --- a/internal/cephfs/store/volumeoptions.go +++ b/internal/cephfs/store/volumeoptions.go @@ -46,7 +46,6 @@ type VolumeOptions struct { RequestName string NamePrefix string ClusterID string - FsID string MetadataPool string // ReservedID represents the ID reserved for a subvolume ReservedID string @@ -102,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) @@ -319,11 +331,6 @@ func NewVolumeOptions( return nil, err } - opts.FsID, err = opts.conn.GetFSID() - if err != nil { - return nil, err - } - opts.MetadataPool, err = fs.GetMetadataPool(ctx, opts.FsName) if err != nil { return nil, err @@ -448,11 +455,6 @@ func NewVolumeOptionsFromVolID( return nil, nil, err } - volOptions.FsID, err = volOptions.conn.GetFSID() - if err != nil { - return nil, nil, err - } - volOptions.MetadataPool, err = fs.GetMetadataPool(ctx, volOptions.FsName) if err != nil { return nil, nil, err @@ -837,11 +839,6 @@ func NewSnapshotOptionsFromID( return &volOptions, nil, &sid, err } - volOptions.FsID, err = volOptions.conn.GetFSID() - if err != nil { - return &volOptions, nil, &sid, err - } - volOptions.MetadataPool, err = fs.GetMetadataPool(ctx, volOptions.FsName) if err != nil { return &volOptions, nil, &sid, err