code: func doCleanupMountPoint(mountPath string, mounter Interface, extensiveMountPointCheck bool, corruptedMnt bool) error {
  	if !corruptedMnt {
  		var notMnt bool
  		var err error
  		if extensiveMountPointCheck {
  			notMnt, err = IsNotMountPoint(mounter, mountPath)
  		} else {
  			notMnt, err = mounter.IsLikelyNotMountPoint(mountPath)
  		}
  
  		if err != nil {
  			return err
  		}
  
  		if notMnt {
  			klog.Warningf("Warning: %q is not a mountpoint, deleting", mountPath)
  			return os.Remove(mountPath)
  		}
  	}
  
  	// Unmount the mount path
  	klog.V(4).Infof("%q is a mountpoint, unmounting", mountPath)
  	if err := mounter.Unmount(mountPath); err != nil {
  		return err
  	}
  
  	notMnt, mntErr := mounter.IsLikelyNotMountPoint(mountPath)
  	if mntErr != nil {
  		return mntErr
  	}
  	if notMnt {
  		klog.V(4).Infof("%q is unmounted, deleting the directory", mountPath)
  		return os.Remove(mountPath)
  	}
  	return fmt.Errorf("Failed to unmount path %v", mountPath)
  }
docs: // doCleanupMountPoint unmounts the given path and
  // deletes the remaining directory if successful.
  // if extensiveMountPointCheck is true
  // IsNotMountPoint will be called instead of IsLikelyNotMountPoint.
  // IsNotMountPoint is more expensive but properly handles bind mounts within the same fs.
  // if corruptedMnt is true, it means that the mountPath is a corrupted mountpoint, and the mount point check
  // will be skipped