From 491c2545f3b0942c9f33bd4973f622ed41525d55 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 31 Dec 2018 23:04:20 +0800 Subject: [PATCH] Revert "os/objectstore: add new op OP_CREATE for create a new object." This reverts commit 22f73ba62eb1fe337622ea2aefdcd829f8def851. Fixes: http://tracker.ceph.com/issues/37774 Signed-off-by: Kefu Chai --- src/os/ObjectStore.h | 15 --------------- src/os/Transaction.cc | 10 ---------- src/os/bluestore/BlueStore.cc | 23 +++++++---------------- src/os/bluestore/BlueStore.h | 2 +- src/os/filestore/FileStore.cc | 1 - src/os/kstore/KStore.cc | 2 -- src/os/memstore/MemStore.cc | 1 - src/osd/ECTransaction.cc | 2 +- src/osd/ReplicatedBackend.cc | 2 +- 9 files changed, 10 insertions(+), 48 deletions(-) diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h index 8dd2295d11f4..7cb53adf4486 100644 --- a/src/os/ObjectStore.h +++ b/src/os/ObjectStore.h @@ -307,7 +307,6 @@ public: public: enum { OP_NOP = 0, - OP_CREATE = 7, // cid, oid OP_TOUCH = 9, // cid, oid OP_WRITE = 10, // cid, oid, offset, len, bl OP_ZERO = 11, // cid, oid, offset, len @@ -602,7 +601,6 @@ public: case OP_NOP: break; - case OP_CREATE: case OP_TOUCH: case OP_REMOVE: case OP_SETATTR: @@ -994,19 +992,6 @@ public: _op->op = OP_NOP; data.ops++; } - /** - * create - * - * create an object that does not yet exist - * (behavior is undefined if the object already exists) - */ - void create(const coll_t& cid, const ghobject_t& oid) { - Op* _op = _get_next_op(); - _op->op = OP_CREATE; - _op->cid = _get_coll_id(cid); - _op->oid = _get_object_id(oid); - data.ops++; - } /** * touch * diff --git a/src/os/Transaction.cc b/src/os/Transaction.cc index e0c2b7b26ac3..ad390a1c3eee 100644 --- a/src/os/Transaction.cc +++ b/src/os/Transaction.cc @@ -19,16 +19,6 @@ void ObjectStore::Transaction::dump(ceph::Formatter *f) case Transaction::OP_NOP: f->dump_string("op_name", "nop"); break; - case Transaction::OP_CREATE: - { - coll_t cid = i.get_cid(op->cid); - ghobject_t oid = i.get_oid(op->oid); - f->dump_string("op_name", "create"); - f->dump_stream("collection") << cid; - f->dump_stream("oid") << oid; - } - break; - case Transaction::OP_TOUCH: { coll_t cid = i.get_cid(op->cid); diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 7d7d9d156c30..220d1c07f957 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -3315,8 +3315,7 @@ uint64_t BlueStore::Collection::make_blob_unshared(SharedBlob *sb) BlueStore::OnodeRef BlueStore::Collection::get_onode( const ghobject_t& oid, - bool create, - bool is_createop) + bool create) { ceph_assert(create ? lock.is_wlocked() : lock.is_locked()); @@ -3329,12 +3328,9 @@ BlueStore::OnodeRef BlueStore::Collection::get_onode( } } - OnodeRef o = OnodeRef(); - if (!is_createop) { - o = onode_map.lookup(oid); - if (o) - return o; - } + OnodeRef o = onode_map.lookup(oid); + if (o) + return o; mempool::bluestore_cache_other::string key; get_object_key(store->cct, oid, &key); @@ -3343,12 +3339,9 @@ BlueStore::OnodeRef BlueStore::Collection::get_onode( << pretty_binary_string(key) << dendl; bufferlist v; - int r = -ENOENT; + int r = store->db->get(PREFIX_OBJ, key.c_str(), key.size(), &v); + ldout(store->cct, 20) << " r " << r << " v.len " << v.length() << dendl; Onode *on; - if (!is_createop) { - r = store->db->get(PREFIX_OBJ, key.c_str(), key.size(), &v); - ldout(store->cct, 20) << " r " << r << " v.len " << v.length() << dendl; - } if (v.length() == 0) { ceph_assert(r == -ENOENT); if (!store->cct->_conf->bluestore_debug_misc && @@ -10791,7 +10784,6 @@ void BlueStore::_txc_add_transaction(TransContext *txc, Transaction *t) // these operations implicity create the object bool create = false; if (op->op == Transaction::OP_TOUCH || - op->op == Transaction::OP_CREATE || op->op == Transaction::OP_WRITE || op->op == Transaction::OP_ZERO) { create = true; @@ -10802,7 +10794,7 @@ void BlueStore::_txc_add_transaction(TransContext *txc, Transaction *t) OnodeRef &o = ovec[op->oid]; if (!o) { ghobject_t oid = i.get_oid(op->oid); - o = c->get_onode(oid, create, op->op == Transaction::OP_CREATE); + o = c->get_onode(oid, create); } if (!create && (!o || !o->exists)) { dout(10) << __func__ << " op " << op->op << " got ENOENT on " @@ -10812,7 +10804,6 @@ void BlueStore::_txc_add_transaction(TransContext *txc, Transaction *t) } switch (op->op) { - case Transaction::OP_CREATE: case Transaction::OP_TOUCH: r = _touch(txc, c, o); break; diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 689fbf4175fd..a263257785dc 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -1381,7 +1381,7 @@ public: pool_opts_t pool_opts; ContextQueue *commit_queue; - OnodeRef get_onode(const ghobject_t& oid, bool create, bool is_createop=false); + OnodeRef get_onode(const ghobject_t& oid, bool create); // the terminology is confusing here, sorry! // diff --git a/src/os/filestore/FileStore.cc b/src/os/filestore/FileStore.cc index 9c4dd3141d98..cd03f6e36dd0 100644 --- a/src/os/filestore/FileStore.cc +++ b/src/os/filestore/FileStore.cc @@ -2760,7 +2760,6 @@ void FileStore::_do_transaction( switch (op->op) { case Transaction::OP_NOP: break; - case Transaction::OP_CREATE: case Transaction::OP_TOUCH: { const coll_t &_cid = i.get_cid(op->cid); diff --git a/src/os/kstore/KStore.cc b/src/os/kstore/KStore.cc index 267cd9ad4c99..e0476c9a2894 100644 --- a/src/os/kstore/KStore.cc +++ b/src/os/kstore/KStore.cc @@ -2312,7 +2312,6 @@ void KStore::_txc_add_transaction(TransContext *txc, Transaction *t) // these operations implicity create the object bool create = false; if (op->op == Transaction::OP_TOUCH || - op->op == Transaction::OP_CREATE || op->op == Transaction::OP_WRITE || op->op == Transaction::OP_ZERO) { create = true; @@ -2330,7 +2329,6 @@ void KStore::_txc_add_transaction(TransContext *txc, Transaction *t) } switch (op->op) { - case Transaction::OP_CREATE: case Transaction::OP_TOUCH: r = _touch(txc, c, o); break; diff --git a/src/os/memstore/MemStore.cc b/src/os/memstore/MemStore.cc index fc0bb537eea1..ea87c80cc84b 100644 --- a/src/os/memstore/MemStore.cc +++ b/src/os/memstore/MemStore.cc @@ -667,7 +667,6 @@ void MemStore::_do_transaction(Transaction& t) switch (op->op) { case Transaction::OP_NOP: break; - case Transaction::OP_CREATE: case Transaction::OP_TOUCH: { coll_t cid = i.get_cid(op->cid); diff --git a/src/osd/ECTransaction.cc b/src/osd/ECTransaction.cc index e2db8aa5508d..ee791d633c6e 100644 --- a/src/osd/ECTransaction.cc +++ b/src/osd/ECTransaction.cc @@ -264,7 +264,7 @@ void ECTransaction::generate_transactions( [&](const PGTransaction::ObjectOperation::Init::None &) {}, [&](const PGTransaction::ObjectOperation::Init::Create &op) { for (auto &&st: *transactions) { - st.second.create( + st.second.touch( coll_t(spg_t(pgid, st.first)), ghobject_t(oid, ghobject_t::NO_GEN, st.first)); } diff --git a/src/osd/ReplicatedBackend.cc b/src/osd/ReplicatedBackend.cc index 5b7f9852be69..a06c4f4448ea 100644 --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@ -322,7 +322,7 @@ void generate_transaction( [&](const PGTransaction::ObjectOperation::Init::None &) { }, [&](const PGTransaction::ObjectOperation::Init::Create &op) { - t->create(coll, goid); + t->touch(coll, goid); }, [&](const PGTransaction::ObjectOperation::Init::Clone &op) { t->clone( -- 2.47.3