code: func PersistentVolumeClaimValidateLimitFunc(limitRange *corev1.LimitRange, pvc *api.PersistentVolumeClaim) error {
  	var errs []error
  	for i := range limitRange.Spec.Limits {
  		limit := limitRange.Spec.Limits[i]
  		limitType := limit.Type
  		if limitType == corev1.LimitTypePersistentVolumeClaim {
  			for k, v := range limit.Min {
  				// normal usage of minConstraint. pvc.Spec.Resources.Limits is not recognized as user input
  				if err := minConstraint(string(limitType), string(k), v, pvc.Spec.Resources.Requests, api.ResourceList{}); err != nil {
  					errs = append(errs, err)
  				}
  			}
  			for k, v := range limit.Max {
  				// We want to enforce the max of the LimitRange against what
  				// the user requested.
  				if err := maxRequestConstraint(string(limitType), string(k), v, pvc.Spec.Resources.Requests); err != nil {
  					errs = append(errs, err)
  				}
  			}
  		}
  	}
  	return utilerrors.NewAggregate(errs)
  }
docs: // PersistentVolumeClaimValidateLimitFunc enforces storage limits for PVCs.
  // Users request storage via pvc.Spec.Resources.Requests.  Min/Max is enforced by an admin with LimitRange.
  // Claims will not be modified with default values because storage is a required part of pvc.Spec.
  // All storage enforced values *only* apply to pvc.Spec.Resources.Requests.