base inode has no parent, so can we mark its snaprealm open
immediately. This change makes sure replica mdsdir's snaplream
is opened.
Fixes: #12578
Signed-off-by: Yan, Zheng <zyan@redhat.com>
open_snaprealm();
bufferlist::iterator p = snapbl.begin();
::decode(snaprealm->srnode, p);
+ if (is_base()) {
+ bool ok = snaprealm->_open_parents(NULL);
+ assert(ok);
+ }
dout(20) << "decode_snap_blob " << *snaprealm << dendl;
}
}
// past snaprealm parents imply snapped dentry remote links.
// only important for directories. normal file data snaps are handled
// by the object store.
- if (in->snaprealm && in->snaprealm->has_past_parents()) {
+ if (in->snaprealm) {
if (!in->snaprealm->have_past_parents_open() &&
!in->snaprealm->open_parents(new C_MDC_EvalStray(this, dn))) {
return false;