} else if (next_snaprealm->past_parents.size() !=
snaprealm->srnode.past_parents.size()) {
invalidate_cached_snaps = true;
+ // re-open past parents
+ snaprealm->open = false;
- // update parent pointer
- assert(snaprealm->open);
- assert(snaprealm->parent); // had a parent before
- SnapRealm *new_parent = get_parent_inode()->find_snaprealm();
- assert(new_parent);
- CInode *parenti = new_parent->inode;
- assert(parenti);
- assert(parenti->snaprealm);
- snaprealm->parent = new_parent;
- snaprealm->add_open_past_parent(new_parent);
dout(10) << " realm " << *snaprealm << " past_parents " << snaprealm->srnode.past_parents
<< " -> " << next_snaprealm->past_parents << dendl;
- dout(10) << " pinning new parent " << *parenti << dendl;
}
snaprealm->srnode = *next_snaprealm;
delete next_snaprealm;