snapid_t seq;
snapid_t last_created;
snapid_t last_destroyed = mdcache->mds->snapclient->get_last_destroyed();
+ utime_t last_modified = srnode.last_modified;
+ uint64_t change_attr = srnode.change_attr;
if (global || srnode.is_parent_global()) {
last_created = mdcache->mds->snapclient->get_last_created();
seq = std::max(last_created, last_destroyed);
seq = srnode.seq;
}
if (cached_seq >= seq &&
- cached_last_destroyed == last_destroyed)
+ cached_last_destroyed == last_destroyed &&
+ cached_last_modified == last_modified &&
+ cached_change_attr >= change_attr) {
return;
+ }
cached_snap_context.clear();
cached_seq = seq;
cached_last_created = last_created;
cached_last_destroyed = last_destroyed;
+ cached_last_modified = last_modified;
+ cached_change_attr = change_attr;
cached_subvolume_ino = 0;
if (parent)
<< " cached_seq " << cached_seq
<< " cached_last_created " << cached_last_created
<< " cached_last_destroyed " << cached_last_destroyed
+ << " cached_last_modified " << cached_last_modified
+ << " cached_change_attr " << cached_change_attr
<< ")" << dendl;
}
mutable ceph::buffer::list cached_snap_trace;
mutable ceph::buffer::list cached_snap_trace_new;
mutable inodeno_t cached_subvolume_ino = 0;
+ mutable utime_t cached_last_modified = utime_t();
+ mutable uint64_t cached_change_attr = 0;
};
std::ostream& operator<<(std::ostream& out, const SnapRealm &realm);