case DSOP_COLL_ADD:
do_coll_add(gen);
break;
+ case DSOP_COLL_RENAME:
+ do_coll_rename(gen);
+ break;
case DSOP_CLONE:
do_clone(gen);
break;
_do_coll_move(new_coll->m_coll, orig_coll->m_coll, *obj);
}
-void DeterministicOpSequence::do_coll_rename(rngen_t& gen) {
+void DeterministicOpSequence::do_coll_rename(rngen_t& gen)
+{
+ int coll_pos = _gen_coll_id(gen);
+ dout(0) << "do_coll_rename coll pos #" << coll_pos << dendl;
+
+ coll_entry_t *coll_entry = get_coll_at(coll_pos);
+ if (!coll_entry) {
+ dout(0) << "do_coll_rename no collection at pos #" << coll_pos << dendl;
+ return;
+ }
+
+ coll_t orig_coll = coll_entry->m_coll;
+ char buf[100];
+ memset(buf, 0, 100);
+ snprintf(buf, 100, "0.%d_head", m_next_coll_nr++);
+ coll_t new_coll(buf);
+ coll_entry->m_coll = new_coll;
+ dout(0) << "do_coll_rename " << orig_coll.to_str()
+ << " => " << new_coll.to_str() << dendl;
+ _do_coll_rename(orig_coll, new_coll);
}
void DeterministicOpSequence::do_coll_add(rngen_t& gen)
t.collection_add(orig_coll, new_coll, obj);
m_store->apply_transaction(t);
}
+
+void DeterministicOpSequence::_do_coll_rename(coll_t orig_coll, coll_t new_coll)
+{
+ ObjectStore::Transaction t;
+ t.collection_rename(orig_coll, new_coll);
+ m_store->apply_transaction(t);
+}
hobject_t& new_obj, uint64_t srcoff, uint64_t srclen, uint64_t dstoff);
virtual void _do_coll_move(coll_t new_coll, coll_t old_coll, hobject_t& obj);
virtual void _do_coll_add(coll_t orig_coll, coll_t new_coll, hobject_t& obj);
+ virtual void _do_coll_rename(coll_t orig_coll, coll_t new_coll);
int _gen_coll_id(rngen_t& gen);
int _gen_obj_id(rngen_t& gen);