]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: assert CollectionRef count is 1 on umount
authorPere Diaz Bou <pere-altea@hotmail.com>
Wed, 10 Jul 2024 13:41:33 +0000 (15:41 +0200)
committerPere Diaz Bou <pere-altea@hotmail.com>
Wed, 10 Jul 2024 13:46:45 +0000 (15:46 +0200)
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
src/os/bluestore/BlueStore.cc
src/test/objectstore/store_test.cc

index 4ecc7cc3a0628e1a5bc3f7c33cc221efb5bc9b12..3140c68c18bdbaee9db308b1b0cec07768cc6c51 100644 (file)
@@ -18246,6 +18246,7 @@ void BlueStore::_shutdown_cache()
     }
     ceph_assert(p.second->onode_space.empty());
     ceph_assert(p.second->shared_blob_set.empty());
+    ceph_assert(p.second->get_nref() == 1);
   }
   coll_map.clear();
   for (auto i : onode_cache_shards) {
index c14a5b02889ba14e0c55501dd6e33b5250ebc093..04de4c411475d6632a64d42cda8ac9a92e9eb68d 100644 (file)
@@ -526,6 +526,7 @@ TEST_P(StoreTest, SimpleRemount) {
     r = queue_transaction(store, ch, std::move(t));
     ASSERT_EQ(r, 0);
   }
+  ch.reset();
 }
 
 TEST_P(StoreTest, IORemount) {
@@ -3895,6 +3896,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobTest) {
     ASSERT_EQ(r, 0);
 
     {
+      ch.reset();
       // this trims hoid one out of onode cache
       EXPECT_EQ(store->umount(), 0);
       EXPECT_EQ(store->mount(), 0);
@@ -3908,6 +3910,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobTest) {
     ASSERT_EQ(r, 0);
 
     {
+      ch.reset();
       // this ensures remove operation submitted to kv store
       EXPECT_EQ(store->umount(), 0);
       EXPECT_EQ(store->mount(), 0);
@@ -3942,6 +3945,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobTest) {
     r = queue_transaction(store, ch, std::move(t));
     ASSERT_EQ(r, 0);
   }
+  ch.reset();
 }
 
 TEST_P(StoreTest, BlueStoreUnshareBlobBugTest) {
@@ -3989,6 +3993,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobBugTest) {
     ASSERT_EQ(r, 0);
 
     {
+      ch.reset();
       // this trims hoid one out of onode cache
       EXPECT_EQ(store->umount(), 0);
       EXPECT_EQ(store->mount(), 0);
@@ -10325,6 +10330,7 @@ TEST_P(StoreTest, BluestoreStrayOmapDetection)
   // inject stray omap
   bstore->inject_stray_omap(123456, "somename");
 
+  ch.reset();
   bstore->umount();
   // check we detect injected stray omap..
 
@@ -10365,6 +10371,7 @@ TEST_P(StoreTest, BluestorePerPoolOmapFixOnMount)
   bstore->inject_legacy_omap(cid, oid);
   bstore->inject_legacy_omap(cid, oid2);
 
+  ch.reset();
   bstore->umount();
 
   // check we injected an issue
@@ -10413,6 +10420,7 @@ TEST_P(StoreTest, BluestorePerPoolOmapFixOnMount)
     int r = queue_transaction(store, ch, std::move(t));
     ASSERT_EQ(r, 0);
   }
+  ch.reset();
   bstore->umount();
   // check omap's been fixed.
   ASSERT_EQ(bstore->fsck(false), 0); // this will fail without fix for #43824
@@ -10539,6 +10547,7 @@ TEST_P(StoreTest, SpuriousReadErrorTest) {
     r = queue_transaction(store, ch, std::move(t));
     ASSERT_EQ(r, 0);
     // force cache clear
+    ch.reset();
     EXPECT_EQ(store->umount(), 0);
     EXPECT_EQ(store->mount(), 0);
   }