code: func (c *ManagedDiskController) ResizeDisk(diskURI string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error) {
  	ctx, cancel := getContextWithCancel()
  	defer cancel()
  
  	diskName := path.Base(diskURI)
  	resourceGroup, err := getResourceGroupFromDiskURI(diskURI)
  	if err != nil {
  		return oldSize, err
  	}
  
  	result, err := c.common.cloud.DisksClient.Get(ctx, resourceGroup, diskName)
  	if err != nil {
  		return oldSize, err
  	}
  
  	if result.DiskProperties == nil || result.DiskProperties.DiskSizeGB == nil {
  		return oldSize, fmt.Errorf("DiskProperties of disk(%s) is nil", diskName)
  	}
  
  	// Azure resizes in chunks of GiB (not GB)
  	requestGiB := int32(volumehelpers.RoundUpToGiB(newSize))
  	newSizeQuant := resource.MustParse(fmt.Sprintf("%dGi", requestGiB))
  
  	klog.V(2).Infof("azureDisk - begin to resize disk(%s) with new size(%d), old size(%v)", diskName, requestGiB, oldSize)
  	// If disk already of greater or equal size than requested we return
  	if *result.DiskProperties.DiskSizeGB >= requestGiB {
  		return newSizeQuant, nil
  	}
  
  	result.DiskProperties.DiskSizeGB = &requestGiB
  
  	ctx, cancel = getContextWithCancel()
  	defer cancel()
  	if _, err := c.common.cloud.DisksClient.CreateOrUpdate(ctx, resourceGroup, diskName, result); err != nil {
  		return oldSize, err
  	}
  
  	klog.V(2).Infof("azureDisk - resize disk(%s) with new size(%d) completed", diskName, requestGiB)
  
  	return newSizeQuant, nil
  }
docs: // ResizeDisk Expand the disk to new size