Recent changes (master)

Jens Axboe <[email protected]> Tue, 28 Jul 2026 06:00:01 -0600
Newsgroups org.kernel.vger.fio
Message-ID <[email protected]>
The following changes since commit b384f4d3472e9dae62122c631899bac86368df63:

  ci: add Alpine Linux container test platform (2026-07-23 14:28:28 -0400)

are available in the Git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to c76c61b0fbe1b90a7886b8790805cf9903285074:

  ci: add a test for OOM issue with large iolog trims (2026-07-27 12:19:07 -0400)

----------------------------------------------------------------
Vincent Fu (1):
      ci: add a test for OOM issue with large iolog trims

 t/jobs/t0038-397f1338.fio | 16 ++++++++++++++++
 t/jobs/t0038.iolog        | 24 ++++++++++++++++++++++++
 t/run-fio-tests.py        | 19 +++++++++++++++++++
 3 files changed, 59 insertions(+)
 create mode 100644 t/jobs/t0038-397f1338.fio
 create mode 100644 t/jobs/t0038.iolog

---

Diff of recent changes:

diff --git a/t/jobs/t0038-397f1338.fio b/t/jobs/t0038-397f1338.fio
new file mode 100644
index 00000000..80e16c96
--- /dev/null
+++ b/t/jobs/t0038-397f1338.fio
@@ -0,0 +1,16 @@
+#
+# Make sure that Fio appropriately ignores the sizes of trim commands when
+# determining how much memory to allocate when reading an iolog.
+#
+# The iolog issues large trim and small write commands. Since trim is a
+# metadata-only command in this context Fio does not need to size the data
+# buffer to accommodate the sizes of the trims.
+#
+# Expected result: Job completes without issue
+# Buggy result: Job fails with out-of-memory error
+#
+
+[test]
+read_iolog=t0038.iolog
+ioengine=null
+iodepth=128
diff --git a/t/jobs/t0038.iolog b/t/jobs/t0038.iolog
new file mode 100644
index 00000000..362dc7d0
--- /dev/null
+++ b/t/jobs/t0038.iolog
@@ -0,0 +1,24 @@
+fio version 3 iolog
+30 /dev/null add
+10731 /dev/null open
+10736 /dev/null trim 0 2147483648
+10752 /dev/null write 0 4096
+10780 /dev/null trim 4096 2147483648
+10782 /dev/null write 4096 4096
+10784 /dev/null trim 8192 2147483648
+10785 /dev/null write 8192 4096
+10787 /dev/null trim 12288 2147483648
+10788 /dev/null write 12288 4096
+10791 /dev/null trim 16384 2147483648
+10793 /dev/null write 16384 4096
+10795 /dev/null trim 20480 2147483648
+10797 /dev/null write 20480 4096
+10798 /dev/null trim 24576 2147483648
+10799 /dev/null write 24576 4096
+10801 /dev/null trim 28672 2147483648
+10802 /dev/null write 28672 4096
+10804 /dev/null trim 32768 2147483648
+10806 /dev/null write 32768 4096
+10808 /dev/null trim 36864 2147483648
+10809 /dev/null write 36864 4096
+10892 /dev/null close
diff --git a/t/run-fio-tests.py b/t/run-fio-tests.py
index c2f73edb..d3683a1b 100755
--- a/t/run-fio-tests.py
+++ b/t/run-fio-tests.py
@@ -626,6 +626,16 @@ class FioJobFileTest_iops_rate(FioJobFileTest):
             self.failure_reason = f"{self.failure_reason} iops ratio mismatch,"
             self.passed = False
 
+class FioJobFileTest_t0038(FioJobFileTest):
+    """
+    Make sure t0034 can find the iolog by copying it to the test directory.
+    """
+    def setup(self, *args, **kws):
+        super().setup(*args, **kws)
+
+        src = os.path.join(os.path.dirname(self.fio_job), 't0038.iolog')
+        shutil.copy(src, self.paths['test_dir'])
+
 
 TEST_LIST = [
     {
@@ -969,6 +979,15 @@ TEST_LIST = [
         'pre_success':      SUCCESS_DEFAULT,
         'requirements':     [Requirements.linux, Requirements.libaio],
     },
+    {
+        'test_id':          38,
+        'test_class':       FioJobFileTest_t0038,
+        'job':              't0038-397f1338.fio',
+        'success':          SUCCESS_DEFAULT,
+        'pre_job':          None,
+        'pre_success':      None,
+        'requirements':     [],
+    },
     {
         'test_id':          1000,
         'test_class':       FioExeTest,