if (realm.srnode.created != realm.srnode.current_parent_since)
out << " cps " << realm.srnode.current_parent_since;
out << " snaps=" << realm.srnode.snaps;
- out << " past_parent_snaps=" << realm.srnode.past_parent_snaps;
+ if (realm.srnode.past_parent_snaps.size() > 0) {
+ out << " past_parent_snaps=" << realm.srnode.past_parent_snaps;
+ }
if (realm.srnode.is_parent_global())
out << " global ";
+ out << " last_modified " << realm.srnode.last_modified
+ << " change_attr " << realm.srnode.change_attr;
out << " " << &realm << ")";
return out;
}
mdcache(c), inode(in), inodes_with_caps(member_offset(CInode, item_caps))
{
global = (inode->ino() == CEPH_INO_GLOBAL_SNAPREALM);
+ if (inode->ino() == CEPH_INO_ROOT) {
+ srnode.last_modified = in->get_inode()->mtime;
+ }
}
/*
return cached_snap_trace;
}
+const bufferlist& SnapRealm::get_snap_trace_new() const
+{
+ check_cache();
+ return cached_snap_trace_new;
+}
+
void SnapRealm::build_snap_trace() const
{
cached_snap_trace.clear();
+ cached_snap_trace_new.clear();
if (global) {
SnapRealmInfo info(inode->ino(), 0, cached_seq, 0);
info.my_snaps.push_back(*p);
dout(10) << "build_snap_trace my_snaps " << info.my_snaps << dendl;
+
+ SnapRealmInfoNew ninfo(info, srnode.last_modified, srnode.change_attr);
encode(info, cached_snap_trace);
+ encode(ninfo, cached_snap_trace_new);
return;
}
info.my_snaps.push_back(p->first);
dout(10) << "build_snap_trace my_snaps " << info.my_snaps << dendl;
+ SnapRealmInfoNew ninfo(info, srnode.last_modified, srnode.change_attr);
+
encode(info, cached_snap_trace);
+ encode(ninfo, cached_snap_trace_new);
- if (parent)
+ if (parent) {
cached_snap_trace.append(parent->get_snap_trace());
+ cached_snap_trace_new.append(parent->get_snap_trace_new());
+ }
}
void SnapRealm::prune_past_parent_snaps()