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);
/*
}
MEMPOOL_DEFINE_OBJECT_FACTORY(CDir, co_dir, mds_co);
-MEMPOOL_DEFINE_OBJECT_FACTORY(CDir::scrub_info_t, scrub_info_t, mds_co)
\ No newline at end of file
+MEMPOOL_DEFINE_OBJECT_FACTORY(CDir::scrub_info_t, scrub_info_t, mds_co)
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);