code: func (g Generationer) StorageGeneration() (initTime time.Time, random string, err error) {
  	f, err := os.Open(g.generationFile())
  	if os.IsNotExist(err) {
  		if err = g.ResetStorageGeneration(); err != nil {
  			return
  		}
  		f, err = os.Open(g.generationFile())
  	}
  	if err != nil {
  		return
  	}
  	defer f.Close()
  	bs, err := ioutil.ReadAll(f)
  	if err != nil {
  		return
  	}
  	if i := bytes.IndexByte(bs, '\n'); i != -1 {
  		bs = bs[:i]
  	}
  	if fi, err := f.Stat(); err == nil {
  		initTime = fi.ModTime()
  	}
  	random = string(bs)
  	return
  }
docs: // StorageGeneration returns the generation's initialization time,
  // and the random string. If the GENERATION.dat file does not exist under
  // root yet, then creates it now (by calling ResetGeneration).