}
}
MDSGatherBuilder gather(g_ceph_context, new C_MDS_RetryRequest(this, mdr));
+ std::vector<MDRequestRef> todispatch;
for (auto& dir : in->get_dirfrags()) {
for (auto& [dnk, dn] : *dir) {
auto* in = dn->get_projected_inode();
cache->dispatch_request(qimdr);
}));
} else {
- dispatch_request(qimdr);
- }
- if (!(qs.inc_heartbeat_count() % mds->heartbeat_reset_grace())) {
- mds->heartbeat_reset();
+ todispatch.push_back(qimdr);
}
}
}
+ for (auto& qimdr : todispatch) {
+ dispatch_request(qimdr);
+ if (!(qs.inc_heartbeat_count() % mds->heartbeat_reset_grace())) {
+ mds->heartbeat_reset();
+ }
+ }
if (gather.has_subs()) {
dout(20) << __func__ << ": waiting for sub-ops to gather" << dendl;
gather.activate();