code: func (b *volumeBinder) checkVolumeProvisions(pod *v1.Pod, claimsToProvision []*v1.PersistentVolumeClaim, node *v1.Node) (provisionSatisfied bool, provisionedClaims []*v1.PersistentVolumeClaim, err error) {
  	podName := getPodName(pod)
  	provisionedClaims = []*v1.PersistentVolumeClaim{}
  
  	for _, claim := range claimsToProvision {
  		pvcName := getPVCName(claim)
  		className := v1helper.GetPersistentVolumeClaimClass(claim)
  		if className == "" {
  			return false, nil, fmt.Errorf("no class for claim %q", pvcName)
  		}
  
  		class, err := b.classLister.Get(className)
  		if err != nil {
  			return false, nil, fmt.Errorf("failed to find storage class %q", className)
  		}
  		provisioner := class.Provisioner
  		if provisioner == "" || provisioner == notSupportedProvisioner {
  			klog.V(4).Infof("storage class %q of claim %q does not support dynamic provisioning", className, pvcName)
  			return false, nil, nil
  		}
  
  		// Check if the node can satisfy the topology requirement in the class
  		if !v1helper.MatchTopologySelectorTerms(class.AllowedTopologies, labels.Set(node.Labels)) {
  			klog.V(4).Infof("Node %q cannot satisfy provisioning topology requirements of claim %q", node.Name, pvcName)
  			return false, nil, nil
  		}
  
  		// TODO: Check if capacity of the node domain in the storage class
  		// can satisfy resource requirement of given claim
  
  		provisionedClaims = append(provisionedClaims, claim)
  
  	}
  	klog.V(4).Infof("Provisioning for claims of pod %q that has no matching volumes on node %q ...", podName, node.Name)
  
  	return true, provisionedClaims, nil
  }
docs: // checkVolumeProvisions checks given unbound claims (the claims have gone through func
  // findMatchingVolumes, and do not have matching volumes for binding), and return true
  // if all of the claims are eligible for dynamic provision.