diff --git a/pkg/exposer/csi_snapshot.go b/pkg/exposer/csi_snapshot.go index 535268a3d..247ae9003 100644 --- a/pkg/exposer/csi_snapshot.go +++ b/pkg/exposer/csi_snapshot.go @@ -585,6 +585,14 @@ func (e *csiSnapshotExposer) createBackupVSC(ctx context.Context, ownerObject co // of forcing Delete, otherwise a user who configured Retain on the // VolumeSnapshotClass still loses the snapshot when the backup VSC // is cleaned up. + // + // For Case 2 storages per the design (design/block-data-mover/block-data-mover.md, + // e.g. Ceph RBD), inheriting Retain is not just an option but a requirement for + // incrementals to work at all: rbd snap diff needs the base and target snapshots + // in the same clone chain, so Delete destroys the base as soon as this backup + // completes. The next incremental's delta query then fails and degrades to an + // allocated-blocks backup (see the CBT tier ladder) or, without that fix, a full + // whole-device transfer. DeletionPolicy: snapshotVSC.Spec.DeletionPolicy, Driver: snapshotVSC.Spec.Driver, VolumeSnapshotClassName: snapshotVSC.Spec.VolumeSnapshotClassName,