op.priority = op_prio;
// don't create new dirfrag blindly
- if (!is_new() && !state_test(CDir::STATE_FRAGMENTING))
+ if (!is_new())
op.stat(nullptr, nullptr, nullptr);
if (!to_set.empty())
}
};
- if (state_test(CDir::STATE_FRAGMENTING)) {
+ if (state_test(CDir::STATE_FRAGMENTING) && is_new()) {
assert(committed_version == 0);
for (auto p = items.begin(); p != items.end(); ) {
CDentry *dn = p->second;
op.priority = op_prio;
// don't create new dirfrag blindly
- if (!is_new() && !state_test(CDir::STATE_FRAGMENTING))
+ if (!is_new())
op.stat(nullptr, nullptr, nullptr);
/*
for (const auto& dir : info.resultfrags) {
dout(10) << " storing result frag " << *dir << dendl;
+ dir->mark_new(mdr->ls);
+
// freeze and store them too
dir->auth_pin(this);
dir->state_set(CDir::STATE_FRAGMENTING);