From b87adb104941d2cf6e798fb4c808cf2cbfe0d54b Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Wed, 19 Oct 2022 17:13:59 +0900 Subject: [PATCH] crimson/os/seastore/cbj: merge mkfs() in cbj into open_for_mkfs() Signed-off-by: Myoungwon Oh --- .../journal/circular_bounded_journal.cc | 53 +++++++++---------- .../journal/circular_bounded_journal.h | 15 ------ src/test/crimson/seastore/test_cbjournal.cc | 6 +-- .../seastore/transaction_manager_test_state.h | 20 ++----- 4 files changed, 32 insertions(+), 62 deletions(-) diff --git a/src/crimson/os/seastore/journal/circular_bounded_journal.cc b/src/crimson/os/seastore/journal/circular_bounded_journal.cc index 2d952539dfa..ed1d3aaa69a 100644 --- a/src/crimson/os/seastore/journal/circular_bounded_journal.cc +++ b/src/crimson/os/seastore/journal/circular_bounded_journal.cc @@ -28,9 +28,27 @@ CircularBoundedJournal::CircularBoundedJournal( const std::string &path) : trimmer(trimmer), device(device), path(path) {} -CircularBoundedJournal::mkfs_ret CircularBoundedJournal::mkfs() +ceph::bufferlist CircularBoundedJournal::encode_header() +{ + bufferlist bl; + encode(header, bl); + auto header_crc_filler = bl.append_hole(sizeof(checksum_t)); + auto bliter = bl.cbegin(); + auto header_crc = bliter.crc32c( + ceph::encoded_sizeof_bounded(), + -1); + ceph_le32 header_crc_le; + header_crc_le = header_crc; + header_crc_filler.copy_in( + sizeof(checksum_t), + reinterpret_cast(&header_crc_le)); + return bl; +} + +CircularBoundedJournal::open_for_mkfs_ret +CircularBoundedJournal::open_for_mkfs() { - LOG_PREFIX(CircularBoundedJournal::mkfs); + LOG_PREFIX(CircularBoundedJournal::open_for_mkfs); assert(device); ceph::bufferlist bl; CircularBoundedJournal::cbj_header_t head; @@ -49,37 +67,16 @@ CircularBoundedJournal::mkfs_ret CircularBoundedJournal::mkfs() "initialize header block in CircularBoundedJournal, length {}", bl.length()); return write_header( - ).handle_error( - mkfs_ertr::pass_further{}, + ).safe_then([this]() { + return open_for_mount(); + }).handle_error( + open_for_mkfs_ertr::pass_further{}, crimson::ct_error::assert_all{ - "Invalid error in CircularBoundedJournal::mkfs" + "Invalid error write_header" } ); } -ceph::bufferlist CircularBoundedJournal::encode_header() -{ - bufferlist bl; - encode(header, bl); - auto header_crc_filler = bl.append_hole(sizeof(checksum_t)); - auto bliter = bl.cbegin(); - auto header_crc = bliter.crc32c( - ceph::encoded_sizeof_bounded(), - -1); - ceph_le32 header_crc_le; - header_crc_le = header_crc; - header_crc_filler.copy_in( - sizeof(checksum_t), - reinterpret_cast(&header_crc_le)); - return bl; -} - -CircularBoundedJournal::open_for_mkfs_ret -CircularBoundedJournal::open_for_mkfs() -{ - return open_for_mount(); -} - CircularBoundedJournal::open_for_mount_ret CircularBoundedJournal::open_for_mount() { diff --git a/src/crimson/os/seastore/journal/circular_bounded_journal.h b/src/crimson/os/seastore/journal/circular_bounded_journal.h index 1a50f43751c..0f3ac8aeee6 100644 --- a/src/crimson/os/seastore/journal/circular_bounded_journal.h +++ b/src/crimson/os/seastore/journal/circular_bounded_journal.h @@ -135,21 +135,6 @@ public: ceph::bufferlist encode_header(); - using mkfs_ertr = crimson::errorator< - crimson::ct_error::input_output_error, - crimson::ct_error::invarg - >; - using mkfs_ret = mkfs_ertr::future<>; - - /* - * mkfs - * - * make a new journal layout even if old journal exists - * - * - */ - mkfs_ret mkfs(); - /** * CircularBoundedJournal structure diff --git a/src/test/crimson/seastore/test_cbjournal.cc b/src/test/crimson/seastore/test_cbjournal.cc index 655f3dbf7a7..529e782a111 100644 --- a/src/test/crimson/seastore/test_cbjournal.cc +++ b/src/test/crimson/seastore/test_cbjournal.cc @@ -252,15 +252,15 @@ struct cbjournal_test_t : public seastar_test_suite_t, JournalTrimmer device->set_journal_size(CBTEST_DEFAULT_TEST_SIZE); return device->mkfs(config ).safe_then([this]() { - return cbj->mkfs( - ).safe_then([]() { + return cbj->open_for_mkfs( + ).safe_then([](auto q) { return seastar::now(); }); }); }).unsafe_get0(); } void open() { - return cbj->open_for_mkfs( + return cbj->open_for_mount( ).safe_then([](auto q) { return seastar::now(); }).unsafe_get0(); diff --git a/src/test/crimson/seastore/transaction_manager_test_state.h b/src/test/crimson/seastore/transaction_manager_test_state.h index f640008befe..f346a5d1254 100644 --- a/src/test/crimson/seastore/transaction_manager_test_state.h +++ b/src/test/crimson/seastore/transaction_manager_test_state.h @@ -217,22 +217,10 @@ protected: } virtual FuturizedStore::mkfs_ertr::future<> _mkfs() { - if (journal_type == journal_type_t::SEGMENTED) { - return tm->mkfs( - ).handle_error( - crimson::ct_error::assert_all{"Error in mkfs"} - ); - } else { - return static_cast(tm->get_journal())->mkfs( - ).safe_then([this]() { - return tm->mkfs( - ).handle_error( - crimson::ct_error::assert_all{"Error in mkfs"} - ); - }).handle_error( - crimson::ct_error::assert_all{"Error in mkfs"} - ); - } + return tm->mkfs( + ).handle_error( + crimson::ct_error::assert_all{"Error in mkfs"} + ); } auto create_mutate_transaction() { -- 2.39.5