]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: test 'journal import' recognizes invalid headers post journal recovery 60731/head
authorJos Collin <jcollin@redhat.com>
Tue, 11 Feb 2025 10:45:51 +0000 (16:15 +0530)
committerJos Collin <jcollin@redhat.com>
Wed, 23 Apr 2025 05:57:37 +0000 (11:27 +0530)
Fixes: https://tracker.ceph.com/issues/68954
Signed-off-by: Jos Collin <jcollin@redhat.com>
qa/tasks/cephfs/test_journal_repair.py

index b7035c40af0e32930c2574354ccb5ba4b3f2f8b1..372929e954b99719b8fa7f99e0d1771e233d5bfc 100644 (file)
@@ -450,3 +450,28 @@ class TestJournalRepair(CephFSTestCase):
             raise RuntimeError("Expected journal import to fail")
         finally:
             self.mount_a.run_shell(["sudo", "rm", fname], omit_sudo=False)
+
+    def test_header_check_after_journal_recovery(self):
+        """
+        That the 'journal import' recognizes invalid headers post journal recovery and errors out.
+        """
+        # Create an invalid dump file which doesn't have 'object_size' header
+        fname = tempfile.NamedTemporaryFile(delete=False).name
+        self.mount_a.run_shell(["sudo", "sh", "-c", f'printf "Ceph mds0 journal dump\n\
+        start offset 4194304 (0x400000)\nlength 940 (0x3ac)\nwrite_pos 4194304 (0x400000)\n\
+        format 1\ntrimmed_pos 4194304 (0x400000)\nstripe_unit 4194304 (0x400000)\nstripe_count 1 (0x1)\n\
+        fsid 41334b86-2666-4269-a8ea-313bc073564c\n" > {fname}'], omit_sudo=False)
+        self.fs.fail()
+        try:
+            self.fs.journal_tool(["journal", "import", fname, "--force"], 0)
+        except CommandFailedError as e:
+            self.fs.set_joinable()
+            self.fs.wait_for_daemons()
+            if e.exitstatus != 234:
+                raise RuntimeError(f"Unexpected journal import error: {str(e)}")
+        else:
+            self.fs.set_joinable()
+            self.fs.wait_for_daemons()
+            raise RuntimeError("Expected journal import to fail")
+        finally:
+            self.mount_a.run_shell(["sudo", "rm", fname], omit_sudo=False)