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: v19.2.1~271^2~17 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=33a6880009536432d18a0025885c79009a8f466c;p=ceph.git os/bluestore: Adapt multi bdev label tests for !bdev->supported_bdev_label() Just skip tests. Signed-off-by: Adam Kupczyk (cherry picked from commit 660709154795a299e81054229968ae3169afb3c6) --- diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 47b501f141974..bc3c3cb531d16 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -3352,6 +3352,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 f3893f3aa45a5..0c233876d766b 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -198,6 +198,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([&] { @@ -10361,20 +10368,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); @@ -10382,7 +10395,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) { @@ -10391,6 +10404,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); @@ -10404,6 +10420,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); @@ -10419,6 +10438,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); @@ -10436,6 +10458,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); @@ -10455,6 +10480,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); @@ -10475,6 +10503,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( @@ -10502,6 +10533,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); @@ -10523,6 +10557,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); @@ -10553,6 +10590,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);