From 5370edeea0a24e06c1b580469d1ee9bc6132c7bb Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Tue, 16 Apr 2024 15:50:24 -0400 Subject: [PATCH] qa: test quiesce.block is replicated When the policy xlock cannot be immediately acquired. Test-case: https://tracker.ceph.com/issues/65496 Signed-off-by: Patrick Donnelly --- qa/tasks/cephfs/test_quiesce.py | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/qa/tasks/cephfs/test_quiesce.py b/qa/tasks/cephfs/test_quiesce.py index 6b18055aff0..c996b4f065d 100644 --- a/qa/tasks/cephfs/test_quiesce.py +++ b/qa/tasks/cephfs/test_quiesce.py @@ -734,6 +734,40 @@ class TestQuiesceMultiRank(QuiesceTestCase): for rank, op, path in ops: self._verify_quiesce(root=path, rank=rank, status=status) + def test_quiesce_block_replicated(self): + """ + That an inode with quiesce.block is replicated. + """ + + self._configure_subvolume() + + self.mount_a.run_shell_payload("mkdir -p dir1/dir2/dir3/dir4") + + self.fs.set_max_mds(2) + status = self.fs.wait_for_daemons() + + self.mount_a.setfattr("dir1", "ceph.dir.pin", "1") + self.mount_a.setfattr("dir1/dir2/dir3", "ceph.dir.pin", "0") # force dir2 to be replicated + status = self._wait_subtrees([(self.mntpnt+"/dir1", 1), (self.mntpnt+"/dir1/dir2/dir3", 0)], status=status, rank=1) + + op = self.fs.rank_tell("lock", "path", self.mntpnt+"/dir1/dir2", "policy:r", rank=1) + p = self.mount_a.setfattr("dir1/dir2", "ceph.quiesce.block", "1", wait=False) + sleep(2) # for req to block waiting for xlock on policylock + reqid = self._reqid_tostr(op['op']['reqid']) + self.fs.kill_op(reqid, rank=1) + p.wait() + + ino1 = self.fs.read_cache(self.mntpnt+"/dir1/dir2", depth=0, rank=1)[0] + self.assertTrue(ino1['quiesce_block']) + self.assertTrue(ino1['is_auth']) + replicas = ino1['auth_state']['replicas'] + self.assertIn("0", replicas) + + ino0 = self.fs.read_cache(self.mntpnt+"/dir1/dir2", depth=0, rank=0)[0] + self.assertFalse(ino0['is_auth']) + self.assertTrue(ino0['quiesce_block']) + + # TODO: test for quiesce_counter class TestQuiesceSplitAuth(QuiesceTestCase): -- 2.39.5