From: Adam Kupczyk Date: Wed, 22 Sep 2021 13:18:49 +0000 (+0200) Subject: ceph_test_objectstore: Test for fixing write pointer X-Git-Tag: v17.1.0~535^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d723f65938fda4507a256d3a0871bec5b17292fc;p=ceph.git ceph_test_objectstore: Test for fixing write pointer Test for checking if bluestore mount() can nicely handle unexpected change of SMR sequential zone write pointer. Signed-off-by: Adam Kupczyk --- diff --git a/src/test/objectstore/store_test.cc b/src/test/objectstore/store_test.cc index cc5d3059c00af..1c44f99eba596 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -9225,6 +9225,41 @@ TEST_P(StoreTest, mergeRegionTest) { } } +TEST_P(StoreTest, FixSMRWritePointer) { + if(string(GetParam()) != "bluestore") + return; + if (!smr) + return; + int r = store->umount(); + ASSERT_EQ(0, r); + + // copied from StoreTestFixture + std::string path = GetParam() + ".test_temp_dir"s; + + std::string p = path + "/block"; + BlockDevice* bdev = BlockDevice::create(g_ceph_context, p, nullptr, nullptr, nullptr, nullptr); + r = bdev->open(p); + ASSERT_EQ(0, r); + ASSERT_EQ(true, bdev->is_smr()); + + std::vector wp = bdev->get_zones(); + uint64_t first_seq_zone = bdev->get_conventional_region_size() / bdev->get_zone_size(); + + IOContext ioc(g_ceph_context, NULL, true); + bufferlist bl; + bl.append(std::string(1024 * 1024, 'x')); + r = bdev->aio_write(wp[first_seq_zone], bl, &ioc, false); + ASSERT_EQ(0, r); + bdev->aio_submit(&ioc); + ioc.aio_wait(); + bdev->close(); + delete bdev; + + r = store->mount(); + ASSERT_EQ(0, r); +} + + TEST_P(StoreTestSpecificAUSize, BluestoreEnforceHWSettingsHdd) { if (string(GetParam()) != "bluestore") return;