From: Adam Kupczyk Date: Wed, 7 Feb 2024 17:26:50 +0000 (+0000) Subject: os/bluestore: Adapt multi bdev label tests for !bdev->supported_bdev_label() X-Git-Tag: v20.0.0~1321^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=660709154795a299e81054229968ae3169afb3c6;p=ceph.git os/bluestore: Adapt multi bdev label tests for !bdev->supported_bdev_label() Just skip tests. Signed-off-by: Adam Kupczyk --- diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 886b34bc7594..ef2fc4d86ab9 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -3381,6 +3381,9 @@ public: KeyValueDB* get_kv() { return db; } + BlockDevice* get_bdev() { + return bdev; + } int queue_transactions( CollectionHandle& ch, diff --git a/src/test/objectstore/store_test.cc b/src/test/objectstore/store_test.cc index d19d7544a5f1..ec4e605f8cb9 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -216,6 +216,13 @@ class MultiLabelTest : public StoreTestDeferredSetup { store->umount(); mounted = false; } + bool bdev_supports_label() { + BlueStore* bstore = dynamic_cast (store.get()); + if (!bstore) return false; + auto bdev = bstore->get_bdev(); + if (!bdev) return false; + return bdev->supported_bdev_label(); + } bool corrupt_disk_at(uint64_t position) { int fd = -1; auto close_fd = make_scope_guard([&] { @@ -10883,20 +10890,26 @@ TEST_P(MultiLabelTest, MultiSelectableOff) { SetVal(g_conf(), "bluestore_bdev_label_multi", "false"); g_conf().apply_changes(nullptr); DeferredSetup(); - store->umount(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } + umount(); bluestore_bdev_label_t label; int r = BlueStore::_read_bdev_label( g_ceph_context, get_data_dir() + "/block", &label, 0); ASSERT_EQ(r, 0); ASSERT_EQ(label.meta.end(), label.meta.find("multi")); - store->mount(); + mount(); } TEST_P(MultiLabelTest, MultiSelectableOn) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); - store->umount(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } + umount(); bluestore_bdev_label_t label; int r = BlueStore::_read_bdev_label( g_ceph_context, get_data_dir() + "/block", &label, 0); @@ -10904,7 +10917,7 @@ TEST_P(MultiLabelTest, MultiSelectableOn) { auto it = label.meta.find("multi"); ASSERT_NE(label.meta.end(), it); ASSERT_EQ(it->second, "yes"); - store->mount(); + mount(); } TEST_P(MultiLabelTest, DetectCorruptedFirst) { @@ -10913,6 +10926,9 @@ TEST_P(MultiLabelTest, DetectCorruptedFirst) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); bool corrupt = corrupt_disk_at(0); ASSERT_EQ(corrupt, true); @@ -10926,6 +10942,9 @@ TEST_P(MultiLabelTest, FixCorruptedFirst) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); bool corrupt = corrupt_disk_at(0); ASSERT_EQ(corrupt, true); @@ -10941,6 +10960,9 @@ TEST_P(MultiLabelTest, FixCorruptedTwo) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); bool corrupt = corrupt_disk_at(0); ASSERT_EQ(corrupt, true); @@ -10958,6 +10980,9 @@ TEST_P(MultiLabelTest, FixCorruptedThree) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); bool corrupt = corrupt_disk_at(0); ASSERT_EQ(corrupt, true); @@ -10977,6 +11002,9 @@ TEST_P(MultiLabelTest, CantFixCorruptedAll) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); bool corrupt = corrupt_disk_at(0); ASSERT_EQ(corrupt, true); @@ -10997,6 +11025,9 @@ TEST_P(MultiLabelTest, SelectNewestLabel) { SetVal(g_conf(), "bluestore_bdev_label_multi", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); bluestore_bdev_label_t label; int r = BlueStore::_read_bdev_label( @@ -11024,6 +11055,9 @@ TEST_P(MultiLabelTest, UpgradeToMultiLabel) { SetVal(g_conf(), "bluestore_bdev_label_multi_upgrade", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } umount(); ASSERT_EQ(store->repair(false), 0); ASSERT_EQ(store->fsck(false), 0); @@ -11045,6 +11079,9 @@ TEST_P(MultiLabelTest, UpgradeToMultiLabelCollisionWithBlueFS) { SetVal(g_conf(), "bluestore_bdev_label_multi_upgrade", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } //fill BlueFS with data BlueStore* bstore = dynamic_cast (store.get()); ceph_assert(bstore); @@ -11075,6 +11112,9 @@ TEST_P(MultiLabelTest, UpgradeToMultiLabelCollisionObjects) { SetVal(g_conf(), "bluestore_bdev_label_multi_upgrade", "true"); g_conf().apply_changes(nullptr); DeferredSetup(); + if (!bdev_supports_label()) { + GTEST_SKIP(); + } //fill with object data coll_t cid; auto ch = store->create_new_collection(cid);