)]}'
{
  "log": [
    {
      "commit": "5a60411e4cf8abc583c47038170d9667f50e9215",
      "tree": "b66e7029426fb49e06b7b703303dab25f656572f",
      "parents": [
        "d91ab4439af20b13dbbe55021f6c29de5b6eddeb",
        "6c1da67a14ec0a0e7a85284c0380ab27a5c61587"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Apr 22 09:17:23 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Apr 22 09:17:23 2026 -0600"
      },
      "message": "Merge branch \u0027fix-trigger-timeout-segfault\u0027 of https://github.com/minwooim/fio\n\n* \u0027fix-trigger-timeout-segfault\u0027 of https://github.com/minwooim/fio:\n  verify: fix segfault in timedout teardown\n"
    },
    {
      "commit": "6c1da67a14ec0a0e7a85284c0380ab27a5c61587",
      "tree": "b66e7029426fb49e06b7b703303dab25f656572f",
      "parents": [
        "d91ab4439af20b13dbbe55021f6c29de5b6eddeb"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Wed Apr 22 15:47:29 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Wed Apr 22 15:51:11 2026 +0900"
      },
      "message": "verify: fix segfault in timedout teardown\n\nFix segfault happening in the teardown caseud by `--trigger-timeout\u003d`\noption regardless to the --verify\u003d and --verify_state_save\u003d options.\n\n`td-\u003einflight_numberio` array is allocated in `init_inflight_logging()`\nonly if ``td-\u003eo.verify !\u003d VERIFY_NONE \u0026\u0026 td-\u003eo.verify_state_save``.\nBut, in case where those two options are not given and\n--trigger-timeout\u003d is given and the timer is expired, verify state is\nattempted to be saved.  In this case, `td-\u003einflight_numberio` array is\nNULL causing the segfault.  This patch fixed the segfault by checking\n`td-\u003einflight_numberio` before assigning them to the state.\n\nThis can be reproduced with --trigger-timeout\u003d where the device ignores\nthe incoming commands by not issuig the completion simply with QEMU;\ndm-flakey does not support to ignore the completion itself yet.\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "d91ab4439af20b13dbbe55021f6c29de5b6eddeb",
      "tree": "52adeb7d284fce0f6d9d37380e4a04439509af18",
      "parents": [
        "219f1c3503c1961f41173456d399f41b72d08ef3",
        "4d5b37d911596081bb5e7138cfc7df282a7dfbbc"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Apr 16 22:31:44 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Apr 16 22:31:44 2026 -0400"
      },
      "message": "Merge branch \u0027check-numberio-read-only\u0027 of https://github.com/minwooim/fio\n\n* \u0027check-numberio-read-only\u0027 of https://github.com/minwooim/fio:\n  t/numberio_overlap: add overlap write verification tests\n  libfio: reset nr_done_files when io_size \u003e size\n  io_u: check wrap around `f-\u003elast_pos` for overlapped case\n  backend: update `total_bytes` for TD_DDIR_WRITE\n  Revert \"backend: fix verify issue during readwrite\"\n  fio.h: treat io_size \u003e size as offset overlap risk\n"
    },
    {
      "commit": "4d5b37d911596081bb5e7138cfc7df282a7dfbbc",
      "tree": "9b3641090d47df5a65307f408791003f1d3c142a",
      "parents": [
        "770bafe6a6359d2489c7e0de09ceaff2a8b66209"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Sun Mar 22 09:07:16 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Fri Apr 17 04:04:29 2026 +0900"
      },
      "message": "t/numberio_overlap: add overlap write verification tests\n\nAdd a Python test suite testing fio\u0027s numberio overlap verification for\nthe three fixes that preceded this commit:\n\n  - fio.h: treat io_size \u003e size as offset overlap risk\n  - io_u.c: check wrap around f-\u003elast_pos if verify_only\u003d1\n  - backend.c: use io_size as limit for seq write-only\n  - libfio.c: reset nr_done_files when io_size \u003e size\n\nThe test creates situations where io_size \u003e size so that every offset\nis written more than once.  fio_offset_overlap_risk() must return true\nto activate the rb-tree io_hist backend, which retains only the latest\nio_piece per offset.  The verify phase then reads each block exactly\nonce and checks that numberio on disk matches the latest write.\n\n13 test cases, grouped by rw mode / verify style will be run by two\nsync/async ioengines in turn.\n\nOffline verify (OfflineOverlapVerifyTest) runs two separate fio\ninvocations: a write phase (verify_state_save\u003d1) followed by a verify\nphase (verify_only\u003d1, verify_state_load\u003d1).  The verify phase performs\na dry-run write pass to rebuild io_hist, then reads each block and\nchecks numberio via verify_write_sequence\u003d1.\n\nOnline verify (OnlineOverlapVerifyTest) runs a single fio invocation\nwith do_verify\u003d1, which writes and verifies in the same job.\n\nThe filesize \u003c size cases pre-truncate the file smaller than size\u003d\nbefore running fio, verifying that fio_offset_overlap_risk() activates\nthe rb-tree even before the first I/O because real_file_size \u003c io_size\nat setup time.\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "770bafe6a6359d2489c7e0de09ceaff2a8b66209",
      "tree": "1d492b5ae746ba03238737b4116b358e4dd39917",
      "parents": [
        "b87661299477f2a27ea8344f724690eb71648ed4"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Sun Mar 22 09:06:57 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Fri Apr 17 04:04:29 2026 +0900"
      },
      "message": "libfio: reset nr_done_files when io_size \u003e size\n\nreset_io_counters() clears td-\u003enr_done_files so that keep_running()\ndoes not return false prematurely because fio_files_done() sees all\nfiles already marked done.\n\nThe existing conditions (time_based, loops \u003e 1, do_verify) cover the\ncases where the job is expected to restart file iteration.  A job with\nio_size \u003e size also requires restarting: the sequential write pointer\nwraps around and visits every offset a second time, so the \"file done\"\nbit must be cleared at the start of each outer iteration.\n\nWithout this fix, the first pass sets each fio_file\u0027s done flag, and\nkeep_running() exits the outer loop early instead of writing the\nsecond pass -- the overlap that the io_size \u003e size feature is meant to\nproduce never happens.\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "b87661299477f2a27ea8344f724690eb71648ed4",
      "tree": "be4156f2e0c1642704b81ac527953618e591a660",
      "parents": [
        "fdeb16e8a37808024340858309ea9f42f892672e"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Wed Mar 18 21:30:06 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Fri Apr 17 04:01:15 2026 +0900"
      },
      "message": "io_u: check wrap around `f-\u003elast_pos` for overlapped case\n\nWrap around `f-\u003elast_pos` in case of `io_size` \u003e `size` to consider\noverlap.  Also, for write-only sequential jobs, `total_bytes` was capped\nat size regardless of `io_size`, causing the write phase to stop after\none pass over the file even when `io_size` \u003e `size`.  Unlike rw mode\nwhere reads and writes both consume `bytes_issued`, write-only jobs only\ncount writes, so there is no risk of `io_size` being consumed by reads.\nAllow `io_size` to control how much to write for this case.\n\nThis allows online verification when `io_size` \u003e `size` with write-only\nsequential jobs.\n\n\tfio \\\n\t--name\u003donline \\\n\t--ioengine\u003dio_uring_cmd --filename\u003d/dev/ng0n1 \\\n\t--cmd_type\u003dnvme \\\n\t--rw\u003dwrite --bs\u003d128k --size\u003d1M --io_size\u003d2M \\\n\t--verify\u003dcrc32 --do_verify\u003d1 --debug\u003dio,verify\n\nBefore this patch:\n\n- Writes didn\u0027t happen twice (no overlap) even though `io_size` \u003e\n  `size` since reads consumed the `bytes_issued`.\n\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x0,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x20000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x40000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x60000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x80000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0xa0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0xc0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0xe0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x0,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x20000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x40000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x60000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0x80000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0xa0000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0xc0000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       238438 complete: io_u 0x74a23c000d80: off\u003d0xe0000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\n\nAfter this patch:\n\n- Writes are overlapped, but verify once with the latest `numberio`\n  verification.\n\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x0,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x20000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x40000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x60000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x80000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xa0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xc0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xe0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x0,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x20000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x40000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x60000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x80000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xa0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xc0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xe0000,len\u003d0x20000,ddir\u003d1,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x0,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x20000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x40000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x60000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0x80000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xa0000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xc0000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\nio       237335 complete: io_u 0x71c1f4000d80: off\u003d0xe0000,len\u003d0x20000,ddir\u003d0,file\u003d/dev/ng0n1\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "fdeb16e8a37808024340858309ea9f42f892672e",
      "tree": "34a4c0f03aa30acf762998f74e81613eee993b36",
      "parents": [
        "c6bba4766439cf9c5fd52588de18555f8c9846e2"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Fri Apr 17 03:54:37 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Fri Apr 17 03:55:16 2026 +0900"
      },
      "message": "backend: update `total_bytes` for TD_DDIR_WRITE\n\nUpdate `total_bytes` not for `td_rw(td)`, but `td_write(td)` to keep\ngoing when WRITE goes being overlapped.\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "219f1c3503c1961f41173456d399f41b72d08ef3",
      "tree": "890a876b0998432afe8c1f3b4ba3b73c30fcde50",
      "parents": [
        "f4e93793cbe3e4703520a9d4e1d6596bb1b43c73",
        "6d083114769ba34afa5b4f24fc9b6e453a8cb3a5"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Apr 16 10:56:35 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Apr 16 10:56:35 2026 -0600"
      },
      "message": "Merge branch \u0027arm-select-eintr\u0027 of https://github.com/alex310110/fio\n\n* \u0027arm-select-eintr\u0027 of https://github.com/alex310110/fio:\n  helper_thread: Handle EINTR errno from select()\n"
    },
    {
      "commit": "c6bba4766439cf9c5fd52588de18555f8c9846e2",
      "tree": "4375fe32653188df583faad70f7c261450046904",
      "parents": [
        "2d31d481aadc0930cb690bc1e22169267f73978b"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Thu Apr 16 18:31:12 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Thu Apr 16 18:38:48 2026 +0900"
      },
      "message": "Revert \"backend: fix verify issue during readwrite\"\n\nThis reverts commit 981c372fb797e2edee55309d28b1028fba5e9b68.\n\nThe previous patch \"fio.h: treat io_size \u003e size as offset overlap risk\"\nhas led verify table to rb-tree rather than the simple flist in case of\nio_size \u003e size meaning that we can simply revert this patch to allow\noverlap for sequential readwrite workload.\n"
    },
    {
      "commit": "6d083114769ba34afa5b4f24fc9b6e453a8cb3a5",
      "tree": "890a876b0998432afe8c1f3b4ba3b73c30fcde50",
      "parents": [
        "f4e93793cbe3e4703520a9d4e1d6596bb1b43c73"
      ],
      "author": {
        "name": "alex310110",
        "email": "xqiu@google.com",
        "time": "Wed Apr 15 15:23:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 15:23:04 2026 -0700"
      },
      "message": "helper_thread: Handle EINTR errno from select()\n\nOn our ARM platform, select() could return -1 with errno EINTR fairly\r\noften, while we have almost never observed this on x86 platforms.\r\nThis breaks the helper_thread loop with A_EXIT, and stops status update\r\nat stdout as well as bandwidth logging (the one enabled by\r\n`write_bw_log` and `log_avg_msec`), causing `bw` logs to look like\r\ngetting cutoff since a random time for prolonged runs (~1 hour).\r\nThe issue can be easily reproduced on our ARM platform even with\r\n`ioengine\u003dnull` and `filename\u003d/dev/null` by spwaning ~30 individual\r\nfio processes with each logging `bw`, and observe the lines of all\r\nproduced logs with `wc -l` once all processes finish.\r\n\r\nAdded action enum A_NOOP and a check to handle the situation\r\nas no error.\r\n\r\nTested on both ARM and x86 platforms with and without\r\nCONFIG_HAVE_TIMERFD_CREATE marco defined. x86 platform never reproduces\r\nthe issue in any situation, and result looks good. ARM platform\r\nno longer reproduces the bug and retains the full `bw` log\r\nafter the fix.\r\n\r\nSigned-off-by: Alex Qiu \u003cxqiu@google.com\u003e"
    },
    {
      "commit": "f4e93793cbe3e4703520a9d4e1d6596bb1b43c73",
      "tree": "9b225f8c49bfabc856d89c9a6f8d6ec8a8d5e175",
      "parents": [
        "ab77643023f5d7e3c1b71a7576a564f368bf577a",
        "f04f3f3b1db760bdedf2e6042f19a67b962d6634"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Apr 07 20:00:49 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Apr 07 20:00:49 2026 -0600"
      },
      "message": "Merge branch \u0027anon-fault\u0027\n\nMerge page fault engine from Nico:\n\n\"This series introduces a new page_fault ioengine for Anonymous memory\n  testing. This enables using fio’s existing framework and job files for\n  memory management style workloads without relying on a filesystem. An\n  example job file is included to demonstrate usage and lays the\n  groundwork for how we plan on utilizing fio to test a number of MM\n  related workloads.\"\n\n* anon-fault:\n  engines/page_fault: minor style cleanups\n  Documentation: update the documentation to include the page_fault engine\n  page_fault: add mmap-backed ioengine for anonymous faults\n"
    },
    {
      "commit": "f04f3f3b1db760bdedf2e6042f19a67b962d6634",
      "tree": "9b225f8c49bfabc856d89c9a6f8d6ec8a8d5e175",
      "parents": [
        "dceeff3a1dd87b5194c84845d77096b3cdb3cee3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Apr 07 20:00:16 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Apr 07 20:00:16 2026 -0600"
      },
      "message": "engines/page_fault: minor style cleanups\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "dceeff3a1dd87b5194c84845d77096b3cdb3cee3",
      "tree": "c797bd44b685d6acb196a037880b520a0794b927",
      "parents": [
        "f5ea7d9e1d7c07053f23e764b281a5e47bf01ba3"
      ],
      "author": {
        "name": "Nico Pache",
        "email": "npache@redhat.com",
        "time": "Tue Apr 07 19:20:03 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Apr 07 19:42:34 2026 -0600"
      },
      "message": "Documentation: update the documentation to include the page_fault engine\n\nDocument the new page fault engine.\n\nSigned-off-by: Nico Pache \u003cnpache@redhat.com\u003e\nLink: https://patch.msgid.link/20260408012004.198115-3-npache@redhat.com\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f5ea7d9e1d7c07053f23e764b281a5e47bf01ba3",
      "tree": "63e25e49072bd6f583502af430928ef0cec6424a",
      "parents": [
        "ab77643023f5d7e3c1b71a7576a564f368bf577a"
      ],
      "author": {
        "name": "Nico Pache",
        "email": "npache@redhat.com",
        "time": "Tue Apr 07 19:20:02 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Apr 07 19:42:34 2026 -0600"
      },
      "message": "page_fault: add mmap-backed ioengine for anonymous faults\n\nIntroduce a new ioengine that mmaps anonymous memory and copies data\non read/write to trigger page faults. This allows us to leverage FIOs\npowerful framework for MM related testing, and will ideally allow us to\nquickly expand testing, by leveraging previously FS related fio scripts.\n\nSigned-off-by: Nico Pache \u003cnpache@redhat.com\u003e\nLink: https://patch.msgid.link/20260408012004.198115-2-npache@redhat.com\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "ab77643023f5d7e3c1b71a7576a564f368bf577a",
      "tree": "8931f1d9fb3e193da9f396c5433b324725ffcd0b",
      "parents": [
        "7f8ef2fb6a774ebd776352ddd1e25168693e1463"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Apr 06 20:11:47 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Apr 06 20:11:47 2026 -0600"
      },
      "message": "Fio 3.42\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7f8ef2fb6a774ebd776352ddd1e25168693e1463",
      "tree": "666c32af9c60fdea156b05683e8e5159d797d933",
      "parents": [
        "d0218ba66e9dc8402f1ac366b964277a1f2f2797",
        "8d0c3910011c149cc0a0261f5d920edbc06d626b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Apr 06 20:06:40 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Apr 06 20:06:40 2026 -0600"
      },
      "message": "Merge branch \u0027ipo\u0027 of https://github.com/minwooim/fio\n\n* \u0027ipo\u0027 of https://github.com/minwooim/fio:\n  iolog: free io_piece log on thread cleanup\n"
    },
    {
      "commit": "8d0c3910011c149cc0a0261f5d920edbc06d626b",
      "tree": "666c32af9c60fdea156b05683e8e5159d797d933",
      "parents": [
        "d0218ba66e9dc8402f1ac366b964277a1f2f2797"
      ],
      "author": {
        "name": "Haeun Kim",
        "email": "hanee.kim@samsung.com",
        "time": "Tue Apr 07 09:41:58 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Tue Apr 07 09:52:03 2026 +0900"
      },
      "message": "iolog: free io_piece log on thread cleanup\n\nprune_io_piece_log() is called only at the start of each loop iteration, so\nio_piece entries accumulated during the final do_io() run are never explicitly\nfreed.\n\nWhen fio runs as a process this goes unnoticed because the OS reclaims the heap\non exit. When fio is embedded as a pthread, which is a use-case of unvme-cli,\nthe parent process keeps running, so those allocations become a genuine\nmemory leak proportional to the number of write IOs logged for verify.\n\nSigned-off-by: Haeun Kim \u003chanee.kim@samsung.com\u003e\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "d0218ba66e9dc8402f1ac366b964277a1f2f2797",
      "tree": "e69aa6fb5167a768b873ece257ca1f6eae20d1ae",
      "parents": [
        "698fa8f0682b809b3f85f50c593067e90108f92e",
        "00084f957dd35d18ceb8e6bb1cd825c73cae2a10"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Apr 01 09:08:08 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Apr 01 09:08:08 2026 -0600"
      },
      "message": "Merge branch \u0027fix_statsem_deadlock\u0027 of https://github.com/RyanTedrick/fio\n\n* \u0027fix_statsem_deadlock\u0027 of https://github.com/RyanTedrick/fio:\n  Fix stat_sem/rusage_sem deadlock during stats collection\n"
    },
    {
      "commit": "00084f957dd35d18ceb8e6bb1cd825c73cae2a10",
      "tree": "e69aa6fb5167a768b873ece257ca1f6eae20d1ae",
      "parents": [
        "698fa8f0682b809b3f85f50c593067e90108f92e"
      ],
      "author": {
        "name": "Ryan Tedrick",
        "email": "ryan.tedrick@nutanix.com",
        "time": "Wed Apr 01 09:51:13 2026 -0400"
      },
      "committer": {
        "name": "Ryan Tedrick",
        "email": "ryan.tedrick@nutanix.com",
        "time": "Wed Apr 01 09:51:13 2026 -0400"
      },
      "message": "Fix stat_sem/rusage_sem deadlock during stats collection\n\nIssue: __show_running_run_stats() acquires stat_sem then blocks on each\nworker\u0027s rusage_sem. But workers need stat_sem to reach the code that\nposts rusage_sem, creating an ABBA deadlock. The verify path deadlocks\nvia a blocking fio_sem_down(stat_sem). The IO path\u0027s trylock loop can\nmitigate the contention but times out under sustained contention with\nmultiple workers.\n\nFix: Moved rusage collection before the stat_sem acquire so the stat\nthread never holds stat_sem while waiting on rusage_sem. Added a\ndouble-check of td-\u003erunstate after setting update_rusage to guard\nagainst blocking on a worker that has already exited. The trylock\nloop and check_update_rusage() calls are retained as precautions.\n\nSigned-off-by: Ryan Tedrick \u003cryan.tedrick@nutanix.com\u003e\n"
    },
    {
      "commit": "698fa8f0682b809b3f85f50c593067e90108f92e",
      "tree": "46728cc6c3fb2e245ffd76deeb6de71156fd948b",
      "parents": [
        "1bd762a49366ee83be0bc09c47a4c5bbe5c791ea",
        "46c90e3227b145cf879bcb8ceff63c3130b9d7df"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Mar 18 19:31:08 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Mar 18 19:31:08 2026 -0600"
      },
      "message": "Merge branch \u0027fix-null-comm-prctl\u0027 of https://github.com/Criticayon/fio\n\n* \u0027fix-null-comm-prctl\u0027 of https://github.com/Criticayon/fio:\n  backend: guard prctl(PR_SET_NAME) against NULL thread name\n"
    },
    {
      "commit": "1bd762a49366ee83be0bc09c47a4c5bbe5c791ea",
      "tree": "fe089e82db68ade2824a68f0f2c8caa19db2c14d",
      "parents": [
        "4db5740d27942e5a36b091ace763b188888b6f9e",
        "7b003c1db8efcf1dacce4aa50ba5a1b0a9349788"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Mar 18 17:58:18 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Mar 18 17:58:18 2026 -0400"
      },
      "message": "Merge branch \u0027posix-errnos\u0027 of https://github.com/minwooim/fio\n\n* \u0027posix-errnos\u0027 of https://github.com/minwooim/fio:\n  options: add support more POSIX errnos\n"
    },
    {
      "commit": "46c90e3227b145cf879bcb8ceff63c3130b9d7df",
      "tree": "3ad4e35e752c41fea30282b2ea626a1ff2584578",
      "parents": [
        "4db5740d27942e5a36b091ace763b188888b6f9e"
      ],
      "author": {
        "name": "Criticayon Black",
        "email": "1318083585@qq.com",
        "time": "Wed Mar 18 15:54:38 2026 +0000"
      },
      "committer": {
        "name": "Criticayon Black",
        "email": "1318083585@qq.com",
        "time": "Wed Mar 18 16:21:44 2026 +0000"
      },
      "message": "backend: guard prctl(PR_SET_NAME) against NULL thread name\n\no-\u003ecomm may be NULL if job initialization fails or the job\nstructure is only partially initialized before thread creation.\nCalling prctl(PR_SET_NAME, NULL) results in a NULL pointer\ndereference inside strncpy().\n\nAdd a NULL check before calling prctl().\n\nFixes: https://github.com/axboe/fio/issues/2072\nReported-by: Criticayon Black\nSigned-off-by: Criticayon Black \u003c1318083585@qq.com\u003e\n"
    },
    {
      "commit": "2d31d481aadc0930cb690bc1e22169267f73978b",
      "tree": "1d2942143f7e9ba5e69e7f5f804fc746e61e7ba3",
      "parents": [
        "4db5740d27942e5a36b091ace763b188888b6f9e"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Wed Mar 18 21:20:07 2026 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Wed Mar 18 21:25:55 2026 +0900"
      },
      "message": "fio.h: treat io_size \u003e size as offset overlap risk\n\nWhen td-\u003eo.io_size \u003e td-\u003eo.size, sequential writes wrap around and\nrevisit the same offsets.  In this case, ``fio_offset_overlap_risk()``\nmust return true so that io_hist uses an rb-tree instaed of a plain\nflist, allowing overallping io_pieces to be detected and replaced\ncorrectly.\n\nThis check may produce false positives for multi-file jobs where\nper-file wrap-around does not actually occur, but that is acceptable\nfor the simplicity and since the only cost is using rb-tree\nunnecessarily.  A false negative, however, would silently corrupt the\nverification history.\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "7b003c1db8efcf1dacce4aa50ba5a1b0a9349788",
      "tree": "fe089e82db68ade2824a68f0f2c8caa19db2c14d",
      "parents": [
        "4db5740d27942e5a36b091ace763b188888b6f9e"
      ],
      "author": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Tue Oct 14 08:45:03 2025 +0900"
      },
      "committer": {
        "name": "Minwoo Im",
        "email": "minwoo.im@samsung.com",
        "time": "Wed Mar 18 18:36:10 2026 +0900"
      },
      "message": "options: add support more POSIX errnos\n\nAdded more error numbers(errno) after ERANGE to support various errno\nstring to options like `--ignore_error\u003dETIMEDOUT`.  unvme-cli libunvmed\nioengine returns ETIMEDOUT if a command is timed out.  To mask this\nsituation with `--ignore_error\u003d` option, errno after ERANGE should be\nsupported in `str2errr()`.\n\nSigned-off-by: Minwoo Im \u003cminwoo.im@samsung.com\u003e\n"
    },
    {
      "commit": "4db5740d27942e5a36b091ace763b188888b6f9e",
      "tree": "dba9ba4862200eeabe77f9f3d6ee95a06cee0fc8",
      "parents": [
        "3a0e8ddf28ad32785ea3130ce0ee42524d835d60"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Mar 13 17:43:24 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Mar 16 11:13:04 2026 -0400"
      },
      "message": "stat: improve latency target reporting\n\nAdd new keys to the JSON data specifying the units for latency_target\nand latency_window.\n\nAlso add units for these values in the normal output.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "3a0e8ddf28ad32785ea3130ce0ee42524d835d60",
      "tree": "677400e39a528c6b762de6e9e600b2877a1132ea",
      "parents": [
        "6d7eba0975d798cd4f9e72bde0c32f6e329495f6"
      ],
      "author": {
        "name": "Dmitry Fomichev",
        "email": "dmitry.fomichev@wdc.com",
        "time": "Wed Mar 11 05:58:04 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Mar 11 05:37:00 2026 -0600"
      },
      "message": "backend: correctly handle rate_iops combined with bssplit\n\nCurrently, rate_iops does not produce the expected I/O rate with\nworkloads that use \u0027bssplit\u0027 option. Consider the following example\nconfiguration -\n\n[global]\ndirect\u003d1\ntime_based\nruntime\u003d30s\nioengine\u003dio_uring\nthread\u003d1\n\n[bssplit_rate_iops_repro]\nfilename\u003d/dev/sdX\nrw\u003drandread\niodepth\u003d8\nbs\u003d64K\nrate_iops\u003d50\n\nThis works correctly and ~50 IOPS I/O rate is logged during the run.\n\nIf we replace \u0027bs\u003d64K\u0027 with the following bssplit option -\n\nbssplit\u003d32ki/20:64ki/40:256ki/10:512ki/25:1mi/5\n\nin the configuration above, then some incorrect (much lower) IOPS values\nare observed to be in effect at run time.\n\nThis problem happens because fio, in order to derive the required\nI/O rate from \u0027rate_iops\u0027 value provided by the user, simply multiplies\nthe IOPS value by the minimum block size (min_bs). Once bps I/O rate is\ncalculated this way, the processing for \u0027rate\u0027 and \u0027rate_iops\u0027 becomes\nidentical.\n\nThis works if the I/O issued has the uniform min_bs, as in case of using\n\u0027bs\u003d64K\u0027. However, with \u0027bssplit\u0027 option in effect, fio may issue I/O\nwith sizes that are much different from min_bs. Yet the code in\nusec_for_io() currently always calculates I/O issue delays based on\nmin_bs leading to incorrect IOPS being produced.\n\nFix this by modifying usec_for_io() function to check for\nbssplit+rate_iops being in effect. For this case, derive the IOPS rate\nfrom bps \u0027rate\u0027 member of thread data and then calculate the delay to\nthe next I/O using the IOPS value, not the bps rate.\n\nSigned-off-by: Dmitry Fomichev \u003cdmitry.fomichev@wdc.com\u003e\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nLink: https://patch.msgid.link/20260310205804.477935-1-dmitry.fomichev@wdc.com\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6d7eba0975d798cd4f9e72bde0c32f6e329495f6",
      "tree": "ad0611f0ab900f90520b7ce122e68ff7c3242224",
      "parents": [
        "e0b93f9d034b9ee65199d8de0e2646bcd7cd8c0b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 10 14:30:21 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 10 14:30:21 2026 -0400"
      },
      "message": "ci: switch to upload-artifact@v6\n\nSwitch to v6 of the upload-artifact action. The original v4 action was\ntriggering this warning:\n\nNode.js 20 actions are deprecated. The following actions are running on\nNode.js 20 and may not work as expected: actions/checkout@v4,\nactions/upload-artifact@v4. Actions will be forced to run with Node.js\n24 by default starting June 2nd, 2026. Please check if updated versions\nof these actions are available that support Node.js 24. To opt into\nNode.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24\u003dtrue\nenvironment variable on the runner or in your workflow file. Once\nNode.js 24 becomes the default, you can temporarily opt out by setting\nACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION\u003dtrue. For more information see:\nhttps://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "e0b93f9d034b9ee65199d8de0e2646bcd7cd8c0b",
      "tree": "8ff38ed2e6828aa79708e12a63a1c71ad82582df",
      "parents": [
        "af979bd94cf490a94c6a2a62326aa5097711ca60"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 10 14:26:50 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 10 14:26:50 2026 -0400"
      },
      "message": "ci: switch to actions/checkout@v6\n\nSwitch to an updated checkout@v6. The original v4 was triggering this\nwarning:\n\nNode.js 20 actions are deprecated. The following actions are running on\nNode.js 20 and may not work as expected: actions/checkout@v4,\nactions/upload-artifact@v4. Actions will be forced to run with Node.js\n24 by default starting June 2nd, 2026. Please check if updated versions\nof these actions are available that support Node.js 24. To opt into\nNode.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24\u003dtrue\nenvironment variable on the runner or in your workflow file. Once\nNode.js 24 becomes the default, you can temporarily opt out by setting\nACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION\u003dtrue. For more information see:\nhttps://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "af979bd94cf490a94c6a2a62326aa5097711ca60",
      "tree": "1f60a93c2a30deb6445710e73efe015077c920f7",
      "parents": [
        "fa23c09bfefb2b9c960d179ad67d356fbc29179f"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Mar 09 09:16:39 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 10 14:22:41 2026 -0400"
      },
      "message": "fio: specify filename for --bandwidth-log option\n\nThe --bandwidth-log option currently uses a hard-coded\nagg-[read,write,trim]_bw.log filename for its log files. This patch\nprovides a means to specify the stub filename for these log files.  The\nvalue assigned to this option (if supplied) will replace the \"agg\" in\nthe filename. If no value is supplied the original agg-*_bw.log\nfilenames will be used.\n\nThis is useful for repeated invocations of Fio with the --bandwidth-log\noption. Without this option the user would have to rename the\nagg-*_bw.log files between invocations to avoid losing data.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "fa23c09bfefb2b9c960d179ad67d356fbc29179f",
      "tree": "7b266ae34877cdf4e5bf931f4c73ee017b34db02",
      "parents": [
        "5d15185ae6f0c46822c0e360c5bd75042269a5eb",
        "7aeef095a437cb977718e98450dfd182e6998a6b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Mar 09 20:02:12 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Mar 09 20:02:12 2026 -0600"
      },
      "message": "Merge branch \u0027push-lnvrzuqpnylp\u0027 of https://github.com/msuozzo/fio\n\n* \u0027push-lnvrzuqpnylp\u0027 of https://github.com/msuozzo/fio:\n  options: fix heap-use-after-free in ioengine_so_path\n"
    },
    {
      "commit": "7aeef095a437cb977718e98450dfd182e6998a6b",
      "tree": "7b266ae34877cdf4e5bf931f4c73ee017b34db02",
      "parents": [
        "5d15185ae6f0c46822c0e360c5bd75042269a5eb"
      ],
      "author": {
        "name": "Matthew Suozzo",
        "email": "msuozzo@google.com",
        "time": "Mon Mar 09 23:50:54 2026 +0000"
      },
      "committer": {
        "name": "Matthew Suozzo",
        "email": "msuozzo@google.com",
        "time": "Tue Mar 10 01:59:54 2026 +0000"
      },
      "message": "options: fix heap-use-after-free in ioengine_so_path\n\nWhen parsing `ioengine\u003dexternal:/path`, `td-\u003eo.ioengine_so_path` was\npreviously assigned as a pointer directly into the `td-\u003eo.ioengine`\nstring buffer. If `td-\u003eo.ioengine` was subsequently reallocated (e.g.,\ndue to multiple ioengine definitions or the use of include directives),\n`ioengine_so_path` became a dangling pointer, resulting in a\nheap-use-after-free during `dlopen_ioengine`.\n\nFix this by ensuring `ioengine_so_path` owns its own memory allocation\nindependent of the `ioengine` string. Since this field is not defined\nas a standard option entry, manual lifecycle management is implemented:\n\n1.  **str_ioengine_external_cb**: Use `strdup` to store the path and\n    free any previously allocated string.\n2.  **fio_options_mem_dupe**: Explicitly duplicate the string when\n    copying thread options.\n3.  **fio_options_free**: Explicitly free the string when tearing down\n    thread options.\n\nThis approach resolves the UAF while adhering to the requirement of not\nadding a new option entry to the parser. Verified with ASan and existing\ntest suites.\n\nSigned-off-by: Matthew Suozzo \u003cmsuozzo@google.com\u003e\n"
    },
    {
      "commit": "5d15185ae6f0c46822c0e360c5bd75042269a5eb",
      "tree": "a567073f25a54dbe6233783ac4a8ea7ebc10e78e",
      "parents": [
        "5e7b04951b5b1395474cd6bb654d51382ab13f8a"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:59 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "t/zbd: avoid test case 71 failure with write_zone_remainder option\n\nWhen -m option is provided for t/zbd/test-zbd-support, the option\nwrite_zone_remainder is specified to fio. In this case, the test case\n71 fails because fio does writes to small remainder areas at zone ends\nand it changed the number of writes. To avoid the failure, modify the\ntest condition of the test case.\n\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-9-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "5e7b04951b5b1395474cd6bb654d51382ab13f8a",
      "tree": "7c05370fd70ea8abaf326cb61014146feecf6a3a",
      "parents": [
        "861e92bf7678640ab261149bc74d12052aba6277"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:58 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "t/zbd: avoid test case 33 failure with write_zone_remainder option\n\nWhen -m option is provided for t/zbd/test-zbd-support, the option\nwrite_zone_remainder is specified to fio. In this case, the test case\n33 fails because fio does writes to small remainder areas at zone ends\nand it changed the number of writes. To avoid the failure, modify the\ntest condition of the test case.\n\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-8-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "861e92bf7678640ab261149bc74d12052aba6277",
      "tree": "1211f8e692670c941eb7b0a09b65df9f02c2b5af",
      "parents": [
        "ceb1aa5169e7b57bc5a68c224399d9ed7121bd9a"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:57 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "t/zbd: avoid test case 14 failure with write_zone_remainder option\n\nWhen -m option is provided for t/zbd/test-zbd-support, the option\nwrite_zone_remainder is specified to fio. In this case, the test case\n14 fails because the random map feature is disabled and then random\nwrites for conventional zones may have overlap. To avoid the failure,\nmodify the test case to count the number of overlaps.\n\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-7-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "ceb1aa5169e7b57bc5a68c224399d9ed7121bd9a",
      "tree": "906bf0bede24ca058bd7f040d126851770de91ff",
      "parents": [
        "90db0c7cab636dd79afaf9644f9e9e74a175098e"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:56 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "t/zbd: add -m option to enable write_zone_remainder option\n\nThe previous commit introduced the option write_zone_remainder. To\nconfirm the option works as expected, introduce the new option -m\nto the test scripts test-zbd-support and run-tests-against-nullb.\n\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-6-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "90db0c7cab636dd79afaf9644f9e9e74a175098e",
      "tree": "e2b894265a07c2c3c9be63244d381b2edbccbb4f",
      "parents": [
        "3e64488f3a130864e7aaef405a22f5981eda5938"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:55 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "doc: explain the option write_zone_remainder\n\nThe recent commit introduced the option write_zone_remainder. Explain\nhow it changes handling of zone end remainders. Also, amend the zbd\nzone mode description to explain the default handling of zone end\nremainders.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-5-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "3e64488f3a130864e7aaef405a22f5981eda5938",
      "tree": "9974d25841b4deb320550a6973faa06974a1ed1e",
      "parents": [
        "09c99cd60e3760070838de8a750045fe1bbd659f"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:54 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "zbd: introduce write_zone_remainder option\n\nWhen the specified block size is not aligned with the zone size or the\nwrite pointer positions at workload start, write workloads create\nunwritten remainder areas at the ends of zones. These remainder areas\nleave zones in the open condition. This disrupts the intended write\ntarget zone selection.\n\nPrevious commits e1a1b59b0b9b (\"zbd: finish zones with remainder smaller\nthan minimum write block size\") and e2e29bf6f830 (\"zbd: finish zone when\nall random write target zones have small remainder\") attempted to solve\nthis problem by issuing zone finish operation for zones with small\nremainders. However, this approach caused performance degradation due to\ntwo reasons. First, the zone finish operation requires substantial\nexecution time. Second, zone finish operation requires to wait for in-\nflight writes from other jobs to complete, which is done by calling\nio_u_quiesce() before the zone finish operation.\n\nTo avoid the performance degradation, introduce the new option named\n\"write_zone_remainder\". When the option is specified, issue writes to\nthe remainder areas instead of issuing zone finish operation. The write\noperation makes the zones in the full condition in the same manner as\nthe zone finish operation, freeing up the zone resource of the device\nand enabling writing to other zones. Also when the option is set, skip\nthe io_u_quiesce() which was required before the zone finish operation.\nThe performance benefit by eliminating the waits on in-flight writes are\nparticularly significant in asynchronous I/O workloads, where the write\noperations to the remainder areas are managed as part of queued I/Os.\n\nThe drawback of this approach is that writing these remainders requires\nwrite sizes smaller than the minimum block size. As a result, when using\nthe write_zone_remainder option, the random map feature must be disabled\nusing the norandommap\u003d1 option, which is automatically done when the\noption is specified.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-4-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "09c99cd60e3760070838de8a750045fe1bbd659f",
      "tree": "944001d422610f9205b99e1d88fc76bed632f61c",
      "parents": [
        "8eb42eb1abc7ae9bd9d117518479446213586d07"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:53 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "zbd: fix write zone accounting\n\nCurrently, zbd_convert_to_write_zones() calls io_u_quiesce() when the\nnumber of write target zones hits one of the limits of write zones. This\nwait by io_u_quiesce() significantly degrade the performance. While I\ntried to remove the io_u_quiesce(), I observed that the test case 58 of\nt/zbd/test-zbd-support failed with null_blk devices that have a\nmax_active_zones limit set.\n\nThe failure cause is an incorrect write target zone accounting in\nzbd_convert_to_write_zones(). This function checks the current write\ntarget zones, and selects one of them as the next write target zone.\nAfter the zone selection, it locks the zone. However, when the zone is\nlocked, another job such as a trim workload or a write workload with the\nzone_reset_threshold option might have already reset the zone and\nremoved it from the write target zones array. This unexpected zone\nremoval from the array caused an incorrect zone accounting and the test\ncase failure.\n\nTo avoid the incorrect zone accounting, call zbd_write_zone_get() after\nthe selected zone gets locked. If the zone is removed from the write\ntarget zones array, the function adds the zone back to the array.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-3-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "8eb42eb1abc7ae9bd9d117518479446213586d07",
      "tree": "2c83b8dd0fd42c0193842a636222089e311d1ed8",
      "parents": [
        "ccf9f41fdacae34fbf8bf839406c4cc7d5070d49"
      ],
      "author": {
        "name": "Shin\u0027ichiro Kawasaki",
        "email": "shinichiro.kawasaki@wdc.com",
        "time": "Tue Mar 03 10:31:52 2026 +0900"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Mar 03 19:11:54 2026 -0500"
      },
      "message": "zbd: fix zone selection of random writes\n\nIn zonemode\u003dzbd, random write workloads targeting zoned block devices\nwith max write zones limits such as max_open_zones can not do write\noperations to randomly chosen offset because of the zoned block device\nconstraint of writing at write pointers. To adjust the offsets to valid\npositions, fio calls the function zbd_convert_to_write_zone(). This\nfunction checks the current write target zones as the next offset\ncandidates but may fail depending on the conditions of those zones.\nIn such cases, the function waits for zone condition changes before\nretrying.\n\nHowever, the retry logic begins with the zone where the previous attempt\nended, and selects the zones that were previously write target.\nConsequently, the same zones are repeatedly chosen for writing,\nresulting in writes concentrating on certain zones despite the workload\nspecifying random write.\n\nTo ensure proper zone selection for random writes, modify\nzbd_convert_to_write_zone() to retry the zone selection based on the\noriginal offset provided to the function. The local variable \u0027zb\u0027 keeps\nthe reference to the zone corresponding to the original offset. Use \u0027zb\u0027\nat the retry attempt start.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Shin\u0027ichiro Kawasaki \u003cshinichiro.kawasaki@wdc.com\u003e\nLink: https://lore.kernel.org/r/20260303013159.3543787-2-shinichiro.kawasaki@wdc.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "ccf9f41fdacae34fbf8bf839406c4cc7d5070d49",
      "tree": "1a99ae43f2e9841e697d7bfb8ef75501069a4b9f",
      "parents": [
        "a7554ee21d3f4a799969da2e54a66e7081c1571c",
        "4fb1ef3fb9fa2352031ba235ab07299a4e2ff632"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Mar 02 10:26:27 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Mar 02 10:26:27 2026 -0700"
      },
      "message": "Merge branch \u0027prof-use-after-free-fix\u0027 of https://github.com/jsemric/fio\n\n* \u0027prof-use-after-free-fix\u0027 of https://github.com/jsemric/fio:\n  Fix use-after-free of idle_prof_common variable\n"
    },
    {
      "commit": "4fb1ef3fb9fa2352031ba235ab07299a4e2ff632",
      "tree": "88724e66125498d6687f300900ee79e06c56c36a",
      "parents": [
        "234997216d17ad087221e968ca56704918522de9"
      ],
      "author": {
        "name": "Jakub Semrič",
        "email": "jakubsemric@gmail.com",
        "time": "Mon Mar 02 15:42:45 2026 +0100"
      },
      "committer": {
        "name": "Jakub Semrič",
        "email": "jakubsemric@gmail.com",
        "time": "Mon Mar 02 15:58:04 2026 +0100"
      },
      "message": "Fix use-after-free of idle_prof_common variable\n\n`ipc` global variable is initialized in run_threads function before\nrunning the threads which are accessing it during IO. However, when we\nprint out statistics, the `ipc` is cleaned up (namely it\u0027s pointer\nattribute `*ipts`). Since, it is possible to print out stats\nperiodically, we can clean up `ipc-\u003eipts` before other threads still use\nthe value which results in segmentaion fault. This commit avoids that by\nfreeing `ipc-\u003eipts` at the end of `fio_backend` function.\n\nThis addresses https://github.com/axboe/fio/issues/1909 which causes\nsegfault when --status-interval flag is set.\n\nSigned-off-by: Jakub Semrič \u003cjakubsemric@gmail.com\u003e\n"
    },
    {
      "commit": "a7554ee21d3f4a799969da2e54a66e7081c1571c",
      "tree": "17d530b20df533ddf042cb38b4e94c1394aeb894",
      "parents": [
        "fdc5efbcd9ae636881308a9a7175d745999dd2ce"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:11 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: posixaio: add support for DDIR_SYNCFS\n\nFlag the posixaio IO engine with FIO_ASYNCIO_SYNC_SYNCFS to indicate\nthat it supports the syncfs operation, synchronously. Also change\nfio_posixaio_queue() to execute aio_fsync() only for sync operations\nthat are not a syncfs, in which case, we directly call do_io_u_sync().\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "fdc5efbcd9ae636881308a9a7175d745999dd2ce",
      "tree": "60b783555959e1c23003005386e956e26dc59991",
      "parents": [
        "0ffdffe2b08766e4c1d07a351c9fd05f2fb2356f"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:10 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: ftruncate: add support for DDIR_SYNCFS\n\nFlag the ftruncate IO engine with FIO_SYNCFS to indicate that it\nsupports the syncfs operation. Also change fio_ftruncate_queue() to use\nddir_sync() to include all variants of the sync operation for driving\nthe call to do_io_u_sync(), instead of testing for DDIR_SYNC only as\nthat leads to ignoring other sync variants.\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "0ffdffe2b08766e4c1d07a351c9fd05f2fb2356f",
      "tree": "2ee74d5f5f20c45401f11df9316f673b8e4fba05",
      "parents": [
        "95cf3a61065f8967e249c8f4b0f858ae10972293"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:09 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: fileoperations: add support for DDIR_SYNCFS\n\nFlag the filecreate, filedelete, dircreate and dirdelete IO engines with\nFIO_SYNCFS to indicate that they support the syncfs operation. Change\nthe queue_io() function to use ddir_sync() to include all variants of\nthe sync operations for driving the call to do_io_u_sync(), instead of\ntesting for DDIR_SYNC only, which leads to ignoring other sync variants.\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "95cf3a61065f8967e249c8f4b0f858ae10972293",
      "tree": "44ddf10be829ea124b04ef5e1d5b5ae92bd3ba56",
      "parents": [
        "126e0100aed69c5a142d1a77124b8d67bd9dd5a8"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:08 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: fallocate: add support for DDIR_SYNCFS\n\nFlag the fallocate IO engine with FIO_SYNCFS to indicate that it\nsupports the syncfs operation. Also fix fio_fallocate_queue() to use\nddir_sync() to include all variants of the sync operation for driving\nthe call to do_io_u_sync(), instead of testing for DDIR_SYNC only, which\nleads to ignoring other sync variants.\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "126e0100aed69c5a142d1a77124b8d67bd9dd5a8",
      "tree": "251a68b4028b875c3312e8b644ef7e8d4bdeb4b9",
      "parents": [
        "1029cb755006b7196cd6e41868c145924837fe8f"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:07 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: io_uring: add support for DDIR_SYNCFS\n\nFlag the io_uring engine with the FIO_ASYNCIO_SYNC_SYNCFS flag to\nindicate that the syncfs operation is supported, synchronously.\nModify fio_ioring_queue() to call do_io_u_sync() for an io_u that has\nthe DDIR_SYNCFS data direction.\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1029cb755006b7196cd6e41868c145924837fe8f",
      "tree": "8abbc4700520d8a26488fc1a4085bc23519e1f31",
      "parents": [
        "53a8cd6bbeb785c63472f8b6c43e1b1b2adb99ef"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:06 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: libaio: add support for DDIR_SYNCFS\n\nFlag the libaio engine with the FIO_ASYNCIO_SYNC_SYNCFS flag to indicate\nthat the syncfs operation is supported, with synchronous processing.\nModify fio_libaio_queue() to call do_io_u_syncfs() for an io_u that has\nthe DDIR_SYNCFS data direction.\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "53a8cd6bbeb785c63472f8b6c43e1b1b2adb99ef",
      "tree": "4419da4bbcddd8b12e9815aa27f2e0653a37fddd",
      "parents": [
        "4d3aaa40f6a85112a81f3c3a0b1847d5294a1634"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:05 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "engines: sync: add support for DDIR_SYNCFS\n\nFlag the sync IO engine with the FIO_SYNCFS flag to indicate that syncfs\noperations are supported. No additional changes are needed to enable\nsyncfs processing as this IO engine already processes all sync operation\nvariants using do_io_u_sync().\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4d3aaa40f6a85112a81f3c3a0b1847d5294a1634",
      "tree": "83c42d4a45299b0bc0dc5b659415534baca05e17",
      "parents": [
        "411de8ecef63194adf805d4807b5dc3730571655"
      ],
      "author": {
        "name": "Damien Le Moal",
        "email": "dlemoal@kernel.org",
        "time": "Fri Feb 27 17:07:04 2026 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Mar 01 23:22:27 2026 -0700"
      },
      "message": "fio: introduce the end_syncfs option\n\nWhen benchmarking buffered I/O file write workloads with file systems,\nthe options fsync, fsync_on_close and end_fsync allow getting\nperformance statistics accounting for all file data safely written to\nthe file system device media. All these options can be used in\ndifferent scenarios to emulate applications use of the fsync() system\ncall.\n\nHowever, these different options all involve using the fsync() system\ncall against every written files, with the files being open.\nDepending on the file system, this characteristic is very limiting. E.g.\nthe XFS file system optimizes data placement of closed files to store\nthese files tightly in the same block group in order to generate a\nwrite command pattern that is very sequential and localized. The use\nof fio existing sync option variants thus does not allow measuring the\nperformance benefits of this optimization. Furthermore, the option\nend_fsync applies to all files of a job, causing a loop to open, fsync()\nand close each written file. For benchmarks with a very large number of\nfiles (e.g. a long run), this is very ineficient and slow, and often\ncauses the performance results to be much lower than expected.\n\nExtending the sync operation variants to include the ability to use the\nsyncfs() system call can solve these issues. Allow this by introducing\nthe new end_syncfs option.\n\nIf enabled, the end_syncfs option results in a call to the syncfs()\nsystem call when a job completes. This allows syncing all written files\nwith a single system call and also avoids the need to reopen all written\nfiles.  This is thus much faster than using end_fsync, and also enables\nfile system writeback optimizations that rely on the files being written\nback to be closed.\n\nThe syncfs() system call is supported by Linux only. This support is\ndetected in the configure script and if detected, the CONFIG_SYNCFS\nconfiguration option defined. When not supported, the helpers.c file\ndefines the syncfs() function to return an error. The option end_syncfs\nis allowed only when CONFIG_SYNCFS is defined.\n\nLike other sync variants, end_syncfs causes issuing an io_u when a job\ncompletes so that the time taken to write back all written files is\naccounted for in the final performance statistics. The io_u data\ndirection DDIR_SYNCFS is defined to control this. A DDIR_SYNCFS io_u is\nissued using the same function fio_io_sync() as for other sync variants.\nCalls to fio_io_sync() are driven with the new function fio_syncfs(),\nwhich iterates a list of struct fio_mount representing the mounted file\nsystems for the files of a job thread. This list is built using the\nhelper function add_file_fs(), called from setup_files(), and using the\nnew fs_list struct flist_head defined for each thread. This list is\nfreed on completion of a thread with a call to free_fs_list() from\nfree_release_files().\n\nstruct fio_mount definition is moved to file.h to allow iterating a\nthread fs_list entries in backend.c. This structure is also augmented\nwith a pointer to a struct fio_file and to an open directory stream (dir\nfield). These new entries are used to avoid opening one of the file of a\nthread for a file system entry and instead used to allocate and\ninitialize a struct fio_file representing the parent directory of a file\nof the file system entry. This is managed with the helper functions\nfio_open_fs() and fio_close_fs() which are used before and after calling\nfio_io_sync() in fio_syncfs().\n\nFinally, since support for executing the syncfs() system call depends on\nthe IO engine used, the engine flags FIO_SYNCFS and\nFIO_ASYNCIO_SYNC_SYNCFS are defined to allow indicating if an IO engine\nsupports DDIR_SYNCFS operations.\n\nSigned-off-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nReviewed-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "411de8ecef63194adf805d4807b5dc3730571655",
      "tree": "61d8884d20d952ee9fa07dbc677f0bcae23e59a7",
      "parents": [
        "1a04e5746c28316bd8a64825bf2b5739dc01c589",
        "234997216d17ad087221e968ca56704918522de9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Feb 24 08:03:09 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Feb 24 08:03:09 2026 -0700"
      },
      "message": "Merge branch \u0027offload_stability\u0027 of https://github.com/tomas-winkler-sndk/fio\n\n* \u0027offload_stability\u0027 of https://github.com/tomas-winkler-sndk/fio:\n  time: fix ramp completion offload workers\n  libfio: fix crash when io_submit_mode\u003doffload\n"
    },
    {
      "commit": "234997216d17ad087221e968ca56704918522de9",
      "tree": "61d8884d20d952ee9fa07dbc677f0bcae23e59a7",
      "parents": [
        "609b78a5a38c6ca844d891b4c0a8615928d2f92f"
      ],
      "author": {
        "name": "Chana Zaks",
        "email": "chana.zaks@sandisk.com",
        "time": "Fri Feb 13 00:36:25 2026 +0200"
      },
      "committer": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@sandisk.com",
        "time": "Mon Feb 23 18:25:49 2026 +0200"
      },
      "message": "time: fix ramp completion offload workers\n\nIn the ramp state is managed by a helper thread calling\nramp_period_check(). This helper thread advances the state\nfor the parent job thread_data, but when runnign io_submit_mode\u003doffload\nit does not have access to the private thread data of the individual\noffload worker threads.\n\nAs a result, worker threads calling ramp_period_over() may remain stuck\nin an old ramp state, never observing the transition to RAMP_FINISHING\nor RAMP_DONE. This prevents the workers from properly transitioning to\nthe main workload and can cause fio to hang indefinitely instead of\nreaching runtime completion.\n\nPropagate the RAMP_FINISHING state from the parent thread_data to\nthe worker td within ramp_period_over().\nThis ensures that workers stay in sync with the state machine\nmanaged by the helper thread.\n\nSigned-off-by: Chana Zaks \u003cchana.zaks@sandisk.com\u003e\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@sandisk.com\u003e\n"
    },
    {
      "commit": "609b78a5a38c6ca844d891b4c0a8615928d2f92f",
      "tree": "4318a66b41e204927a6a460c4a251203029f57cf",
      "parents": [
        "1a04e5746c28316bd8a64825bf2b5739dc01c589"
      ],
      "author": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@sandisk.com",
        "time": "Thu Feb 12 15:26:25 2026 +0200"
      },
      "committer": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@sandisk.com",
        "time": "Sun Feb 15 08:11:17 2026 +0200"
      },
      "message": "libfio: fix crash when io_submit_mode\u003doffload\n\nThe thinktime_blocks_counter is only initialized and updated\nat the thread level. However, reset_all_stats() is also called for\nio_workers when offload mode is enabled.\n\nAdd a check to ensure thinktime_blocks_counter is allocated before\nattempting to sum its values. This prevents a null pointer dereference\nand subsequent crash in offload workers.\n\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@sandisk.com\u003e\n"
    },
    {
      "commit": "1a04e5746c28316bd8a64825bf2b5739dc01c589",
      "tree": "19af169b7f0c24dd9eb0205ce01ac4d587ce0c1e",
      "parents": [
        "355be384bacefa351e8460c4ae946da6350dcbd9"
      ],
      "author": {
        "name": "Niklas Cassel",
        "email": "cassel@kernel.org",
        "time": "Fri Feb 06 17:40:58 2026 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Feb 13 11:44:32 2026 -0500"
      },
      "message": "stat: Remove duplicate space in __show_run_stats()\n\nRemove duplicate space in __show_run_stats().\n\nSigned-off-by: Niklas Cassel \u003ccassel@kernel.org\u003e\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260206164058.3105327-4-cassel@kernel.org\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "355be384bacefa351e8460c4ae946da6350dcbd9",
      "tree": "2b2a1cafdb4ed684e56d11b27c5a0cbd30cb0503",
      "parents": [
        "0f5f636b8da68050aaa4fbff6a29bccb29367ad7"
      ],
      "author": {
        "name": "Niklas Cassel",
        "email": "cassel@kernel.org",
        "time": "Fri Feb 06 17:40:57 2026 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Feb 13 11:44:32 2026 -0500"
      },
      "message": "io_u: Fix inconsistent handling of non-fatal errors with option error_dump\n\nCommit 8b28bd413759 (\"backend: Add configurable non fatal error list\")\nadded an early return in io_u_log_error() for non-fatal errors.\n\nThis early return is performed if the error is a non-fatal error, and if\nerror_dump is not set.\n\nLooking at the help text for the error_dump option:\n\"If set dump every error even if it is non fatal, true by default.\nIf disabled only fatal error will be dumped.\"\n\nSo this commit made sure that, if error dump is NOT set:\nFor a non-fatal error, io_u_log_error() will return early and will thus:\n1) NOT print an error to the log\n2) NOT call td_verror()\n\nHowever, if error dump is set, io_u_log_error() will not do an early\nreturn, instead it will log the non-fatal error and then call td_verror().\n\nIt is clear that the intention is for a non-fatal error to not set\ntd-\u003eerror. (If error_dump is used it should _log_ the non-fatal error.)\n\nThus, fix the code such that if error_dump is set, for a non-fatal error,\nwe:\n1) print an error to the log\n2) NOT call td_verror()\n\nThis will make the behavior in io_u_log_error() consistent.\nIf error_dump is set, we will log the non-fatal error, but regardless of\nerror_dump being set or not, we do NOT call td_verror() (which would set\ntd-\u003eerror) for a non-fatal error, since that was obviously the intention\nof commit 8b28bd413759 (\"backend: Add configurable non fatal error list\").\n\nFixes: 8b28bd413759 (\"backend: Add configurable non fatal error list\")\nSigned-off-by: Niklas Cassel \u003ccassel@kernel.org\u003e\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260206164058.3105327-3-cassel@kernel.org\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "0f5f636b8da68050aaa4fbff6a29bccb29367ad7",
      "tree": "f8be5594fe20ec60f47886a0980bd38225938bf2",
      "parents": [
        "05b2e9fe7722af4470139465a53c629c40936cb4"
      ],
      "author": {
        "name": "Niklas Cassel",
        "email": "cassel@kernel.org",
        "time": "Fri Feb 06 17:40:56 2026 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Feb 13 11:43:16 2026 -0500"
      },
      "message": "fio: Fix error string not matching errno\n\nWhen using --error_dump\u003d1 together with --continue_on_error\u003dio and\n--ignore_error\u003d62, we can get an inconsistent error in the summary line\n produced by __show_run_stats():\n\nBefore patch:\ntest: (groupid\u003d0, jobs\u003d1): err\u003d 5 (file:io_u.c:2012, func\u003dio_u error, error\u003dTimer expired): pid\u003d30925: Thu Feb  5 09:15:15 2026\n...\n  IO depths    : 1\u003d0.8%, 2\u003d1.6%, 4\u003d3.3%, 8\u003d6.6%, 16\u003d13.1%, 32\u003d74.6%, \u003e\u003d64\u003d0.0%\n     submit    : 0\u003d0.0%, 4\u003d100.0%, 8\u003d0.0%, 16\u003d0.0%, 32\u003d0.0%, 64\u003d0.0%, \u003e\u003d64\u003d0.0%\n     complete  : 0\u003d0.0%, 4\u003d98.9%, 8\u003d0.0%, 16\u003d0.0%, 32\u003d1.1%, 64\u003d0.0%, \u003e\u003d64\u003d0.0%\n     issued rwts: total\u003d0,122,0,0 short\u003d0,0,0,0 dropped\u003d0,0,0,0\n     errors    : total\u003d4, first_error\u003d62/\u003cTimer expired\u003e\n     latency   : target\u003d0, window\u003d0, percentile\u003d100.00%, depth\u003d32\n\nThe string for errno \"err\u003d 5\" is incorrectly printed as \"Timer expired\".\n(The correct string for \"err\u003d 5\" is \"Input/output error\".)\n\nThere is thus a mismatch between the errno and the verbose string for the\nerrno.\n\nThis problem is this code in __td_verror():\n\ntd-\u003eerror \u003d ____e;\nif (!td-\u003efirst_error)\n\tnowarn_snprintf(td-\u003everror, ..);\n\nI.e. td-\u003eerror (errno) is updated unconditionally, while td-\u003everror (the\nverbose error string), is updated only if td-\u003efirst_error is not set.\n\nThus, if you get a non-fatal error, it will set td-\u003eerror and td-\u003everror.\nLater, for a non-fatal error, io_completed() will call update_error_count()\nwhich sets td-\u003efirst_error, followed by td_clear_error() which will clear\ntd-\u003eerror.\n\nThus a second error (fatal or non-fatal) will set td-\u003eerror, but since\ntd-\u003efirst_error is now set, it will not update td-\u003everror.\n\nSince td-\u003everror contains the string representation of the errno stored in\ntd-\u003eerror, these two struct members should obviously always be updated at\nthe same time.\n\nIf you look at the example print above, you can see that there is another\nprint: first_error\u003d62/\u003cTimer expired\u003e\n\nWhich prints td-\u003efirst_error, and does not even use td-\u003everror. Instead\nshow_thread_status_normal() calls strerror(td-\u003efirst_error) to get the\nerror string for td-\u003efirst_error.\n\nThere is thus absolutely no reason to not set td-\u003everror every time\ntd-\u003eerror is set.\n\nRemove the useless guard such that the error string will always correspond\nto errno.\n\nFixes: f2bba1820a56 (\"Add a \u0027continue_on_error\u0027 option to fio\")\nSigned-off-by: Niklas Cassel \u003ccassel@kernel.org\u003e\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260206164058.3105327-2-cassel@kernel.org\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n[Vincent: fixed commit message typo \u0027td-\u003eerror and td-\u003eerror\u0027]\n"
    },
    {
      "commit": "05b2e9fe7722af4470139465a53c629c40936cb4",
      "tree": "2afdf7d0fc18262592a70e98f8bc1e2154402dd4",
      "parents": [
        "33822fccb19e0ee8e5bb7ca4a42d4d215f7ba46d"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Feb 10 07:36:17 2026 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Feb 10 07:36:17 2026 -0500"
      },
      "message": "fio: bump server version for new option\n\nIncrement the server version since we now have a new sprandom cache size\noption.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "33822fccb19e0ee8e5bb7ca4a42d4d215f7ba46d",
      "tree": "b0821924749f90756a01192513e548b17a531290",
      "parents": [
        "6783ccc569c8e427cb3cfe4e8b37e18fa0601d9f",
        "546875b71f67e707e80c35c4ed1914b64d213988"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Feb 10 07:35:35 2026 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Feb 10 07:35:35 2026 -0500"
      },
      "message": "Merge branch \u0027sprandom-cache-implementation\u0027 of https://github.com/cachyyyk/fio-spr-cache\n\n* \u0027sprandom-cache-implementation\u0027 of https://github.com/cachyyyk/fio-spr-cache:\n  SPRandom Cache Size Behavior Implementation\n"
    },
    {
      "commit": "546875b71f67e707e80c35c4ed1914b64d213988",
      "tree": "75fcbbd610471fadf4565a0114eaca96b1114501",
      "parents": [
        "a8ab726842f4140dfcdb4240138f1abba9b54c05"
      ],
      "author": {
        "name": "Charles Henry",
        "email": "charleshenry@micron.com",
        "time": "Wed Jan 21 14:42:49 2026 -0700"
      },
      "committer": {
        "name": "Charles Henry",
        "email": "charleshenry@micron.com",
        "time": "Sun Feb 08 13:06:39 2026 -0700"
      },
      "message": "SPRandom Cache Size Behavior Implementation\n\nDefine a new SPRandom variable to allow for an SSD cache size(spr_cs)\nto be defined.\nPreserve original SPRandom invalidation behavior if spr_cs is\nzero(default).\nIf spr_cs is non-zero then region X invalidations are done after\nregion X+1 writes are completed instead of before. This creates an\nadditional region size of distance between the writes and associated\ninvalidations.\nReturn an error if the defined cache size is greater than the region\nsize and tell the user the maximum number of regions supported with\nthe defined cache size.\n\nAttempting to resolve https://github.com/axboe/fio/issues/2043\n\nSigned-off-by:  Charles Henry \u003ccharleshenry@micron.com\u003e\n"
    },
    {
      "commit": "6783ccc569c8e427cb3cfe4e8b37e18fa0601d9f",
      "tree": "fe6de8e218f325f8299dce3eb8fa1966be5db52a",
      "parents": [
        "d943089b9484ff3934018250d863c6b32683bba8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Feb 08 08:39:27 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Feb 08 08:39:27 2026 -0700"
      },
      "message": "options: ensure callback handlers handle NULL input\n\nVarious callback handlers weren\u0027t prepared for a NULL input. Ensure\nthat they are, they should just fail if the input is required but\nnone is given.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d943089b9484ff3934018250d863c6b32683bba8",
      "tree": "5f10ad8b60d2e060e0736f9ebbc705f061570917",
      "parents": [
        "9387e61b5fcfbce1e4ed29b0cd19890a37ba1766"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Feb 08 08:31:09 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Feb 08 08:31:09 2026 -0700"
      },
      "message": "Revert \"parse: check for NULL input\"\n\nThis reverts commit 9387e61b5fcfbce1e4ed29b0cd19890a37ba1766.\n\nSome callbacks do handle and expect the input to be NULL, so\nunfortunately we cannot rely on that to do a generic punt for a NULL\ninput.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9387e61b5fcfbce1e4ed29b0cd19890a37ba1766",
      "tree": "e9c08018567c9a4506650251f66f07bfa7d1362e",
      "parents": [
        "a8ab726842f4140dfcdb4240138f1abba9b54c05"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Feb 08 08:04:24 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Feb 08 08:04:24 2026 -0700"
      },
      "message": "parse: check for NULL input\n\nFor string parsing functions, check for a NULL input before passing\nto callbacks, or attempting to duplicate the string. If not, ill formed\njobs that do:\n\nfdp_pli\n\nor\n\nverify_async_cpus\n\nwithout providing any actual data will crash the parser.\n\nLink: https://github.com/axboe/fio/issues/2055\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a8ab726842f4140dfcdb4240138f1abba9b54c05",
      "tree": "5f10ad8b60d2e060e0736f9ebbc705f061570917",
      "parents": [
        "5e5975a411cfd2af04c49f8d822e8e06a01a3771",
        "736c2015aa2ffd866b1b15815aa4ef80cf5af513"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 05 13:14:38 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 05 13:14:38 2026 -0700"
      },
      "message": "Merge branch \u0027offload_fix\u0027 of https://github.com/tomas-winkler-sndk/fio\n\n* \u0027offload_fix\u0027 of https://github.com/tomas-winkler-sndk/fio:\n  workqueue: fix threads stall when running with io_submit_mode offload\n"
    },
    {
      "commit": "736c2015aa2ffd866b1b15815aa4ef80cf5af513",
      "tree": "5f10ad8b60d2e060e0736f9ebbc705f061570917",
      "parents": [
        "5e5975a411cfd2af04c49f8d822e8e06a01a3771"
      ],
      "author": {
        "name": "Chana Zaks",
        "email": "chana.zaks@sandisk.com",
        "time": "Thu Feb 05 14:52:52 2026 +0200"
      },
      "committer": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@sandisk.com",
        "time": "Thu Feb 05 20:41:10 2026 +0200"
      },
      "message": "workqueue: fix threads stall when running with io_submit_mode offload\n\nWhen starting a submit worker, start_worker() sets the worker state to\nIDLE immediately after pthread_create():\n\nsw-\u003eflags \u003d SW_F_IDLE;\n\nHowever, worker_thread() may run and set SW_F_RUNNING very early in its\nown startup path:\n\n\tpthread_mutex_lock(\u0026sw-\u003elock);\n        sw-\u003eflags |\u003d SW_F_RUNNING;\n        if (ret)\n            sw-\u003eflags |\u003d SW_F_ERROR;\n        pthread_mutex_unlock(\u0026sw-\u003elock);\n\nIf worker_thread() wins the race and sets SW_F_RUNNING before\nstart_worker() assigns SW_F_IDLE, the unconditional assignment in\nstart_worker() clobbers previously set bits and leaves the worker flags\nas *only* SW_F_IDLE. As a result, workqueue_init() waits forever for all\nworkers to report SW_F_RUNNING:\n\n      thread_main()\n        -\u003e rate_submit_init()\n          -\u003e workqueue_init()\n             ...\n             running \u003d 0;\n             for (i \u003d 0; i \u003c wq-\u003emax_workers; i++) {\n                 pthread_mutex_lock(\u0026sw-\u003elock);\n\n                 if (sw-\u003eflags \u0026 SW_F_RUNNING)\n                     running++;\n                 if (sw-\u003eflags \u0026 SW_F_ERROR)\n                     error++;\n                 pthread_mutex_unlock(\u0026sw-\u003elock);\n             }\n\n             if (error || running \u003d\u003d wq-\u003emax_workers)\n                 break;\n\n             pthread_cond_wait(\u0026wq-\u003eflush_cond, \u0026wq-\u003eflush_lock);\n\nBecause SW_F_RUNNING was overwritten, `running` never reaches\n    `wq-\u003emax_workers`, and the init loop blocks on `flush_cond` indefinitely.\n\nSigned-off-by: Chana Zaks \u003cchana.zaks@sandisk.com\u003e\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@sandisk.com\u003e\n"
    },
    {
      "commit": "5e5975a411cfd2af04c49f8d822e8e06a01a3771",
      "tree": "04e74dbbf0c32be0635189df9bd3aa636dd2948f",
      "parents": [
        "a50d7ce532510ab467d307c1ee010386e20ee652",
        "49c1051a2d13100ddf29387891df628abd9e5359"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Feb 02 08:05:59 2026 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Feb 02 08:05:59 2026 -0500"
      },
      "message": "Merge branch \u0027sprandom-fix\u0027 of https://github.com/tomas-winkler-sndk/fio\n\n* \u0027sprandom-fix\u0027 of https://github.com/tomas-winkler-sndk/fio:\n  fio: sprandom: append newline to error message\n"
    },
    {
      "commit": "49c1051a2d13100ddf29387891df628abd9e5359",
      "tree": "04e74dbbf0c32be0635189df9bd3aa636dd2948f",
      "parents": [
        "a50d7ce532510ab467d307c1ee010386e20ee652"
      ],
      "author": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@sandisk.com",
        "time": "Mon Feb 02 11:44:04 2026 +0200"
      },
      "committer": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@sandisk.com",
        "time": "Mon Feb 02 12:19:47 2026 +0200"
      },
      "message": "fio: sprandom: append newline to error message\n\nTerminate the error message with a newline.\n\nFixes: #2047\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@sandisk.com\u003e\n"
    },
    {
      "commit": "a50d7ce532510ab467d307c1ee010386e20ee652",
      "tree": "bde7c14266b0dfb08904c3be672d20bd2465b193",
      "parents": [
        "2d953029b289b778e18c9418f7d596bd12232215",
        "ada82d74746a9d1c3de66bb6af0619c9b16b5768"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jan 30 08:03:56 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jan 30 08:03:56 2026 -0700"
      },
      "message": "Merge branch \u0027fix-fork-memleak\u0027 of https://github.com/malikoyv/fio\n\n* \u0027fix-fork-memleak\u0027 of https://github.com/malikoyv/fio:\n  backend: remove premature free of td-\u003eeo in parent process\n"
    },
    {
      "commit": "ada82d74746a9d1c3de66bb6af0619c9b16b5768",
      "tree": "313498a9320118e90e5f504be8b96daadf5fef32",
      "parents": [
        "13b8ee321afe09619930df58bc9d7a969e035d8b"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Fri Jan 30 09:43:07 2026 +0100"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Fri Jan 30 09:43:07 2026 +0100"
      },
      "message": "backend: remove premature free of td-\u003eeo in parent process\n\nWhen running in fork mode, the parent process was manually freeing\ntd-\u003eeo (ioengine options) immediately after forking the child.\nHowever, the parent process continues to manage the thread_data structure\nuntil the job completes, and fio_backend() eventually calls\nfio_options_free(td) during the final cleanup.\n\nThis premature free in the parent process loop caused a double-free\nerror when fio_backend() later attempted to free the same options\nvia fio_options_free().\n\nRemove the explicit free of td-\u003eeo in the run_threads() loop to let\nthe standard cleanup path in fio_backend() handle it safely.\n\nThis double-free issue was detected by AddressSanitizer:\n\u003d\u003d1276\u003d\u003dERROR: AddressSanitizer: attempting double-free on 0x7c254ebe0260 in thread T0:\n    #0 0x7fc5500e5beb in free.part.0 (/usr/lib64/libasan.so.8+0xe5beb)\n    #1 0x000000449d36 in fio_options_free /tmp/fio/options.c:6161\n    #2 0x00000046709b in fio_backend /tmp/fio/backend.c:2779\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    },
    {
      "commit": "2d953029b289b778e18c9418f7d596bd12232215",
      "tree": "cf7db538e4bd0b958c7334092cc1361cd096e6c2",
      "parents": [
        "13b8ee321afe09619930df58bc9d7a969e035d8b",
        "0b554ec1705ce71f366ac3fe2156b05b0c301623"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 28 05:22:30 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 28 05:22:30 2026 -0700"
      },
      "message": "Merge branch \u0027job-process-comm\u0027 of https://github.com/robertbaldyga/fio\n\n* \u0027job-process-comm\u0027 of https://github.com/robertbaldyga/fio:\n  Add option to specify job process comm\n"
    },
    {
      "commit": "0b554ec1705ce71f366ac3fe2156b05b0c301623",
      "tree": "3f8767c2ba4cc7df95aab07d500292d257b8b8d7",
      "parents": [
        "e2e90ae52be17877d61bb58cf50e9781810d3d49"
      ],
      "author": {
        "name": "Robert Baldyga",
        "email": "robert.baldyga@open-cas.com",
        "time": "Tue Jan 27 15:07:44 2026 +0100"
      },
      "committer": {
        "name": "Robert Baldyga",
        "email": "robert.baldyga@unvertical.com",
        "time": "Wed Jan 28 11:53:30 2026 +0100"
      },
      "message": "Add option to specify job process comm\n\nSome storage systems may exhibit different behaviors depending on the\napplication running on top, identified by its process comm string.\nIt can be useful for fio jobs to present themselves with a specified\ncomm string to trigger those behaviors in a testing setup.\n\nSigned-off-by: Robert Baldyga \u003crobert.baldyga@open-cas.com\u003e\n"
    },
    {
      "commit": "13b8ee321afe09619930df58bc9d7a969e035d8b",
      "tree": "c2b29297b46c6dfcc5bdc0e2d3477de2c795fd5c",
      "parents": [
        "e2e90ae52be17877d61bb58cf50e9781810d3d49"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 27 16:37:50 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 27 16:37:50 2026 -0700"
      },
      "message": "engines/io_uring: don\u0027t flag iowait for GET_EVENTS if feasible\n\nWe should not flag iowait for waiting on events, if the kernel\nsupports bypassing that.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e2e90ae52be17877d61bb58cf50e9781810d3d49",
      "tree": "a39d310b556701f05a674074fed7ce74602016a7",
      "parents": [
        "bfe306e16932382069d4c4de3eb0bae9de1e9b09",
        "23a8d270f9d0c4225ad9976ba65a4ea1a9b515e9"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jan 23 12:55:48 2026 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jan 23 12:55:48 2026 -0500"
      },
      "message": "Merge branch \u0027issue_1499\u0027 of https://github.com/gautammenghani/fio\n\n* \u0027issue_1499\u0027 of https://github.com/gautammenghani/fio:\n  man: Update the description for `verify_only` explaining phantom writes\n"
    },
    {
      "commit": "bfe306e16932382069d4c4de3eb0bae9de1e9b09",
      "tree": "53e584bd6cda678a8f0ec8e5189ec35ee711ab38",
      "parents": [
        "26cb608bd12e3e6fa24f3cb067c56d10ccf32c7d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 20 12:56:59 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 20 12:56:59 2026 -0700"
      },
      "message": "Fixups for rbd luks support\n\nJust various style issues, that GitHub very helpfully never highlights\nin their code view...\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "26cb608bd12e3e6fa24f3cb067c56d10ccf32c7d",
      "tree": "e2280cca25a6305a7a4540be3cf80145f452698b",
      "parents": [
        "2625269de926fe836c681e0946151c61c4fdfd5e",
        "067ffa4db43f7ed05747c9aaf87dc56430ed5240"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 20 12:54:26 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 20 12:54:26 2026 -0700"
      },
      "message": "Merge branch \u0027rbd-encryption-support\u0027 of https://github.com/Greenpepper15/fio\n\n* \u0027rbd-encryption-support\u0027 of https://github.com/Greenpepper15/fio:\n  engines/rbd: add support for LUKS encryption\n"
    },
    {
      "commit": "067ffa4db43f7ed05747c9aaf87dc56430ed5240",
      "tree": "0ec35757f81bef1f712dd1fa9e259b334b919211",
      "parents": [
        "1d282baecd689f4409449d5e5238b30990cec377"
      ],
      "author": {
        "name": "David Mohren",
        "email": "david.mohren@clyso.com",
        "time": "Tue Jan 20 20:44:38 2026 +0100"
      },
      "committer": {
        "name": "David Mohren",
        "email": "david.mohren@clyso.com",
        "time": "Tue Jan 20 20:44:38 2026 +0100"
      },
      "message": "engines/rbd: add support for LUKS encryption\n\nCurrently, the rbd engine can only attach to unencrypted images.\nThis prevents users from benchmarking the performance impact of\nlibrbd\u0027s client-side encryption features.\n\nThis patch adds two new options, \u0027rbd_encryption_format\u0027 and\n\u0027rbd_encryption_passphrase\u0027, allowing fio to perform\nencryption/decryption IO with librbd before starting I/O.\n\nSigned-off-by: David Mohren \u003cdavid.mohren@clyso.com\u003e\n"
    },
    {
      "commit": "2625269de926fe836c681e0946151c61c4fdfd5e",
      "tree": "ae2058ef3694b3a41bd021406ed4dca5284a33eb",
      "parents": [
        "e2d1cce0f1c5617467f95ac2154212179451ba85",
        "8802c9d9a58396d0bc51a5aa5bc773c9396f28d3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 20 10:15:37 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 20 10:15:37 2026 -0700"
      },
      "message": "Merge branch \u0027io_uring_zbc_support\u0027 of https://github.com/mannanal/fio\n\n* \u0027io_uring_zbc_support\u0027 of https://github.com/mannanal/fio:\n  Add ZBD (Zoned Block Device) support to io_uring engine\n"
    },
    {
      "commit": "e2d1cce0f1c5617467f95ac2154212179451ba85",
      "tree": "2cd716c4d6527b18efe44c93ff03140df407dee3",
      "parents": [
        "6f6460e25699c8e328369bc65d3ebecebc5addfc"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jan 15 22:38:43 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jan 15 21:02:38 2026 -0500"
      },
      "message": "test: add test for switching to tausworthe64\n\nAdd a test script to confirm that we successfully switch to the\ntausworthe64 random generator when the combination of minimum block size\nand file size exceeds the limits of the default tausworthe32 random\ngenerator.\n\nDetect a succesful switch by seeing how many duplicate offsets are\ngenerated.\n\nAlso add this script to our automated test harness.\n\nTo run on Windows there will need to be some changes to the test runner.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "6f6460e25699c8e328369bc65d3ebecebc5addfc",
      "tree": "d1c68f68eb33f98417375ede4a26111255142378",
      "parents": [
        "1d282baecd689f4409449d5e5238b30990cec377"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jan 15 21:34:32 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jan 15 21:34:32 2026 +0000"
      },
      "message": "init: move random seed debug prints\n\nMove random seed debug prints immediately after they are set. This makes\nclearer that the subsequent call to td_fill_rand_seeds does not affect\nthese random seeds.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "1d282baecd689f4409449d5e5238b30990cec377",
      "tree": "3ed67e4729243733f1938fcbaf576351c6ca4f6f",
      "parents": [
        "7a1b6f4488daf50779090868f65b8b88d8055e7f"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jan 15 15:42:18 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jan 15 17:35:13 2026 +0000"
      },
      "message": "fio: make sure that child process output is comitted\n\nThere are no problems when output is directed to the console, but when\n--output\u003dsomefile is set, child process log messages may not make it to\nthe file since buffers are not flushed when the child process\nterminates. Make sure child process messages appear in the output by\nflushing the buffer before exiting.\n\nAlso try to make sure the child process starts with an emtpy info log\nbuffer.\n\nExample: tausworthe64 message does not appear without this patch\n----------------------------------------------------------------\nroot@localhost:~# ./fio-canonical/fio --output\u003dtest --name\u003dtest --rw\u003drandread --filesize\u003d128T --number_ios\u003d1 --ioengine\u003dnull\nroot@localhost:~# cat test\ntest: (g\u003d0): rw\u003drandread, bs\u003d(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine\u003dnull, iodepth\u003d1\nfio-3.41-77-gadec\nStarting 1 process\n\ntest: (groupid\u003d0, jobs\u003d1): err\u003d 0: pid\u003d206045: Thu Jan 15 15:46:43 2026\n  read: IOPS\u003d1, BW\u003d6860B/s (6860B/s)(4096B/597msec)\n...\n\nExample: with this patch tausworthe64 message appears\n-----------------------------------------------------\nroot@localhost:~# ./fio --output\u003dtest --name\u003dtest --rw\u003drandread --filesize\u003d128T --number_ios\u003d1 --ioengine\u003dnull\nroot@localhost:~# cat test\ntest: (g\u003d0): rw\u003drandread, bs\u003d(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine\u003dnull, iodepth\u003d1\nfio-3.41-82-g7a1b-dirty\nStarting 1 process\nfio: file test.0.0 exceeds 32-bit tausworthe random generator.\nfio: Switching to tausworthe64. Use the random_generator\u003d option to get rid of this warning.\n\ntest: (groupid\u003d0, jobs\u003d1): err\u003d 0: pid\u003d206135: Thu Jan 15 15:53:14 2026\n  read: IOPS\u003d1, BW\u003d6781B/s (6781B/s)(4096B/604msec)\n...\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "23a8d270f9d0c4225ad9976ba65a4ea1a9b515e9",
      "tree": "b1dd2ff53a87abfbafbc8f279828a161bb53f7a9",
      "parents": [
        "adeceb86edb28070cbae79dd38b5ec7354271063"
      ],
      "author": {
        "name": "Gautam Menghani",
        "email": "gautam.opensource@gmail.com",
        "time": "Thu Jan 15 21:39:47 2026 +0530"
      },
      "committer": {
        "name": "Gautam Menghani",
        "email": "gautam.opensource@gmail.com",
        "time": "Thu Jan 15 21:43:32 2026 +0530"
      },
      "message": "man: Update the description for `verify_only` explaining phantom writes\n\nWith `verify_only` option, no writes are actually issued. Update the man\npage and the HOWTO doc explaining that the writes in the fio output are\nphantom writes.\n\nFixes: #1499\nSigned-off-by: Gautam Menghani \u003cgautam.opensource@gmail.com\u003e\n"
    },
    {
      "commit": "7a1b6f4488daf50779090868f65b8b88d8055e7f",
      "tree": "27507754cfa4f3c337cca521128b8276d4050ba6",
      "parents": [
        "059e8c65434e10f423a34f0886fa45b5d00558c7"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 18:03:22 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jan 14 18:50:32 2026 +0000"
      },
      "message": "filesetup: switch to tausworthe64 for real if limits exceeded\n\nIf the combination of file size and minimum block size exceeds the\nlimits of the default tausworthe random generator, switch for real to\nthe tausworthe64 random generator.\n\nThe original code changed the random_generator option to tausworthe64\nbut by the time the change was made the random generators had already\nbeen initialized. So the original code had no effect on the offsets\ngenerated. This patch re-initializes the relevant random generator after\nthe switch to tausworthe64 so that this change can actually take effect.\n\nThe random generators are initialized as Fio parses the command line and\njob files. Later on thread_main() calls init_random_map() which calls\ncheck_rand_gen_limits() which actually carries out the random generator\nlimits check for each file.\n\nFixes: https://github.com/axboe/fio/issues/2036\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "059e8c65434e10f423a34f0886fa45b5d00558c7",
      "tree": "15caac8321bc889dd6096a370ad30dbb29627f49",
      "parents": [
        "e9d688d86aba7a1b540cc24805dbff6fe64d0d30"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 15:44:53 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 15:45:24 2026 +0000"
      },
      "message": "fio: improve comment for offset_state\n\nClarify that this is the state used for generating random offsets. The\nbitmap reference must be a holdover from old code.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "e9d688d86aba7a1b540cc24805dbff6fe64d0d30",
      "tree": "d32b452e697de4e37770e24d75e020168d70276a",
      "parents": [
        "ae53862b3396b64f9e243c2f1b0ab76c224b469d"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 15:41:55 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 15:41:55 2026 +0000"
      },
      "message": "fio: rename random_state to offset_state\n\nrandom_state is a random generator that generates the random offsets to\nuse for I/O operations. Change its name to offset_state to make this\nmore obvious.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "ae53862b3396b64f9e243c2f1b0ab76c224b469d",
      "tree": "c3d045e93c1edaae3f2a15839ad8c9ecf12d0c35",
      "parents": [
        "a205b68b48e9693c99fd21e8cf59ffe70def9b51"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 14:58:05 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 14:58:05 2026 +0000"
      },
      "message": "init: make trim_state always a 32-bit random generator\n\nThe trim_state random generator determines whether to trim an offset or\nnot with the given probability specified by the trim_percentage option.\nThere is no need for it to ever be 64 bits. So make it always 32 bits.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "a205b68b48e9693c99fd21e8cf59ffe70def9b51",
      "tree": "64c9abbbdcd41bb4e0dd7773ffb5388e5d85bdfc",
      "parents": [
        "adeceb86edb28070cbae79dd38b5ec7354271063"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jan 09 17:29:49 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jan 13 14:56:14 2026 +0000"
      },
      "message": "init: make fdp_state rand generator always 32 bits\n\nThere is no need for a 64-bit random generator for fdp_state. The FDP\nrandom generator is only used to randomly select from available\nplacement IDs. For NVMe FDP devices the placement ID is a 16-bit value.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "8802c9d9a58396d0bc51a5aa5bc773c9396f28d3",
      "tree": "e7443247f79fb049057d4d70d3bcaf7fe4a93123",
      "parents": [
        "adeceb86edb28070cbae79dd38b5ec7354271063"
      ],
      "author": {
        "name": "Vishal Jose Mannanal",
        "email": "vishaljm@dropbox.com",
        "time": "Mon Jan 12 13:50:16 2026 -0800"
      },
      "committer": {
        "name": "Vishal Jose Mannanal",
        "email": "vishaljm@dropbox.com",
        "time": "Mon Jan 12 14:43:35 2026 -0800"
      },
      "message": "Add ZBD (Zoned Block Device) support to io_uring engine\n\nThis patch adds comprehensive ZBD support to io_uring engine, enabling\nit to work with zonemode\u003dzbd for traditional zoned block devices like\nSMR (Shingled Magnetic Recording) devices.\n\nChanges include:\n- ZBD function implementations for zone management operations\n- Integration with existing blkzoned interfaces\n- Support for zone reporting, reset, finish, and write pointer\n  operations in SMR/ZBD devices\n\nI\u0027ve tested this on SMR drives with the io_uring engine and it works well.\n\nSample fio job:\n\n[zbd-test]\nioengine\u003dio_uring\ndirect\u003d1\nbs\u003d128k\nzonemode\u003dzbd\nfilename\u003d/dev/sdg\n\nSigned-off-by: Vishal Jose Mannanal \u003cvishaljm@dropbox.com\u003e\n"
    },
    {
      "commit": "adeceb86edb28070cbae79dd38b5ec7354271063",
      "tree": "6e0d909bf66073ba00ca3f49af84bdd887621179",
      "parents": [
        "119c948b33b39fe5754834e427e73464f247a9ba",
        "62ab6b9074f61cc50cf8bc7a9dc0ae0862552b17"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 11 13:05:54 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 11 13:05:54 2026 -0700"
      },
      "message": "Merge branch \u0027sync-fileop\u0027 of https://github.com/struschev/fio\n\n* \u0027sync-fileop\u0027 of https://github.com/struschev/fio:\n  fio: add sync capability for file operations\n"
    },
    {
      "commit": "119c948b33b39fe5754834e427e73464f247a9ba",
      "tree": "d2509f4d97c0193c3811a9d310e9d05e802af207",
      "parents": [
        "d0a2fbb8d07474d75ae2f5e86a930614a3919a1c",
        "14902fc2bc085031aff7cbc226e9136e57c57e0f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 11 13:00:58 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 11 13:00:58 2026 -0700"
      },
      "message": "Merge branch \u0027patch-1\u0027 of https://github.com/CookiePLMonster/fio\n\n* \u0027patch-1\u0027 of https://github.com/CookiePLMonster/fio:\n  windows: fix Y2038 bug caused by 32 bit truncation\n"
    },
    {
      "commit": "14902fc2bc085031aff7cbc226e9136e57c57e0f",
      "tree": "d2509f4d97c0193c3811a9d310e9d05e802af207",
      "parents": [
        "d0a2fbb8d07474d75ae2f5e86a930614a3919a1c"
      ],
      "author": {
        "name": "Silent",
        "email": "CookiePLMonster@users.noreply.github.com",
        "time": "Sat Jan 10 20:55:03 2026 +0100"
      },
      "committer": {
        "name": "Silent",
        "email": "zdanio95@gmail.com",
        "time": "Sun Jan 11 20:58:39 2026 +0100"
      },
      "message": "windows: fix Y2038 bug caused by 32 bit truncation\n\nInt32x32To64 macro internally truncates the arguments to int32,\nwhile time_t is 64-bit on most/all modern platforms.\nTherefore, usage of this macro creates a Year 2038 bug.\n\nSigned-off-by: Adrian Zdanowicz \u003czdanio95@gmail.com\u003e\n"
    },
    {
      "commit": "d0a2fbb8d07474d75ae2f5e86a930614a3919a1c",
      "tree": "8643c890b0d74f5b5c25108ef5e33dd68c7a2534",
      "parents": [
        "6ff32768ff322a269f87cd515ecfb218400f22bf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 11 10:24:48 2026 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 11 10:24:48 2026 -0700"
      },
      "message": "t/io_uring: enable setting an opcode and register opcode filter\n\nOnly meant for testing overhead of enabling restrictions, not anything\npeople should generally use. Defaults to off.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6ff32768ff322a269f87cd515ecfb218400f22bf",
      "tree": "170d31536d5fbbbeac81905e7f4140d6bd3289fa",
      "parents": [
        "356e1ca9a72f6e82ef3684b98b3628bb210520dd"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Dec 19 14:42:39 2025 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jan 07 14:01:53 2026 -0500"
      },
      "message": "Add option to specify ramp period by amount of IO\n\nIn some cases the ramp up period is not easy to define by amount of\ntime. This is for example a case of buffered writes measurement where we\nwant to start measuring only once dirty throttling kicks in. The time\nuntil dirty throttling kicks in depends on dirty limit (easy to figure\nout) and speed of writes to the page cache (difficult to know in\nadvance). Add option ramp_size which determines the ramp up period by\nthe amount of IO written (either by each job or by each group when group\nreporting is enabled).\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nLink: https://lore.kernel.org/r/20251219134247.14195-5-jack@suse.cz\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "356e1ca9a72f6e82ef3684b98b3628bb210520dd",
      "tree": "c7e29a7c6b5377d575afa080b1bd65262971cbe1",
      "parents": [
        "8b13582f3c7781ca1ce1e6166249e0677f9373bb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Dec 19 14:42:38 2025 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jan 07 14:01:13 2026 -0500"
      },
      "message": "time: Evaluate ramp up condition once per second\n\nInstead of evaluating whether ramp up period has finished on each IO\nsubmission and completion evaluate it once per second and set\nappropriate state variable in thread_data. Later when ramp up period end\ncondition will be more complex and would involve stat data from all\nthreads, it would unnecessarily slow down IO.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nLink: https://lore.kernel.org/r/20251219134247.14195-4-jack@suse.cz\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "8b13582f3c7781ca1ce1e6166249e0677f9373bb",
      "tree": "dcdc07796a5c4d5f392c4a3311c3ef53d950e0fb",
      "parents": [
        "871c9b5137b2a11ee8ff128d4d9c8ae0a0c53358"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Dec 19 14:42:37 2025 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jan 07 14:01:13 2026 -0500"
      },
      "message": "eta: Use in_ramp_period() instead of opencoding it\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nLink: https://lore.kernel.org/r/20251219134247.14195-3-jack@suse.cz\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "871c9b5137b2a11ee8ff128d4d9c8ae0a0c53358",
      "tree": "6e2a5365a5881503c28419bbd2bbb72ccb188c3f",
      "parents": [
        "8b3d9f24e72732b9a3ac5f1878226985db124888"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Dec 19 14:42:36 2025 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jan 07 14:01:13 2026 -0500"
      },
      "message": "td: Initialize ramp_period_over based on options\n\nInstead of checking whether ramp_time is specified each time we need to\ncheck whether we are in the ramp period, initialize ramp_period_over\nbased on the ramp_time option. This will simplify things more\nsignificantly later when ramp up period can be defined in a different\nway.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nLink: https://lore.kernel.org/r/20251219134247.14195-2-jack@suse.cz\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "8b3d9f24e72732b9a3ac5f1878226985db124888",
      "tree": "4a8becfb3f38d42aec3cc404acf48e94f195e511",
      "parents": [
        "e12461d7864cf99581759f5417ca60dc68fee446"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Dec 19 14:42:35 2025 +0100"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jan 07 14:01:13 2026 -0500"
      },
      "message": "time: rename in_ramp_time() and ramp_time_over()\n\nRename in_ramp_time() and ramp_time_over() to in_ramp_period() and\nramp_period_over() respectively. We will be adding other not time-based\nmethods for determining whether the load is ramping up so the old names\nwould be confusing.\n\nReviewed-by: Damien Le Moal \u003cdlemoal@kernel.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nLink: https://lore.kernel.org/r/20251219134247.14195-1-jack@suse.cz\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "e12461d7864cf99581759f5417ca60dc68fee446",
      "tree": "d1de2b75d234b4ebaf75cf5d30b2e88478847152",
      "parents": [
        "d028bdcb8515a29eb683a23b0a88c398cfe4d687",
        "8bf237030058090e0a8d9f117f598c4cf32072af"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Dec 29 13:08:16 2025 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Dec 29 13:08:16 2025 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of https://github.com/alex310110/fio\n\n* \u0027master\u0027 of https://github.com/alex310110/fio:\n  write_hist_log: do not require ZLIB for non-server instances\n"
    },
    {
      "commit": "8bf237030058090e0a8d9f117f598c4cf32072af",
      "tree": "d1de2b75d234b4ebaf75cf5d30b2e88478847152",
      "parents": [
        "d028bdcb8515a29eb683a23b0a88c398cfe4d687"
      ],
      "author": {
        "name": "alex310110",
        "email": "xqiu@google.com",
        "time": "Mon Dec 29 11:45:43 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 29 11:45:43 2025 -0800"
      },
      "message": "write_hist_log: do not require ZLIB for non-server instances\n\nSince `td-\u003eclient_type` is always non-zero (CLI is 1, GUI is 2), the check\r\n`if (td-\u003eclient_type)` in `init.c` always triggers, causing --write_hist_log\r\nto be unusable when ZLIB is not configured for standalone runs.\r\nBy checking if the fio instance `is_backend`, ZLIB availability will be\r\nchecked for fio running as server in server/client mode, and the check\r\nwill be passed for fio running in standalone mode."
    },
    {
      "commit": "d028bdcb8515a29eb683a23b0a88c398cfe4d687",
      "tree": "18e489659a5b70a6930d6237899a21ee707a8840",
      "parents": [
        "aaf99c4bba611a0fb70da6d09b8d119d37ab3f66"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 16:24:18 2025 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 16:33:42 2025 -0500"
      },
      "message": "test: cleanup test artifacts as we are running\n\nWe have been running out of storage space on our GitHub-host runners for\nour automated tests. Enable the option to delete artifacts for\nsuccessful tests as we are running.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "aaf99c4bba611a0fb70da6d09b8d119d37ab3f66",
      "tree": "3e7ec990c3d103470d071beb18521a0178e2b717",
      "parents": [
        "2c6ba4ff897b7717145133f54e5fab47b26147d1"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 16:22:17 2025 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 16:33:42 2025 -0500"
      },
      "message": "t/run-fio-tests: add cleanup option\n\nWe have been running out of storage on GitHub-hosted runners in our\nautomated tests. Add a \u0027cleanup\u0027 option to delete artifacts of\nsuccessful tests as we are running.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "2c6ba4ff897b7717145133f54e5fab47b26147d1",
      "tree": "c91d599173e64f6fbb494f6f6c16787741b3bcb6",
      "parents": [
        "56078d8097a894b89b3c88e7f50acb98d26c260f"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 14:28:34 2025 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 14:28:34 2025 -0500"
      },
      "message": "steadystate: define units for latency measurements\n\nFor the JSON output latency measurements make the units explicit by\nchanging the name of the array to lat_ns.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "56078d8097a894b89b3c88e7f50acb98d26c260f",
      "tree": "685da67ca74e9ed0ba3aae969bf847bc3a7af8c8",
      "parents": [
        "3a4c1dd89241f5aff2835047a166dde19ae796b3",
        "950daee4fc98340cd89137ee27699c76d483da6b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 14:27:16 2025 -0500"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Dec 18 14:27:16 2025 -0500"
      },
      "message": "Merge branch \u002720251023-steady-state-add-latency\u0027 of https://github.com/mcgrof/fio\n\n* \u002720251023-steady-state-add-latency\u0027 of https://github.com/mcgrof/fio:\n  mock-tests: assess per second latency recovery\n  fio: add mock test framework for isolated unit testing\n  fio: add latency steady state detection\n  fio: refactor duplicate code in steadystate_*_mean functions\n  fio: refactor steady state validation check\n  configure: conditionally add gnutls for libnfs \u003e\u003d 6.0.0\n"
    }
  ],
  "next": "3a4c1dd89241f5aff2835047a166dde19ae796b3"
}
