code: func (resizeMap *volumeResizeMap) AddPVCUpdate(pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume) {
  	if pv.Spec.ClaimRef == nil || pvc.Namespace != pv.Spec.ClaimRef.Namespace || pvc.Name != pv.Spec.ClaimRef.Name {
  		klog.V(4).Infof("Persistent Volume is not bound to PVC being updated : %s", util.ClaimToClaimKey(pvc))
  		return
  	}
  
  	if pvc.Status.Phase != v1.ClaimBound {
  		return
  	}
  
  	pvcSize := pvc.Spec.Resources.Requests[v1.ResourceStorage]
  	pvcStatusSize := pvc.Status.Capacity[v1.ResourceStorage]
  
  	if pvcStatusSize.Cmp(pvcSize) >= 0 {
  		return
  	}
  
  	klog.V(4).Infof("Adding pvc %s with Size %s/%s for resizing", util.ClaimToClaimKey(pvc), pvcSize.String(), pvcStatusSize.String())
  
  	pvcRequest := &PVCWithResizeRequest{
  		PVC:              pvc,
  		CurrentSize:      pvcStatusSize,
  		ExpectedSize:     pvcSize,
  		PersistentVolume: pv,
  	}
  
  	resizeMap.Lock()
  	defer resizeMap.Unlock()
  	resizeMap.pvcrs[types.UniquePVCName(pvc.UID)] = pvcRequest
  }
docs: // AddPVCUpdate adds pvc for resizing
  // This function intentionally allows addition of PVCs for which pv.Spec.Size >= pvc.Spec.Size,
  // the reason being - lack of transaction in k8s means after successful resize, we can't guarantee that when we update PV,
  // pvc update will be successful too and after resize we alyways update PV first.
  // If for some reason we weren't able to update PVC after successful resize, then we are going to reprocess
  // the PVC and hopefully after a no-op resize in volume plugin, PVC will be updated with right values as well.