code: func (ctrl *PersistentVolumeController) Run(stopCh <-chan struct{}) {
  	defer utilruntime.HandleCrash()
  	defer ctrl.claimQueue.ShutDown()
  	defer ctrl.volumeQueue.ShutDown()
  
  	klog.Infof("Starting persistent volume controller")
  	defer klog.Infof("Shutting down persistent volume controller")
  
  	if !controller.WaitForCacheSync("persistent volume", stopCh, ctrl.volumeListerSynced, ctrl.claimListerSynced, ctrl.classListerSynced, ctrl.podListerSynced, ctrl.NodeListerSynced) {
  		return
  	}
  
  	ctrl.initializeCaches(ctrl.volumeLister, ctrl.claimLister)
  
  	go wait.Until(ctrl.resync, ctrl.resyncPeriod, stopCh)
  	go wait.Until(ctrl.volumeWorker, time.Second, stopCh)
  	go wait.Until(ctrl.claimWorker, time.Second, stopCh)
  
  	metrics.Register(ctrl.volumes.store, ctrl.claims)
  
  	<-stopCh
  }
docs: // Run starts all of this controller's control loops