SnapRealm *oldparent = srcdn->dir->inode->find_snaprealm();
realm->past_parents[oldlast].ino = oldparent->inode->ino();
realm->past_parents[oldlast].first = realm->current_parent_since;
- realm->open_past_parents[srcdn->dir->inode->ino()] = oldparent;
+ realm->add_open_past_parent(oldparent);
dout(10) << " adding past_parent [" << realm->past_parents[oldlast].first << "," << oldlast << "] = "
<< realm->past_parents[oldlast].ino << " on " << *realm << dendl;
}
<< ".cache.snaprealm(" << inode->ino() \
<< " seq " << seq << " " << this << ") "
+void SnapRealm::add_open_past_parent(SnapRealm *parent)
+{
+ open_past_parents[parent->inode->ino()] = parent;
+ parent->inode->get(CInode::PIN_PASTSNAPPARENT);
+}
+
bool SnapRealm::_open_parents(Context *finish, snapid_t first, snapid_t last)
{
dout(10) << "open_parents [" << first << "," << last << "]" << dendl;
}
assert(parent->snaprealm); // hmm!
if (!open_past_parents.count(p->second.ino)) {
- open_past_parents[p->second.ino] = parent->snaprealm;
- parent->get(CInode::PIN_PASTSNAPPARENT);
+ add_open_past_parent(parent->snaprealm);
}
if (!parent->snaprealm->_open_parents(finish, p->second.first, p->first))
return false;
return true;
}
bool have_past_parents_open(snapid_t first=1, snapid_t last=CEPH_NOSNAP);
+ void add_open_past_parent(SnapRealm *parent);
void close_parents();
void build_snap_set(set<snapid_t>& s,