Skip to content

Commit

Permalink
feat(cdi): improve csi-clone performance
Browse files Browse the repository at this point in the history
Signed-off-by: Isteb4k <[email protected]>
  • Loading branch information
Isteb4k committed Dec 13, 2024
1 parent afe682a commit 03783e5
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
30 changes: 30 additions & 0 deletions images/cdi-artifact/patches/019-optimize-csi-clone.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
diff --git a/pkg/controller/clone/csi-clone.go b/pkg/controller/clone/csi-clone.go
index cbaff4c0d..e66a708cd 100644
--- a/pkg/controller/clone/csi-clone.go
+++ b/pkg/controller/clone/csi-clone.go
@@ -103,9 +103,10 @@ func (p *CSIClonePhase) createClaim(ctx context.Context) (*corev1.PersistentVolu
Name: sourceClaim.Name,
}

- sourceSize := sourceClaim.Status.Capacity[corev1.ResourceStorage]
- p.Log.V(3).Info("setting desired pvc request size to", "restoreSize", sourceSize)
- desiredClaim.Spec.Resources.Requests[corev1.ResourceStorage] = sourceSize
+ // With csi-clone, it's possible to specify the same or a larger capacity for the target pvc immediately, with no need to postpone resizing.
+ // sourceSize := sourceClaim.Status.Capacity[corev1.ResourceStorage]
+ // p.Log.V(3).Info("setting desired pvc request size to", "restoreSize", sourceSize)
+ // desiredClaim.Spec.Resources.Requests[corev1.ResourceStorage] = sourceSize

cc.AddAnnotation(desiredClaim, cc.AnnPopulatorKind, cdiv1.VolumeCloneSourceRef)
if p.OwnershipLabel != "" {
diff --git a/pkg/storagecapabilities/storagecapabilities.go b/pkg/storagecapabilities/storagecapabilities.go
index 11862364e..1d4fb97f2 100644
--- a/pkg/storagecapabilities/storagecapabilities.go
+++ b/pkg/storagecapabilities/storagecapabilities.go
@@ -144,6 +144,7 @@ var CloneStrategyByProvisionerKey = map[string]cdiv1.CDICloneStrategy{
"hspc.csi.hitachi.com": cdiv1.CloneStrategyCsiClone,
"csi.hpe.com": cdiv1.CloneStrategyCsiClone,
"spectrumscale.csi.ibm.com": cdiv1.CloneStrategyCsiClone,
+ "rbd.csi.ceph.com": cdiv1.CloneStrategyCsiClone,
"rook-ceph.rbd.csi.ceph.com": cdiv1.CloneStrategyCsiClone,
"openshift-storage.rbd.csi.ceph.com": cdiv1.CloneStrategyCsiClone,
"cephfs.csi.ceph.com": cdiv1.CloneStrategyCsiClone,
5 changes: 5 additions & 0 deletions images/cdi-artifact/patches/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,8 @@ This is necessary for ensuring that the metrics can be accessed only by Promethe
Currently covered metrics:
- cdi-controller
- cdi-deployment

#### `019-optimize-csi-clone.patch`

Cloning PVC to PVC for provisioner `rbd.csi.ceph.com` now works via csi-clone instead of snapshot.
With csi-clone, it's possible to specify the same or a larger capacity for the target pvc immediately, with no need to postpone resizing.

0 comments on commit 03783e5

Please sign in to comment.