Skip to content

Commit a926a4a

Browse files
committed
os/bluestore: assert CollectionRef count is 1 on umount
Signed-off-by: Pere Diaz Bou <[email protected]>
1 parent f4b0bb1 commit a926a4a

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/os/bluestore/BlueStore.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18246,6 +18246,7 @@ void BlueStore::_shutdown_cache()
1824618246
}
1824718247
ceph_assert(p.second->onode_space.empty());
1824818248
ceph_assert(p.second->shared_blob_set.empty());
18249+
ceph_assert(p.second->get_nref() == 1);
1824918250
}
1825018251
coll_map.clear();
1825118252
for (auto i : onode_cache_shards) {

src/test/objectstore/store_test.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@ TEST_P(StoreTest, SimpleRemount) {
526526
r = queue_transaction(store, ch, std::move(t));
527527
ASSERT_EQ(r, 0);
528528
}
529+
ch.reset();
529530
}
530531

531532
TEST_P(StoreTest, IORemount) {
@@ -3895,6 +3896,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobTest) {
38953896
ASSERT_EQ(r, 0);
38963897

38973898
{
3899+
ch.reset();
38983900
// this trims hoid one out of onode cache
38993901
EXPECT_EQ(store->umount(), 0);
39003902
EXPECT_EQ(store->mount(), 0);
@@ -3908,6 +3910,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobTest) {
39083910
ASSERT_EQ(r, 0);
39093911

39103912
{
3913+
ch.reset();
39113914
// this ensures remove operation submitted to kv store
39123915
EXPECT_EQ(store->umount(), 0);
39133916
EXPECT_EQ(store->mount(), 0);
@@ -3942,6 +3945,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobTest) {
39423945
r = queue_transaction(store, ch, std::move(t));
39433946
ASSERT_EQ(r, 0);
39443947
}
3948+
ch.reset();
39453949
}
39463950

39473951
TEST_P(StoreTest, BlueStoreUnshareBlobBugTest) {
@@ -3989,6 +3993,7 @@ TEST_P(StoreTest, BlueStoreUnshareBlobBugTest) {
39893993
ASSERT_EQ(r, 0);
39903994

39913995
{
3996+
ch.reset();
39923997
// this trims hoid one out of onode cache
39933998
EXPECT_EQ(store->umount(), 0);
39943999
EXPECT_EQ(store->mount(), 0);
@@ -10325,6 +10330,7 @@ TEST_P(StoreTest, BluestoreStrayOmapDetection)
1032510330
// inject stray omap
1032610331
bstore->inject_stray_omap(123456, "somename");
1032710332

10333+
ch.reset();
1032810334
bstore->umount();
1032910335
// check we detect injected stray omap..
1033010336

@@ -10365,6 +10371,7 @@ TEST_P(StoreTest, BluestorePerPoolOmapFixOnMount)
1036510371
bstore->inject_legacy_omap(cid, oid);
1036610372
bstore->inject_legacy_omap(cid, oid2);
1036710373

10374+
ch.reset();
1036810375
bstore->umount();
1036910376

1037010377
// check we injected an issue
@@ -10413,6 +10420,7 @@ TEST_P(StoreTest, BluestorePerPoolOmapFixOnMount)
1041310420
int r = queue_transaction(store, ch, std::move(t));
1041410421
ASSERT_EQ(r, 0);
1041510422
}
10423+
ch.reset();
1041610424
bstore->umount();
1041710425
// check omap's been fixed.
1041810426
ASSERT_EQ(bstore->fsck(false), 0); // this will fail without fix for #43824
@@ -10539,6 +10547,7 @@ TEST_P(StoreTest, SpuriousReadErrorTest) {
1053910547
r = queue_transaction(store, ch, std::move(t));
1054010548
ASSERT_EQ(r, 0);
1054110549
// force cache clear
10550+
ch.reset();
1054210551
EXPECT_EQ(store->umount(), 0);
1054310552
EXPECT_EQ(store->mount(), 0);
1054410553
}

0 commit comments

Comments
 (0)