code: func NoDiskConflict(pod *v1.Pod, meta PredicateMetadata, nodeInfo *schedulernodeinfo.NodeInfo) (bool, []PredicateFailureReason, error) {
  	for _, v := range pod.Spec.Volumes {
  		for _, ev := range nodeInfo.Pods() {
  			if isVolumeConflict(v, ev) {
  				return false, []PredicateFailureReason{ErrDiskConflict}, nil
  			}
  		}
  	}
  	return true, nil, nil
  }
docs: // NoDiskConflict evaluates if a pod can fit due to the volumes it requests, and those that
  // are already mounted. If there is already a volume mounted on that node, another pod that uses the same volume
  // can't be scheduled there.
  // This is GCE, Amazon EBS, and Ceph RBD specific for now:
  // - GCE PD allows multiple mounts as long as they're all read-only
  // - AWS EBS forbids any two pods mounting the same volume ID
  // - Ceph RBD forbids if any two pods share at least same monitor, and match pool and image.
  // - ISCSI forbids if any two pods share at least same IQN, LUN and Target
  // TODO: migrate this into some per-volume specific code?