From: Samuel Just Date: Wed, 28 Apr 2021 07:25:02 +0000 (-0700) Subject: crimson/os/seastore: only create handle in create_new_collection X-Git-Tag: v17.1.0~2043^2~13 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d67b3c22499bf57b80a656edbb3684088e5e5dd1;p=ceph-ci.git crimson/os/seastore: only create handle in create_new_collection FuturizedStore::create_new_collection isn't supposed to actually create the collection. See OSD::mkfs for a usage example. Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 8455a94e033..4fb577113a7 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -107,21 +107,7 @@ seastar::future SeaStore::create_new_collection(const coll_t& cid { LOG_PREFIX(SeaStore::create_new_collection); DEBUG("{}", cid); - auto c = _get_collection(cid); - return repeat_with_internal_context( - c, - ceph::os::Transaction{}, - [this, cid](auto &ctx) { - return _create_collection( - ctx, - cid, - 4 /* TODO */ - ).safe_then([this, &ctx] { - return transaction_manager->submit_transaction(std::move(ctx.transaction)); - }); - }).then([c] { - return CollectionRef(c); - }); + return seastar::make_ready_future(_get_collection(cid)); } seastar::future SeaStore::open_collection(const coll_t& cid) diff --git a/src/test/crimson/seastore/test_seastore.cc b/src/test/crimson/seastore/test_seastore.cc index bbea9222864..1100306209e 100644 --- a/src/test/crimson/seastore/test_seastore.cc +++ b/src/test/crimson/seastore/test_seastore.cc @@ -40,6 +40,11 @@ struct seastore_test_t : return seastore->create_new_collection(coll_name); }).then([this](auto coll_ref) { coll = coll_ref; + CTransaction t; + t.create_collection(coll_name, 4); + return seastore->do_transaction( + coll, + std::move(t)); }); } @@ -288,6 +293,11 @@ TEST_F(seastore_test_t, collection_create_list_remove) coll_t test_coll{spg_t{pg_t{1, 0}}}; { seastore->create_new_collection(test_coll).get0(); + { + CTransaction t; + t.create_collection(test_coll, 4); + do_transaction(std::move(t)); + } auto collections = seastore->list_collections().get0(); EXPECT_EQ(collections.size(), 2); EXPECT_TRUE(contains(collections, coll_name)); @@ -295,9 +305,11 @@ TEST_F(seastore_test_t, collection_create_list_remove) } { - CTransaction t; - t.remove_collection(test_coll); - do_transaction(std::move(t)); + { + CTransaction t; + t.remove_collection(test_coll); + do_transaction(std::move(t)); + } auto collections = seastore->list_collections().get0(); EXPECT_EQ(collections.size(), 1); EXPECT_TRUE(contains(collections, coll_name));