code: func (diskManager virtualDiskManager) Create(ctx context.Context, datastore *vclib.Datastore) (canonicalDiskPath string, err error) {
  	if diskManager.volumeOptions.SCSIControllerType == "" {
  		diskManager.volumeOptions.SCSIControllerType = vclib.LSILogicControllerType
  	}
  	// Create virtual disk
  	diskFormat := vclib.DiskFormatValidType[diskManager.volumeOptions.DiskFormat]
  	// Create a virtual disk manager
  	vdm := object.NewVirtualDiskManager(datastore.Client())
  	// Create specification for new virtual disk
  	vmDiskSpec := &types.FileBackedVirtualDiskSpec{
  		VirtualDiskSpec: types.VirtualDiskSpec{
  			AdapterType: diskManager.volumeOptions.SCSIControllerType,
  			DiskType:    diskFormat,
  		},
  		CapacityKb: int64(diskManager.volumeOptions.CapacityKB),
  	}
  	requestTime := time.Now()
  	// Create virtual disk
  	task, err := vdm.CreateVirtualDisk(ctx, diskManager.diskPath, datastore.Datacenter.Datacenter, vmDiskSpec)
  	if err != nil {
  		vclib.RecordvSphereMetric(vclib.APICreateVolume, requestTime, err)
  		klog.Errorf("Failed to create virtual disk: %s. err: %+v", diskManager.diskPath, err)
  		return "", err
  	}
  	taskInfo, err := task.WaitForResult(ctx, nil)
  	vclib.RecordvSphereMetric(vclib.APICreateVolume, requestTime, err)
  	if err != nil {
  		klog.Errorf("Failed to complete virtual disk creation: %s. err: %+v", diskManager.diskPath, err)
  		return "", err
  	}
  	canonicalDiskPath = taskInfo.Result.(string)
  	return canonicalDiskPath, nil
  }
docs: // Create implements Disk's Create interface
  // Contains implementation of virtualDiskManager based Provisioning