code: func (r rebooter) lockAndReboot(lck *lock.Lock) {
  	interval := initialInterval
  	for {
  		err := lck.Lock()
  		if err != nil && err != lock.ErrExist {
  			interval = expBackoff(interval)
  			dlog.Warningf("Failed to acquire lock: %v. Retrying in %v.", err, interval)
  			time.Sleep(interval)
  
  			continue
  		}
  
  		r.rebootAndSleep()
  		return
  	}
  }
docs: // lockAndReboot attempts to acquire the lock and reboot the machine in an
  // infinite loop. Returns if the reboot failed.