From c9625fd140e42c7839ecd83ecdda978d69947fcb Mon Sep 17 00:00:00 2001 From: Praveen M Date: Tue, 25 Feb 2025 18:07:11 +0530 Subject: [PATCH] csi: add missing mount-info volumeMount for cephfs This file provides functionality to store various mount information in a file. It's currently used to restore ceph-fuse mounts. Mount info is stored in `/csi/mountinfo`. Signed-off-by: Praveen M --- internal/controller/driver_controller.go | 9 +++++++++ internal/utils/csi.go | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/internal/controller/driver_controller.go b/internal/controller/driver_controller.go index b454d4f3..c12ee2fe 100644 --- a/internal/controller/driver_controller.go +++ b/internal/controller/driver_controller.go @@ -1076,6 +1076,9 @@ func (r *driverReconcile) reconcileNodePluginDeamonSet() error { if r.driver.Spec.Encryption != nil { mounts = append(mounts, utils.KmsConfigVolumeMount) } + if r.isCephFsDriver() { + mounts = append(mounts, utils.CsiMountInfoVolumeMount) + } if r.isRdbDriver() { mounts = append(mounts, utils.OidcTokenVolumeMount) } @@ -1250,6 +1253,12 @@ func (r *driverReconcile) reconcileNodePluginDeamonSet() error { utils.PodsMountDirVolume(kubeletDirPath), utils.RegistrationDirVolume(kubeletDirPath), ) + if r.isCephFsDriver() { + volumes = append( + volumes, + utils.CsiMountInfoVolume(kubeletDirPath, r.driver.Name), + ) + } if ptr.Deref(pluginSpec.EnableSeLinuxHostMount, false) { volumes = append( volumes, diff --git a/internal/utils/csi.go b/internal/utils/csi.go index a0586502..6eb65ce5 100644 --- a/internal/utils/csi.go +++ b/internal/utils/csi.go @@ -30,6 +30,7 @@ const ( csiAddonsEndpoint = "unix://" + SocketDir + "/csi-addons.sock" kmsConfigVolumeName = "ceph-csi-kms-config" + csiMountInfoVolumeName = "ceph-csi-mountinfo" registrationVolumeName = "registration-dir" pluginDirVolumeName = "plugin-dir" podsMountDirVolumeName = "pods-mount-dir" @@ -126,6 +127,17 @@ var EtcSelinuxVolume = corev1.Volume{ }, } +func CsiMountInfoVolume(kubeletDirPath string, driverName string) corev1.Volume { + return corev1.Volume{ + Name: csiMountInfoVolumeName, + VolumeSource: corev1.VolumeSource{ + HostPath: &corev1.HostPathVolumeSource{ + Path: fmt.Sprintf("%s/plugins/%s/mountinfo", kubeletDirPath, driverName), + Type: ptr.To(corev1.HostPathDirectoryOrCreate), + }, + }, + } +} func KmsConfigVolume(configRef *corev1.LocalObjectReference) corev1.Volume { return corev1.Volume{ Name: kmsConfigVolumeName, @@ -245,6 +257,10 @@ var CsiConfigVolumeMount = corev1.VolumeMount{ Name: CsiConfigVolume.Name, MountPath: "/etc/ceph-csi-config", } +var CsiMountInfoVolumeMount = corev1.VolumeMount{ + Name: csiMountInfoVolumeName, + MountPath: "/csi/mountinfo", +} var KmsConfigVolumeMount = corev1.VolumeMount{ Name: kmsConfigVolumeName, MountPath: "/etc/ceph-csi-encryption-kms-config/",