code: func (p *Pod) ToRun() error {
  	if !p.createdByMe && !p.isPrepared {
  		return fmt.Errorf("bug: only prepared pods may transition to run")
  	}
  
  	if p.createdByMe && !p.isPrepared && !p.isPreparing {
  		return fmt.Errorf("bug: only prepared or preparing pods may transition to run")
  	}
  
  	if err := p.ExclusiveLock(); err != nil {
  		return err
  	}
  	label.Relabel(p.Path(), p.MountLabel, false)
  	if err := os.Rename(p.Path(), p.runPath()); err != nil {
  		// TODO(vc): we could race here with a concurrent ToRun(), let caller deal with the error.
  		return err
  	}
  
  	df, err := os.Open(runDir(p.dataDir))
  	if err != nil {
  		return err
  	}
  	defer df.Close()
  	if err := df.Sync(); err != nil {
  		return err
  	}
  
  	p.isPreparing = false
  	p.isPrepared = false
  
  	return nil
  }
docs: // ToRun transitions a pod from prepared -> run, leaves the pod locked in the run directory.
  // the creator of the pod (via NewPod()) may also jump directly from preparing -> run
  // This method refreshes the pod state.