// make sure snaprealm parents are open...
if (cur->snaprealm && !cur->snaprealm->open && mdr &&
- !cur->snaprealm->open_parents(new C_MDS_RetryRequest(this, mdr)))
+ !cur->snaprealm->open_parents(_get_waiter(mdr, req, fin))) {
return 1;
+ }
// dentry
mds->forward_message_mds(req, dauth.first);
if (mds->logger) mds->logger->inc(l_mds_tfw);
+ assert(fin == NULL);
return 2;
}
}
c->bl = bl;
r = path_traverse(NULL, NULL, c, path, &trace, NULL, MDS_TRAVERSE_DISCOVER);
if (r > 0)
- return;
- delete c; // path_traverse doesn't clean it up for us.
+ return;
+ delete c; // path_traverse doesn't clean it up for us for r <= 0
fin->finish(r);
delete fin;