diff options
-rw-r--r-- | src/test/osd/Object.cc | 9 | ||||
-rw-r--r-- | src/test/osd/RadosModel.h | 61 |
2 files changed, 17 insertions, 53 deletions
diff --git a/src/test/osd/Object.cc b/src/test/osd/Object.cc index 408cc63ac02..d4be4df1bdd 100644 --- a/src/test/osd/Object.cc +++ b/src/test/osd/Object.cc @@ -9,10 +9,11 @@ ostream &operator<<(ostream &out, const ContDesc &rhs) { - return out << "ObjNum: " << rhs.objnum - << " snap: " << rhs.cursnap - << " seqnum: " << rhs.seqnum - << " prefix: " << rhs.prefix; + return out << "(ObjNum " << rhs.objnum + << " snap " << rhs.cursnap + << " seq_num " << rhs.seqnum + //<< " prefix " << rhs.prefix + << ")"; } void VarLenGenerator::get_ranges(const ContDesc &cont, interval_set<uint64_t> &out) { diff --git a/src/test/osd/RadosModel.h b/src/test/osd/RadosModel.h index 7bda0fe9a56..a87ecebb4c1 100644 --- a/src/test/osd/RadosModel.h +++ b/src/test/osd/RadosModel.h @@ -403,8 +403,8 @@ public: void update_object_full(const string &oid, const ObjectDesc &contents) { - pool_obj_cont.rbegin()->second.erase(oid); - pool_obj_cont.rbegin()->second.insert(pair<string,ObjectDesc>(oid, contents)); + pool_obj_cont[current_snap].erase(oid); + pool_obj_cont[current_snap].insert(pair<string,ObjectDesc>(oid, contents)); } void update_object_version(const string &oid, uint64_t version) @@ -416,7 +416,7 @@ public: map<string,ObjectDesc>::iterator j = i->second.find(oid); if (j != i->second.end()) { j->second.version = version; - cout << __func__ << " oid " << oid << " is version " << version << std::endl; + cout << __func__ << " oid " << oid << " v " << version << " " << j->second.most_recent() << std::endl; break; } } @@ -792,25 +792,12 @@ public: context->oid_in_use.insert(oid); context->oid_not_in_use.erase(oid); - vector<uint64_t> snapset(context->snaps.size()); - int j = 0; - for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin(); - i != context->snaps.rend(); - ++i, ++j) { - snapset[j] = i->second; - } interval_set<uint64_t> ranges; context->cont_gen.get_ranges(cont, ranges); std::cout << num << ": seq_num " << context->seq_num << " ranges " << ranges << std::endl; context->seq_num++; context->state_lock.Unlock(); - int r = context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset); - if (r) { - cerr << " r is " << r << " snapset is " << snapset << " seq is " << context->seq << std::endl; - assert(0); - } - waiting_on = ranges.num_intervals(); //cout << " waiting_on = " << waiting_on << std::endl; ContentsGenerator::iterator gen_pos = context->cont_gen.get_iterator(cont); @@ -921,23 +908,10 @@ public: context->remove_object(oid); - vector<uint64_t> snapset(context->snaps.size()); - int j = 0; - for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin(); - i != context->snaps.rend(); - ++i, ++j) { - snapset[j] = i->second; - } interval_set<uint64_t> ranges; context->state_lock.Unlock(); - int r = context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset); - if (r) { - cerr << "r is " << r << " snapset is " << snapset << " seq is " << context->seq << std::endl; - assert(0); - } - - r = context->io_ctx.remove(context->prefix+oid); + int r = context->io_ctx.remove(context->prefix+oid); if (r && !(r == -ENOENT && !present)) { cerr << "r is " << r << " while deleting " << oid << " and present is " << present << std::endl; assert(0); @@ -1071,6 +1045,7 @@ public: << err << std::endl; } } else { + cout << num << ": expect " << old_value.most_recent() << std::endl; assert(!old_value.deleted()); if (old_value.has_contents()) { ContDesc to_check; @@ -1271,17 +1246,8 @@ public: context->oid_in_use.insert(oid); context->oid_not_in_use.erase(oid); - vector<uint64_t> snapset(context->snaps.size()); - int j = 0; - for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin(); - i != context->snaps.rend(); - ++i, ++j) { - snapset[j] = i->second; - } - TestWatchContext *ctx = context->get_watch_context(oid); context->state_lock.Unlock(); - assert(!context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset)); int r; if (!ctx) { { @@ -1351,15 +1317,7 @@ public: context->roll_back(oid, roll_back_to); uint64_t snap = context->snaps[roll_back_to]; - vector<uint64_t> snapset(context->snaps.size()); - int j = 0; - for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin(); - i != context->snaps.rend(); - ++i, ++j) { - snapset[j] = i->second; - } context->state_lock.Unlock(); - assert(!context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset)); op.selfmanaged_snap_rollback(snap); @@ -1440,6 +1398,8 @@ public: snap = -1; } context->find_object(oid_src, &src_value, snap); + if (!src_value.deleted()) + context->update_object_full(oid, src_value); string src = context->prefix+oid_src; op.copy_from(src.c_str(), context->io_ctx, src_value.version); @@ -1462,6 +1422,7 @@ public: librados::SNAP_HEAD, librados::OPERATION_ORDER_READS_WRITES, // order wrt previous write/update NULL); + } void _finish(CallbackInfo *info) @@ -1477,14 +1438,16 @@ public: assert(comp->is_complete()); cout << num << ": finishing copy_from to " << context->prefix + oid << std::endl; if ((r = comp->get_return_value())) { - if (!(r == -ENOENT && src_value.deleted())) { + if (r == -ENOENT && src_value.deleted()) { + cout << num << ": got expected ENOENT (src dne)" << std::endl; + } else { cerr << "Error: oid " << oid << " copy_from " << oid_src << " returned error code " << r << std::endl; + assert(0); } } else { assert(!version || comp->get_version64() == version); version = comp->get_version64(); - context->update_object_full(oid, src_value); context->update_object_version(oid, comp->get_version64()); } } else if (info->id == 1) { |