From 7f026ba608691d9b15d0f25bdd2c4f2e79ca037f Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 27 Mar 2014 13:28:10 -0700 Subject: [PATCH] ceph_test_rados_api_tier: scrub while cache tier is missing clones Trigger a scrub to verify that we can handle a cache tier that is missing some clones. We rely on the test harness to notice the error, and we do not confirm that the scrub happened. In practice this is plenty of time, however. Signed-off-by: Sage Weil --- src/test/librados/tier.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/librados/tier.cc b/src/test/librados/tier.cc index 5628465790a..4bab8958a1f 100644 --- a/src/test/librados/tier.cc +++ b/src/test/librados/tier.cc @@ -357,6 +357,24 @@ TEST_F(LibRadosTwoPoolsPP, PromoteSnap) { ioctx.snap_set_read(my_snaps[0]); + // stop and scrub this pg (to make sure scrub can handle missing + // clones in the cache tier) + { + IoCtx cache_ioctx; + ASSERT_EQ(0, cluster.ioctx_create(cache_pool_name.c_str(), cache_ioctx)); + ostringstream ss; + ss << "{\"prefix\": \"pg scrub\", \"pgid\": \"" + << cache_ioctx.get_id() << "." + << ioctx.get_object_pg_hash_position("foo") + << "\"}"; + ASSERT_EQ(0, cluster.mon_command(ss.str(), inbl, NULL, NULL)); + + // give it a few seconds to go. this is sloppy but is usually enough time + cout << "waiting for scrub..." << std::endl; + sleep(15); + cout << "done waiting" << std::endl; + } + // read foo snap { bufferlist bl; -- 2.47.3