code: func (util *DiskUtil) DetachDisk(cd *cinderVolumeUnmounter) error {
  	globalPDPath := makeGlobalPDName(cd.plugin.host, cd.pdName)
  	if err := cd.mounter.Unmount(globalPDPath); err != nil {
  		return err
  	}
  	if err := os.Remove(globalPDPath); err != nil {
  		return err
  	}
  	klog.V(2).Infof("Successfully unmounted main device: %s\n", globalPDPath)
  
  	cloud, err := cd.plugin.getCloudProvider()
  	if err != nil {
  		return err
  	}
  	instanceid, err := cloud.InstanceID()
  	if err != nil {
  		return err
  	}
  	if err = cloud.DetachDisk(instanceid, cd.pdName); err != nil {
  		return err
  	}
  	klog.V(2).Infof("Successfully detached cinder volume %s", cd.pdName)
  	return nil
  }
docs: // DetachDisk unmounts the device and detaches the disk from the kubelet's host machine.