code: func (rc *reconciler) isMultiAttachForbidden(volumeSpec *volume.Spec) bool {
  	if volumeSpec.Volume != nil {
  		// Check for volume types which are known to fail slow or cause trouble when trying to multi-attach
  		if volumeSpec.Volume.AzureDisk != nil ||
  			volumeSpec.Volume.Cinder != nil {
  			return true
  		}
  	}
  
  	// Only if this volume is a persistent volume, we have reliable information on whether it's allowed or not to
  	// multi-attach. We trust in the individual volume implementations to not allow unsupported access modes
  	if volumeSpec.PersistentVolume != nil {
  		// Check for persistent volume types which do not fail when trying to multi-attach
  		if len(volumeSpec.PersistentVolume.Spec.AccessModes) == 0 {
  			// No access mode specified so we don't know for sure. Let the attacher fail if needed
  			return false
  		}
  
  		// check if this volume is allowed to be attached to multiple PODs/nodes, if yes, return false
  		for _, accessMode := range volumeSpec.PersistentVolume.Spec.AccessModes {
  			if accessMode == v1.ReadWriteMany || accessMode == v1.ReadOnlyMany {
  				return false
  			}
  		}
  		return true
  	}
  
  	// we don't know if it's supported or not and let the attacher fail later in cases it's not supported
  	return false
  }
docs: // isMultiAttachForbidden checks if attaching this volume to multiple nodes is definitely not allowed/possible.
  // In its current form, this function can only reliably say for which volumes it's definitely forbidden. If it returns
  // false, it is not guaranteed that multi-attach is actually supported by the volume type and we must rely on the
  // attacher to fail fast in such cases.
  // Please see https://github.com/kubernetes/kubernetes/issues/40669 and https://github.com/kubernetes/kubernetes/pull/40148#discussion_r98055047