From 238883be8d2de5e7afcb598b7eacfe38b97eb854 Mon Sep 17 00:00:00 2001 From: Anish Ramasekar Date: Wed, 13 May 2026 11:49:54 -0700 Subject: [PATCH] feat(volume): add IsRemount to MounterArgs Thread the reconciler's existing isRemount signal into MounterArgs so volume plugins can distinguish an initial publish from a republish (e.g. CSIDriver.spec.requiresRepublish=true). No behavior change. --- .../util/operationexecutor/operation_generator.go | 1 + pkg/volume/volume.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/pkg/volume/util/operationexecutor/operation_generator.go b/pkg/volume/util/operationexecutor/operation_generator.go index a4779c86009..cf16f99688f 100644 --- a/pkg/volume/util/operationexecutor/operation_generator.go +++ b/pkg/volume/util/operationexecutor/operation_generator.go @@ -588,6 +588,7 @@ func (og *operationGenerator) GenerateMountVolumeFunc( Recorder: og.recorder, SELinuxLabel: volumeToMount.SELinuxLabel, ReconstructedVolume: actualStateOfWorld.IsVolumeReconstructed(volumeToMount.VolumeName, volumeToMount.PodName), + IsRemount: isRemount, }) // Update actual state of world markOpts := MarkVolumeOpts{ diff --git a/pkg/volume/volume.go b/pkg/volume/volume.go index 152c7bc68ef..4a166f000f2 100644 --- a/pkg/volume/volume.go +++ b/pkg/volume/volume.go @@ -139,6 +139,16 @@ type MounterArgs struct { // mainly used by unit tests VolumeOwnershipApplicator VolumeOwnershipChanger ReconstructedVolume bool + + // IsRemount is true when SetUp is being invoked on a volume that the + // reconciler considers already mounted to the pod, e.g. a periodic + // republish triggered by CSIDriver.spec.requiresRepublish=true. Volume + // plugins should use this to avoid destroying state (e.g. mount + // directories, volume metadata files) that the pod is currently + // observing through an existing bind mount, since teardown on a + // failed remount cannot be repaired by a subsequent successful + // remount and would leave the pod with stale contents. + IsRemount bool } type VolumeOwnershipChanger interface {