op.priority = op_prio;
// don't create new dirfrag blindly
- if (!is_new() && !state_test(CDir::STATE_FRAGMENTING))
+ if (!is_new())
op.stat(NULL, (ceph::real_time*) NULL, NULL);
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(NULL, (ceph::real_time*)NULL, NULL);
/*
CDir *dir = *p;
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);