static SnapContext snapc;
static int i;
- snapc.snaps.clear();
+ snapc.snaprealm.snaps.clear();
#define START_SNAP 1
- if (snapc.seq == 0)
- snapc.seq = START_SNAP - 1;
+ if (snapc.snaprealm.seq == 0)
+ snapc.snaprealm.seq = START_SNAP - 1;
- ++snapc.seq;
- for (i=0; i<snapc.seq-START_SNAP + 1; i++) {
- snapc.snaps.push_back(snapc.seq - i);
+ ++snapc.snaprealm.seq;
+ for (i=0; i<snapc.snaprealm.seq-START_SNAP + 1; i++) {
+ snapc.snaprealm.snaps.push_back(snapc.snaprealm.seq - i);
}
i = 0;
- for (vector<snapid_t>::iterator iter = snapc.snaps.begin();
- iter != snapc.snaps.end(); ++iter, ++i) {
+ for (vector<snapid_t>::iterator iter = snapc.snaprealm.snaps.begin();
+ iter != snapc.snaprealm.snaps.end(); ++iter, ++i) {
dout(0) << "snapc[" << i << "] = " << *iter << dendl;
}
- dout(0) << "seq=" << snapc.seq << dendl;
+ dout(0) << "seq=" << snapc.snaprealm.seq << dendl;
dout(0) << "snapc=" << snapc << dendl;
#endif
utime_t ut = g_clock.now();
else
in->inode_auth = pair<int,int>(in->ino() - MDS_INO_MDSDIR_OFFSET, CDIR_AUTH_UNKNOWN);
in->open_snaprealm(); // empty snaprealm
- in->snaprealm->seq = 1;
+ in->snaprealm->snaprealm.seq = 1;
}
add_inode(in);
::decode(seq, p);
SnapRealm t(this, in);
- t.created = seq;
+ t.snaprealm.created = seq;
bufferlist snapbl;
::encode(t, snapbl);
::decode(seq, p);
in->open_snaprealm();
- in->snaprealm->seq = seq;
- in->snaprealm->created = seq;
- in->snaprealm->current_parent_since = seq;
+ in->snaprealm->snaprealm.seq = seq;
+ in->snaprealm->snaprealm.created = seq;
+ in->snaprealm->snaprealm.current_parent_since = seq;
do_realm_invalidate_and_update_notify(in, CEPH_SNAP_OP_SPLIT);
return;
in->snaprealm->prune_past_parents();
if (in->snaprealm->has_past_parents()) {
- dout(20) << " has past parents " << in->snaprealm->past_parents << dendl;
+ dout(20) << " has past parents " << in->snaprealm->snaprealm.past_parents << dendl;
return; // not until some snaps are deleted.
}
}
bool isnew = false;
if (!straydnl->get_inode()->snaprealm) {
straydnl->get_inode()->open_snaprealm();
- straydnl->get_inode()->snaprealm->seq = oldparent->get_newest_seq();
+ straydnl->get_inode()->snaprealm->snaprealm.seq = oldparent->get_newest_seq();
isnew = true;
}
straydnl->get_inode()->snaprealm->add_past_parent(oldparent);
assert(in->is_auth());
- if (in->snaprealm && in->snaprealm->snaps.size())
+ if (in->snaprealm && in->snaprealm->snaprealm.snaps.size())
return true; //in a snapshot!
list<frag_t> frags;
bool isnew = false;
if (!straydnl->get_inode()->snaprealm) {
straydnl->get_inode()->open_snaprealm();
- straydnl->get_inode()->snaprealm->seq = oldparent->get_newest_seq();
+ straydnl->get_inode()->snaprealm->snaprealm.seq = oldparent->get_newest_seq();
isnew = true;
}
straydnl->get_inode()->snaprealm->add_past_parent(oldparent);
if (!diri->snaprealm) {
newrealm = true;
diri->open_snaprealm(true);
- diri->snaprealm->created = snapid;
- diri->snaprealm->current_parent_since = snapid;
- }
- snapid_t old_seq = diri->snaprealm->seq;
- snapid_t old_lc = diri->snaprealm->last_created;
- diri->snaprealm->snaps[snapid] = info;
- diri->snaprealm->seq = snapid;
- diri->snaprealm->last_created = snapid;
+ diri->snaprealm->snaprealm.created = snapid;
+ diri->snaprealm->snaprealm.current_parent_since = snapid;
+ }
+ snapid_t old_seq = diri->snaprealm->snaprealm.seq;
+ snapid_t old_lc = diri->snaprealm->snaprealm.last_created;
+ diri->snaprealm->snaprealm.snaps[snapid] = info;
+ diri->snaprealm->snaprealm.seq = snapid;
+ diri->snaprealm->snaprealm.last_created = snapid;
diri->encode_snap_blob(snapbl);
- diri->snaprealm->snaps.erase(snapid);
- diri->snaprealm->seq = old_seq;
- diri->snaprealm->last_created = old_lc;
+ diri->snaprealm->snaprealm.snaps.erase(snapid);
+ diri->snaprealm->snaprealm.seq = old_seq;
+ diri->snaprealm->snaprealm.last_created = old_lc;
if (newrealm)
diri->close_snaprealm(true);
int op = CEPH_SNAP_OP_CREATE;
if (!diri->snaprealm) {
diri->open_snaprealm();
- diri->snaprealm->created = snapid;
- diri->snaprealm->current_parent_since = snapid;
+ diri->snaprealm->snaprealm.created = snapid;
+ diri->snaprealm->snaprealm.current_parent_since = snapid;
op = CEPH_SNAP_OP_SPLIT;
}
- diri->snaprealm->snaps[snapid] = info;
- diri->snaprealm->seq = snapid;
- diri->snaprealm->last_created = snapid;
+ diri->snaprealm->snaprealm.snaps[snapid] = info;
+ diri->snaprealm->snaprealm.seq = snapid;
+ diri->snaprealm->snaprealm.last_created = snapid;
dout(10) << "snaprealm now " << *diri->snaprealm << dendl;
mdcache->do_realm_invalidate_and_update_notify(diri, op);
// project the snaprealm.. hack!
bufferlist snapbl;
- snapid_t old_seq = diri->snaprealm->seq;
- snapid_t old_ld = diri->snaprealm->last_destroyed;
- SnapInfo old_info = diri->snaprealm->snaps[snapid];
- diri->snaprealm->snaps.erase(snapid);
- diri->snaprealm->seq = seq;
- diri->snaprealm->last_destroyed = seq;
+ snapid_t old_seq = diri->snaprealm->snaprealm.seq;
+ snapid_t old_ld = diri->snaprealm->snaprealm.last_destroyed;
+ SnapInfo old_info = diri->snaprealm->snaprealm.snaps[snapid];
+ diri->snaprealm->snaprealm.snaps.erase(snapid);
+ diri->snaprealm->snaprealm.seq = seq;
+ diri->snaprealm->snaprealm.last_destroyed = seq;
diri->encode_snap_blob(snapbl);
- diri->snaprealm->snaps[snapid] = old_info;
- diri->snaprealm->seq = old_seq;
- diri->snaprealm->last_destroyed = old_ld;
+ diri->snaprealm->snaprealm.snaps[snapid] = old_info;
+ diri->snaprealm->snaprealm.seq = old_seq;
+ diri->snaprealm->snaprealm.last_destroyed = old_ld;
le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
mdlog->submit_entry(le, new C_MDS_rmsnap_finish(mds, mdr, diri, snapid));
mds->snapclient->commit(stid, mdr->ls);
// remove snap
- diri->snaprealm->snaps.erase(snapid);
- diri->snaprealm->last_destroyed = seq;
- diri->snaprealm->seq = seq;
+ diri->snaprealm->snaprealm.snaps.erase(snapid);
+ diri->snaprealm->snaprealm.last_destroyed = seq;
+ diri->snaprealm->snaprealm.seq = seq;
dout(10) << "snaprealm now " << *diri->snaprealm << dendl;
mdcache->do_realm_invalidate_and_update_notify(diri, CEPH_SNAP_OP_DESTROY);