func NewWriteQTree(bs *bstore.BlockStore, id uuid.UUID) (*QTree, error) { gen := bs.ObtainGeneration(id) rv := &QTree{ sb: gen.New_SB, gen: gen, bs: bs, } //If there is an existing root node, we need to load it so that it //has the correct values if rv.sb.Root() != 0 { rt, err := rv.LoadNode(rv.sb.Root(), rv.sb.Gen(), ROOTPW, ROOTSTART) if err != nil { log.Panicf("%v", err) return nil, err } rv.root = rt } else { rt, err := rv.NewCoreNode(ROOTSTART, ROOTPW) if err != nil { log.Panicf("%v", err) return nil, err } rv.root = rt } return rv, nil }