mirror of
https://github.com/ceph/ceph
synced 2025-02-22 10:37:15 +00:00
mds: add SnapRealm projection methods
This commit is contained in:
parent
6289b3e409
commit
bb0dcd2ced
@ -530,3 +530,23 @@ void SnapRealm::prune_past_parents()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sr_t *SnapRealm::project_snaprealm()
|
||||
{
|
||||
if (projected_srnode.empty())
|
||||
projected_srnode.push_back(new sr_t(srnode));
|
||||
else
|
||||
projected_srnode.push_back(new sr_t(*projected_srnode.back()));
|
||||
dout(0) << "project_snaprealm " << projected_srnode.back() << dendl;
|
||||
return projected_srnode.back();
|
||||
}
|
||||
|
||||
void SnapRealm::pop_projected_snaprealm()
|
||||
{
|
||||
assert(!projected_srnode.empty());
|
||||
dout(0) << "pop_projected_snaprealm " << projected_srnode.front()
|
||||
<< " seq" << projected_srnode.front()->seq << dendl;
|
||||
srnode = *projected_srnode.front();
|
||||
delete projected_srnode.front();
|
||||
projected_srnode.pop_front();
|
||||
}
|
||||
|
@ -139,6 +139,7 @@ struct SnapRealm {
|
||||
// realm state
|
||||
|
||||
sr_t srnode;
|
||||
list<sr_t*> projected_srnode;
|
||||
|
||||
void encode(bufferlist& bl) const {
|
||||
__u8 struct_v = 2;
|
||||
@ -273,6 +274,15 @@ struct SnapRealm {
|
||||
if (client_caps[client].empty())
|
||||
client_caps.erase(client);
|
||||
}
|
||||
|
||||
sr_t *get_projected_snaprealm() {
|
||||
if (projected_srnode.empty())
|
||||
return &srnode;
|
||||
else
|
||||
return projected_srnode.back();
|
||||
}
|
||||
sr_t *project_snaprealm();
|
||||
void pop_projected_snaprealm();
|
||||
};
|
||||
WRITE_CLASS_ENCODER(SnapRealm)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user