)]}'
{
  "log": [
    {
      "commit": "2ef248b912406bb4cfe54aa45295a84924d00f46",
      "tree": "14d55c4710bfb9d8cbf26aba17f7b96c0b81adc6",
      "parents": [
        "162e8fb3d059c090caa56255e4a6a92bfa6e47b3",
        "0ba66fd3536a83728cd1a044c55ac304d1dcd7aa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Sep 21 03:14:52 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Sep 21 03:14:52 2026 -0600"
      },
      "message": "Merge branch \u0027readme-typo\u0027 of github.com:vic233333/fio\n\n* \u0027readme-typo\u0027 of github.com:vic233333/fio:\n  README: fix unclosed angle bracket in maintainer email\n"
    },
    {
      "commit": "0ba66fd3536a83728cd1a044c55ac304d1dcd7aa",
      "tree": "14d55c4710bfb9d8cbf26aba17f7b96c0b81adc6",
      "parents": [
        "162e8fb3d059c090caa56255e4a6a92bfa6e47b3"
      ],
      "author": {
        "name": "Xinchen Shen",
        "email": "ddbb520db@163.com",
        "time": "Sat Sep 19 03:35:02 2026 -0500"
      },
      "committer": {
        "name": "Xinchen Shen",
        "email": "ddbb520db@163.com",
        "time": "Sat Sep 19 03:35:02 2026 -0500"
      },
      "message": "README: fix unclosed angle bracket in maintainer email\n\nThe Maintainers section is missing the closing \u0027\u003e\u0027 after Jens Axboe\u0027s\nemail address. README.rst is included by doc/fio_doc.rst, so the typo\nalso shows up in the rendered documentation on readthedocs.\n\nSigned-off-by: Xinchen Shen \u003cddbb520db@163.com\u003e\n"
    },
    {
      "commit": "162e8fb3d059c090caa56255e4a6a92bfa6e47b3",
      "tree": "7f83c64b461b24b3f2c43cd1cf036329c21f2166",
      "parents": [
        "6bc57a931f04fa3f50348d8c8f087187f050c6e1"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Sep 17 15:55:53 2026 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 17 14:57:34 2026 -0600"
      },
      "message": "client: don\u0027t send uninitialized data in fio_send_file error replies\n\nVarious error cases in fio_send_file() might send an uninitialized\nbuffer over the wire. The server should ignore this when errno is set,\nbut it\u0027s best practice to not ship heap data over the wire, so fix that\nby:\n\n- using calloc vs malloc in the initial allocation so that early error\n  paths send initialized data.\n\n- grow the buffer via realloc only after open() succeeds, so that an\n  open() failure doesn\u0027t send a grown/uninit buffer back with the error.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nLink: https://patch.msgid.link/20260917205554.2281093-1-sandeen@redhat.com\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6bc57a931f04fa3f50348d8c8f087187f050c6e1",
      "tree": "6060bc5511c192615c3911715afc053201981ec1",
      "parents": [
        "6f97f3709897826797b8b21c1a9ce64436adf25c"
      ],
      "author": {
        "name": "Keith Busch",
        "email": "kbusch@kernel.org",
        "time": "Thu Sep 10 09:13:10 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Sep 11 14:41:56 2026 -0400"
      },
      "message": "eta: remove now unused done_secs\n\nCapping the ETA at the job\u0027s own remaining runtime removed the last\nreader of done_secs. Drop the variable, along with the gettime call\nthat maintained it on every reap.\n\nSigned-off-by: Keith Busch \u003ckbusch@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260910161310.1478081-5-kbusch@meta.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "6f97f3709897826797b8b21c1a9ce64436adf25c",
      "tree": "e5bf145a11e5ff52d37e8f0e3f99a092f49e3ca3",
      "parents": [
        "06911c6ed62c61eca0bc1c8eeb59a47204a8406c"
      ],
      "author": {
        "name": "Keith Busch",
        "email": "kbusch@kernel.org",
        "time": "Thu Sep 10 09:13:09 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Sep 11 14:41:56 2026 -0400"
      },
      "message": "eta: cap the ETA at the job\u0027s own remaining runtime\n\nThe ETA of a running job is capped at \"timeout + done_secs - elapsed\".\ndone_secs is a global accumulator of the runtime of every job reaped so\nfar, so the cap grows every time a job finishes. Whenever the cap is\nwhat actually gets reported, the ETA jumps back up by the runtime of\neverything that has already completed.\n\nThe cap is what gets reported when the progress based estimate exceeds\nthe remaining runtime, that is when perc is below elapsed/timeout. Any\njob that is behind on bytes relative to its runtime is in that state,\nso this covers the common \"size the job to the whole device, bound it\nwith runtime\" pattern. A job that would complete its size early stays\nat or above elapsed/timeout and never reaches the cap.\n\ntime_based makes no difference either way. It only lowers perc to\nmin(perc, elapsed/timeout), so a time_based job that cannot finish its\nsize within the runtime is affected exactly like a size based one.\n\nIt is most visible with stonewalled jobs, where the ETA climbs back to\nthe full run time at every batch boundary instead of counting down:\n\n  fio --name\u003dglobal --filename\u003d/dev/zero --runtime\u003d5 --size\u003d10T \\\n      --stonewall --name\u003da --name\u003db --name\u003dc --name\u003dd --name\u003de\n\n  before: 22 21 20  24 23 22 21 20  24 23 22 21 20  24 ...\n  after:  22 21 20 19 18 17 16 15 14 13 ... 02 01 00\n\nShrinking size until the jobs complete it within the runtime makes the\nsymptom disappear, which is a good way to confirm the cap is what is\nbeing reported.\n\nIt is not specific to stonewall. Two concurrent jobs with runtime\u003d5 and\nruntime\u003d20 show the same jump when the short one is reaped at t\u003d5.\n\ndone_secs made sense when it was introduced: thread_eta() was handed\nthe global elapsed time back then, so \"timeout + done_secs\" was this\njob\u0027s projected finish time relative to the start of the whole run.\nb29ee5b3 switched elapsed to be per job, measured from td-\u003eepoch, but\nleft the done_secs term behind.\n\nA job is terminated once utime_since(\u0026td-\u003eepoch, now) reaches\ntd-\u003eo.timeout, so with a per job elapsed the cap is simply\n\"timeout - elapsed\". Use that, and clamp at zero instead of relying on\nthe unsigned subtraction wrapping.\n\nFixes: b29ee5b3dee4 (\"Update ramp_time\")\nSigned-off-by: Keith Busch \u003ckbusch@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260910161310.1478081-4-kbusch@meta.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "06911c6ed62c61eca0bc1c8eeb59a47204a8406c",
      "tree": "2a59d378ce983f9f1bab3b128f1771a39a9af9c9",
      "parents": [
        "e37aa1de121039ecbb39fdd767a3ed14d0306179"
      ],
      "author": {
        "name": "Keith Busch",
        "email": "kbusch@kernel.org",
        "time": "Thu Sep 10 09:13:08 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Sep 11 14:41:56 2026 -0400"
      },
      "message": "backend: don\u0027t mark a job as running before it has set up\n\nrun_threads() moves a job from TD_INITIALIZED straight to TD_RUNNING and\nonly then releases it. The job still has all of its setup left to do:\nexec_prerun, pre_read_files(), setup_files(), init_io_u(),\nrate_submit_init() and finally set_epoch_time(). The job claims to be\nrunning for that entire window when it has not issued any IO and has no\nepoch to measure itself against.\n\nAnything that reads the state during that window gets a wrong answer.\nthread_eta() is the most readily observable  one: it derives elapsed\nfrom td-\u003eepoch, which is still zeroed, so a job with a three second\nexec_prerun reports\n\n  Jobs: 1 (f\u003d0): [R(1)][-.-%][eta 00m:00s]\n  Jobs: 1 (f\u003d0): [R(1)][50.0%][eta 00m:03s]\n\nbefore doing any work at all. Running, half done and no time left, none\nof which is true.\n\nPromote to TD_SETTING_UP instead, which is what that state is for, and\nlet the job promote itself to TD_RAMP or TD_RUNNING once setup is over\nand it has recorded its epoch. The same job now reports\n\n  Jobs: 1 (f\u003d1): [I(1)][0.0%][eta 00m:03s]\n\nWiden the TERMINATE_STONEWALL check to match. It tests for runstate \u003e\u003d\nTD_RUNNING to find jobs worth terminating, and a job in the setup window\nused to satisfy that. Without this, exit_what\u003dstonewall stops reaching a\njob that is still setting up, and a test where the short job is reaped\nwhile a longer one sits in exec_prerun goes from 5.5s to 20.5s. Note\nTD_RAMP sorts below TD_SETTING_UP, so ramping jobs remain excluded from\nthat check exactly as before.\n\nSigned-off-by: Keith Busch \u003ckbusch@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260910161310.1478081-3-kbusch@meta.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "e37aa1de121039ecbb39fdd767a3ed14d0306179",
      "tree": "71c960d0efa83eadb23e9f7cd77ee2f79144fb2a",
      "parents": [
        "ac6ae485e6003b2a9999540c4e3e65780f1e6660"
      ],
      "author": {
        "name": "Keith Busch",
        "email": "kbusch@kernel.org",
        "time": "Thu Sep 10 09:13:07 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Sep 11 14:41:56 2026 -0400"
      },
      "message": "eta: count a job that is setting up as running\n\nTD_RAMP increments both nr_running and nr_ramp, so nr_ramp is a subset\nof nr_running and display_thread_status() can compare the two. The\nTD_SETTING_UP side would increment only nr_setting_up, yet the\npercentage calculation scales by nr_setting_up / nr_running, a ratio\nthat only means anything if setting up jobs are counted in nr_running as\nwell: the existing ratio can drive the multiplier negative.\n\nA job that is setting up is started and doing work, it just has not\nissued IO yet, so count it in nr_running and treat nr_setting_up as the\nsubset as intended. Today this only covers the brief windows where\nsetup_files() and pre_read_file() bump the state, but it means the\nstatus line reports such a job instead of suppressing the whole line.\n\nSigned-off-by: Keith Busch \u003ckbusch@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260910161310.1478081-2-kbusch@meta.com\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "ac6ae485e6003b2a9999540c4e3e65780f1e6660",
      "tree": "3b1f156745a36b7f0028a02fe172096f15e3c288",
      "parents": [
        "e333e45bd1e7503388d71932af047ecfd22c25da",
        "64a14dfbe05f565a2b6afde62959383e5364bd5b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Sep 09 14:18:37 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Sep 09 14:18:37 2026 -0400"
      },
      "message": "Merge branch \u0027inconsistent_parameter_type_in_convert_agg_kbytes_percent\u0027 of https://github.com/dennischerchang/fio\n\n* \u0027inconsistent_parameter_type_in_convert_agg_kbytes_percent\u0027 of https://github.com/dennischerchang/fio:\n  Fix convert_agg_kbytes_percent() inconsistent type between caller and definition.\n"
    },
    {
      "commit": "64a14dfbe05f565a2b6afde62959383e5364bd5b",
      "tree": "410186aaf68f01361d71877c89a479237f1a8018",
      "parents": [
        "975ea1856fee9f4c0f01f6f19ba3c61ce24f9bc8"
      ],
      "author": {
        "name": "Dennis Chang",
        "email": "cherhungc@google.com",
        "time": "Thu Sep 03 17:00:25 2026 +0000"
      },
      "committer": {
        "name": "Dennis Chang",
        "email": "cherhungc@google.com",
        "time": "Fri Sep 04 19:14:37 2026 +0000"
      },
      "message": "Fix convert_agg_kbytes_percent() inconsistent type between caller\nand definition.\n\nIn stat.c, show_ddir_status() and add_ddir_status_json() calls\nconvert_agg_kbytes_percent() with \u0027double\u0027 parameter however\nconvert_agg_kbytes_percent() defines the parameter as \u0027int\u0027.\n\nFixes: #2142\n\nSigned-off-by: Dennis Chang chernhungc@google.com\n"
    },
    {
      "commit": "e333e45bd1e7503388d71932af047ecfd22c25da",
      "tree": "5edd60bc61bbd2f2f031ddaafaf735543441c457",
      "parents": [
        "975ea1856fee9f4c0f01f6f19ba3c61ce24f9bc8"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Sep 04 13:47:51 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Sep 04 14:04:44 2026 -0400"
      },
      "message": "ci: resize image for QEMU tests\n\nRecent QEMU tests have been failing with errors like this:\n\n dpkg: unrecoverable fatal error, aborting:\n  unable to flush /var/lib/dpkg/updates/tmp.i after padding: No space\n   left on device\n\nExample: https://github.com/axboe/fio/actions/runs/33871509826/job/101018344984?pr\u003d2133\n\nFix this by resizing the image.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "975ea1856fee9f4c0f01f6f19ba3c61ce24f9bc8",
      "tree": "bdaf51cfbffb8642dfaa1e7774b3c64ea633a682",
      "parents": [
        "ae35a58399b28edf857f7ebc43b3eb40d86ac29b",
        "0a6a43bdba3b4ab338fc899a03aeb45a120cce0b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Sep 01 21:48:38 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Sep 01 21:48:38 2026 +0000"
      },
      "message": "Merge branch \u0027consolidate_commit_call_path\u0027 of https://github.com/dennischerchang/fio\n\n* \u0027consolidate_commit_call_path\u0027 of https://github.com/dennischerchang/fio:\n  Consolidate all caller of io_ops_commit() to call td_io_commit().\n"
    },
    {
      "commit": "ae35a58399b28edf857f7ebc43b3eb40d86ac29b",
      "tree": "be0cfedf6ce05370cb88675750cfd27ec985b658",
      "parents": [
        "93ab5b9771768dc99cef9550a75f74c5948eac0d",
        "da5d76b3e12abf0d78ed776146d7e7fb6f94de96"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Aug 26 16:12:53 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Aug 26 16:12:53 2026 +0000"
      },
      "message": "Merge branch \u0027verify-zero-dump\u0027 of https://github.com/sarthak-k/fio\n\n* \u0027verify-zero-dump\u0027 of https://github.com/sarthak-k/fio:\n  verify: dump the received buffer when zero verify fails\n"
    },
    {
      "commit": "0a6a43bdba3b4ab338fc899a03aeb45a120cce0b",
      "tree": "3b62d3ce515afca1555f5c1f6965cd59f996d0f5",
      "parents": [
        "93ab5b9771768dc99cef9550a75f74c5948eac0d"
      ],
      "author": {
        "name": "Dennis Chang",
        "email": "cherhungc@google.com",
        "time": "Wed Aug 26 00:06:50 2026 +0000"
      },
      "committer": {
        "name": "Dennis Chang",
        "email": "cherhungc@google.com",
        "time": "Wed Aug 26 00:11:36 2026 +0000"
      },
      "message": "Consolidate all caller of io_ops_commit() to call td_io_commit().\n\nCalling io_ops-\u003ecommit() will not update io_u_in_flight and io_u_queued\naccordingly. If iio_u_queued is not reset properly the fio may need to\nmake unnecessary stop to drain the queue. Which may degrade the throughput.\n\nSigned-off-by: Dennis Chang \u003ccherhungc@google.com\u003e\n"
    },
    {
      "commit": "da5d76b3e12abf0d78ed776146d7e7fb6f94de96",
      "tree": "be0cfedf6ce05370cb88675750cfd27ec985b658",
      "parents": [
        "93ab5b9771768dc99cef9550a75f74c5948eac0d"
      ],
      "author": {
        "name": "Sarthak Killedar",
        "email": "sarthak.killedar@gmail.com",
        "time": "Tue Aug 25 23:59:59 2026 +0000"
      },
      "committer": {
        "name": "Sarthak Killedar",
        "email": "sarthak.killedar@gmail.com",
        "time": "Tue Aug 25 23:59:59 2026 +0000"
      },
      "message": "verify: dump the received buffer when zero verify fails\n\nverify_zero() logs the file, offset and length of a mismatch, but unlike\nthe header and pattern verify paths it never writes out the data it read.\nThat makes trim_verify_zero and write zeroes verify failures harder to\nanalyze than a regular verify failure, where verify_dump\u003d1 leaves the\noffending block on disk for inspection.\n\nDump the received block from verify_zero() when verify_dump is set, so\nthat both callers benefit. There is no point in also dumping an expected\nbuffer, as the expected contents are all zeroes.\n\nSigned-off-by: Sarthak Killedar \u003csarthak.killedar@gmail.com\u003e\n"
    },
    {
      "commit": "93ab5b9771768dc99cef9550a75f74c5948eac0d",
      "tree": "c3c85695024b7c88a4075a670ca787aa5efc3fe1",
      "parents": [
        "f5344384f7c7b6e9e6aa9336e476e8f6eb54dd3a",
        "da5f6c4f2bea1eed3da6a4e8e2af24c6231db64e"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Aug 24 15:42:41 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Aug 24 15:42:41 2026 +0000"
      },
      "message": "Merge branch \u0027reap-signaled-worker-exit-code\u0027 of https://github.com/Vladyyy/fio\n\n* \u0027reap-signaled-worker-exit-code\u0027 of https://github.com/Vladyyy/fio:\n  backend: exit non-zero when a job process is killed by a signal\n"
    },
    {
      "commit": "f5344384f7c7b6e9e6aa9336e476e8f6eb54dd3a",
      "tree": "1643102e5dbb814a7b23706950389a9edeae93ae",
      "parents": [
        "a9f011b10a4b1795c6c340cef24b0b4a441570b5",
        "4bed0c62eb4813c93a420a29d23fb9ee4a743862"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Aug 21 12:31:33 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Aug 21 12:31:33 2026 -0400"
      },
      "message": "Merge branch \u0027doc-fix\u0027 of https://github.com/Panky-codes/fio\n\n* \u0027doc-fix\u0027 of https://github.com/Panky-codes/fio:\n  doc: change RWF_UNCACHED to RWF_DONTCACHE\n"
    },
    {
      "commit": "4bed0c62eb4813c93a420a29d23fb9ee4a743862",
      "tree": "1643102e5dbb814a7b23706950389a9edeae93ae",
      "parents": [
        "a9f011b10a4b1795c6c340cef24b0b4a441570b5"
      ],
      "author": {
        "name": "Pankaj Raghav",
        "email": "p.raghav@samsung.com",
        "time": "Fri Aug 21 09:27:19 2026 +0200"
      },
      "committer": {
        "name": "Pankaj Raghav",
        "email": "p.raghav@samsung.com",
        "time": "Fri Aug 21 09:27:19 2026 +0200"
      },
      "message": "doc: change RWF_UNCACHED to RWF_DONTCACHE\n\nThe flag is RWF_DONTCACHE and not RWF_UNCACHED.[1]\n\n[1] https://man7.org/linux/man-pages/man2/pwritev2.2.html\n\nSigned-off-by: Pankaj Raghav \u003cp.raghav@samsung.com\u003e\n"
    },
    {
      "commit": "a9f011b10a4b1795c6c340cef24b0b4a441570b5",
      "tree": "bf1d44ce66066783667ae0bdb4f65d0c29d7be56",
      "parents": [
        "be6ff8a27ca9ac0cde0b7a7545ca2a55d24e7f3f"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Aug 10 16:45:20 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Aug 20 18:25:48 2026 +0000"
      },
      "message": "t/io_uring_cmd.py: test new bsg features\n\nAdd some test cases for newly added cmd_type\u003dbsg features. These include\ntests for the cdb_len, write_mode\u003dverify, and read_mode\u003dprefetch\noptions.\n\nExample invocation:\n python3 t/io_uring_cmd.py --cmd_type\u003dbsg \"--dut\u003d/dev/bsg/6\\:0\\:0\\:0\"\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "be6ff8a27ca9ac0cde0b7a7545ca2a55d24e7f3f",
      "tree": "e5b2cd1902bce356ba51e684512facb19d11c897",
      "parents": [
        "895b2676da2c2bf4a3c0da6efb1255312a996387",
        "6394aa3ce95156f6f4e6835bc8f97bb3c57f6b85"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Aug 20 18:25:36 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Aug 20 18:25:36 2026 +0000"
      },
      "message": "Merge branch \u0027bsg-update\u0027 of https://github.com/ljw8161/fio\n\n* \u0027bsg-update\u0027 of https://github.com/ljw8161/fio:\n  engines/io_uring: add read_mode\u003dprefetch for bsg cmd_type\n  engines/io_uring: support write_mode\u003dverify for bsg cmd_type\n  engines/io_uring: add cdb_len option for bsg cmd_type\n  engines/io_uring: drop bsg status parsing from event\n  engines/io_uring: drop unused write_opcode assignment on bsg path\n"
    },
    {
      "commit": "895b2676da2c2bf4a3c0da6efb1255312a996387",
      "tree": "2ab5b36c06d426b5c426b44dec83e1a24fb8a273",
      "parents": [
        "b27fdbac98125f24c7e78ae439245c6989a4a718",
        "1a4f9e9a5976529ff5ef0fc0469bfcaa25a43999"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Aug 20 10:45:06 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Aug 20 10:45:06 2026 -0400"
      },
      "message": "Merge branch \u0027gnutls.configure\u0027 of https://github.com/bsdkurt/fio\n\n* \u0027gnutls.configure\u0027 of https://github.com/bsdkurt/fio:\n  libnfs only requires gnutls on Linux Modify configure to only require gnutls on Linux when libnfs is \u003e\u003d 6.\n"
    },
    {
      "commit": "1a4f9e9a5976529ff5ef0fc0469bfcaa25a43999",
      "tree": "2ab5b36c06d426b5c426b44dec83e1a24fb8a273",
      "parents": [
        "b27fdbac98125f24c7e78ae439245c6989a4a718"
      ],
      "author": {
        "name": "Kurt Miller",
        "email": "bsdkurt@gmail.com",
        "time": "Thu Aug 20 08:51:29 2026 -0400"
      },
      "committer": {
        "name": "Kurt Miller",
        "email": "bsdkurt@gmail.com",
        "time": "Thu Aug 20 08:55:08 2026 -0400"
      },
      "message": "libnfs only requires gnutls on Linux\nModify configure to only require gnutls on Linux when libnfs\nis \u003e\u003d 6.\n\nSigned-off-by: Kurt Miller \u003ckurt@openbsd.org\u003e\n"
    },
    {
      "commit": "6394aa3ce95156f6f4e6835bc8f97bb3c57f6b85",
      "tree": "2e5a7d5c7f9b4016729fc92d4c8db5a3dd67c030",
      "parents": [
        "d66a4fe4cb70d14e3401c441e7d66a4a378f4ad2"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Jul 02 10:42:14 2026 +0900"
      },
      "committer": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Aug 20 09:23:03 2026 +0900"
      },
      "message": "engines/io_uring: add read_mode\u003dprefetch for bsg cmd_type\n\nIntroduce a new engine option, read_mode, that selects which command\nvariant is issued for DDIR_READ, symmetric to the existing write_mode\noption. Two values are supported: \u0027read\u0027, which preserves the current\nbehavior, and \u0027prefetch\u0027, which issues SCSI PRE-FETCH commands.\n\nPRE-FETCH pulls the requested LBAs from the medium into the device\nread cache without transferring the data to the host. This is useful\nfor warming the device read cache prior to a subsequent measurement,\nand for measuring the overhead of the prefetch path itself.\n\nThe PRE-FETCH CDB length follows the cdb_len option:\nPRE-FETCH(10)\u003d0x34 and PRE-FETCH(16)\u003d0x90. SBC does not define a\n32-byte PRE-FETCH service action, so cdb_len\u003d32 is rejected with\nread_mode\u003dprefetch rather than silently falling back. readfua is\nalso rejected in this mode because the FUA bit is not defined for\nPRE-FETCH.\n\nread_mode is currently only meaningful for the bsg cmd_type. Passing\na non-default value with cmd_type\u003dnvme is rejected at engine init\nrather than silently ignored, so that users notice a\nmisconfiguration.\n\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\n"
    },
    {
      "commit": "d66a4fe4cb70d14e3401c441e7d66a4a378f4ad2",
      "tree": "5cb6c147a1dcd903bc18b10a320b939d1d4cf812",
      "parents": [
        "a646e7bcbde0388389011e908548a982f356c0f6"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Jul 02 10:40:10 2026 +0900"
      },
      "committer": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Aug 20 09:23:03 2026 +0900"
      },
      "message": "engines/io_uring: support write_mode\u003dverify for bsg cmd_type\n\nThe existing write_mode\u003dverify option is currently only handled for\nthe nvme cmd_type. Extend it to the bsg cmd_type so that SCSI VERIFY\ncommands can be used as the write-side operation of a workload. This\nis useful for measuring the cost of medium verification against the\nsame address range that would otherwise be written.\n\nThe VERIFY CDB length follows the cdb_len option: VERIFY(10)\u003d0x2F,\nVERIFY(16)\u003d0x8F, and VERIFY(32) via the variable-length CDB service\naction.\n\nThe data comparison behavior is controlled by a new verify_bytchk\noption that maps to the CDB BYTCHK field:\n\n  0 - medium verification only, no host data transfer (SG_DXFER_NONE)\n  1 - compare the full transfer against the medium byte by byte\n  3 - compare a single block against every block in the range\n\nFor BYTCHK 1 and 3 the command sends data to the device\n(SG_DXFER_TO_DEV); BYTCHK 3 transfers only a single block while the\nCDB still carries the full block count. verify_bytchk defaults to 0\nand is rejected unless write_mode\u003dverify.\n\nVERIFY is the first bsg command that issues SG_DXFER_NONE with a\nnon-zero io_u-\u003exfer_buflen (the buflen encodes the block count that\nthe device verifies against the medium). The previous\nfio_bsg_uring_cmd_init() lumped SG_DXFER_NONE into the else branch\nthat populates din_xferp/din_xfer_len, which happened to be harmless\nonly because DDIR_SYNC\u0027s xfer_buflen was zero. Tighten the else to\nmatch SG_DXFER_FROM_DEV explicitly so SG_DXFER_NONE leaves the data\ntransfer fields cleared.\n\nwritefua is rejected when combined with write_mode\u003dverify. The FUA\nbit is not defined for the VERIFY command in any of the CDB variants\nthat we support, and silently dropping the flag would hide a user\nmisconfiguration.\n\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\n"
    },
    {
      "commit": "a646e7bcbde0388389011e908548a982f356c0f6",
      "tree": "fe68223b84741540a36c73094f8a083bb691c320",
      "parents": [
        "8ad9a6e0f84e8a26d6e16d8dccce84f17ae65599"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Jul 02 21:28:18 2026 +0900"
      },
      "committer": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Aug 20 09:23:03 2026 +0900"
      },
      "message": "engines/io_uring: add cdb_len option for bsg cmd_type\n\nThe bsg cmd_type of the io_uring_cmd engine has so far hardcoded\nREAD(10) and WRITE(10) for DDIR_READ and DDIR_WRITE. That caps the\nsupported LBA range at 32 bits and the transfer length at 65535\nblocks, which prevents benchmarking devices whose capacity or per-I/O\ntransfer size exceeds those limits, and it also prevents comparing the\nperformance characteristics of different CDB lengths of the same\ncommand.\n\nAdd a new engine option, cdb_len, that selects the SCSI CDB length\nused for READ/WRITE commands. Supported values are 10, 16, and 32.\nThe 32-byte command is encoded as a variable-length CDB (opcode 0x7F)\nwith the READ(32) and WRITE(32) service actions.\n\nThe default is 0 (auto): the smallest CDB whose LBA and\ntransfer-length fields can hold the request is chosen, escalating from\nREAD(10)/WRITE(10) to READ(16)/WRITE(16) as the LBA or transfer\nlength grows, mirroring the sg engine. This lets fio drive devices\nwhose capacity or per-I/O size exceeds the 10-byte limits without\nrequiring the user to pick a CDB length up front. The 32-byte CDB\nshares the same 64-bit LBA and 32-bit length field widths as the\n16-byte CDB, so auto-escalation never reaches it and it remains\nopt-in only (for exercising the variable-length CDB path itself).\n\nWhen an explicit cdb_len is set, requests whose LBA or transfer\nlength would overflow the fields of the selected CDB length are\nrejected with -EINVAL rather than being silently promoted to a larger\nCDB. This preserves the user\u0027s explicit intent when a specific CDB\nlength is chosen for benchmarking.\n\nSYNCHRONIZE CACHE follows cdb_len as well: the 10-byte command\n(0x35) is issued when cdb_len\u003d10, and the 16-byte command (0x91) is\nissued otherwise. SBC does not define a 32-byte SYNCHRONIZE CACHE\nservice action, so cdb_len\u003d32 falls back to the 16-byte command.\nUNMAP has no CDB length selection and keeps its fixed 10-byte CDB\nregardless of cdb_len.\n\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\n"
    },
    {
      "commit": "8ad9a6e0f84e8a26d6e16d8dccce84f17ae65599",
      "tree": "785212b163bb22cefa5c56d6dedc12cec965b7b1",
      "parents": [
        "569d2d86fef22de1d32178fe6f1f46f0d59da79d"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Fri Jul 31 14:25:51 2026 +0900"
      },
      "committer": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Aug 20 09:23:03 2026 +0900"
      },
      "message": "engines/io_uring: drop bsg status parsing from event\n\nThe bsg completion was being parsed in two places:\nfio_ioring_cmd_event() decoded the packed SCSI status from\ncqe-\u003ebig_cqe[0] into io_u-\u003eerror, and fio_ioring_cmd_errdetails()\nre-derived the SCSI status and host status from io_u-\u003eerror. The NVMe\npath only does this breakdown once, in errdetails.\n\nDrop the bsg-specific decoding from event and store the raw\ncqe-\u003ebig_cqe[0] in io_u-\u003eerror, leaving errdetails as the single place\nthat splits the SCSI status (bits 0-7) and host status (bits 16-23).\n\nFixes: d77ed2b9 (\"engines/io_uring: Add bsg support for io_uring_cmd engine\")\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\n"
    },
    {
      "commit": "569d2d86fef22de1d32178fe6f1f46f0d59da79d",
      "tree": "e17c4d423d7db11cd414053b9d865486defadb27",
      "parents": [
        "b27fdbac98125f24c7e78ae439245c6989a4a718"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Jul 02 20:20:34 2026 +0900"
      },
      "committer": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Thu Aug 20 09:23:03 2026 +0900"
      },
      "message": "engines/io_uring: drop unused write_opcode assignment on bsg path\n\nfio_ioring_cmd_init() assigns ld-\u003ewrite_opcode \u003d bsg_cmd_write_10 when\ncmd_type\u003dbsg, but that field is never read on the bsg submission path.\nfio_bsg_uring_cmd_prep() fills bc-\u003ecdb[0] directly from io_u-\u003eddir, and\nld-\u003ewrite_opcode is only consumed by fio_nvme_uring_cmd_prep() on the\nnvme path. The assignment has therefore never had any effect.\n\nDrop the dead assignment. The surrounding `if (write_mode \u003d\u003d WRITE)`\nbranch existed only to hold it; once the assignment is gone the branch\nis empty, so the check collapses to a plain rejection of unsupported\nwrite modes.\n\nFixes: d77ed2b9 (\"engines/io_uring: Add bsg support for io_uring_cmd engine\")\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\n"
    },
    {
      "commit": "b27fdbac98125f24c7e78ae439245c6989a4a718",
      "tree": "68fcfc924ed2e6d88bb780aadd0644f128138e81",
      "parents": [
        "890d702f0fec21627fdf63b08f0021734ed09574"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Aug 18 12:24:18 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Aug 18 12:24:18 2026 -0400"
      },
      "message": "fio: move example job file to examples directory\n\nAn example job file was accidentally committed to the repository root\ndirectory. Move it to the examples directory.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "890d702f0fec21627fdf63b08f0021734ed09574",
      "tree": "4b7f739a678c7051ad244028dca6bdfea0ceae21",
      "parents": [
        "1de4a3dc5d10a0107b51c496dc96a07f58bdc5c9",
        "e89f08b5271daace151b4307a679089d5c9f22d2"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Aug 18 12:21:19 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Aug 18 12:21:19 2026 -0400"
      },
      "message": "Merge branch \u0027feat/hipfile-upstream-rebase\u0027 of https://github.com/sbates130272/fio\n\n* \u0027feat/hipfile-upstream-rebase\u0027 of https://github.com/sbates130272/fio:\n  examples/doc: add libhipfile example job files and documentation\n  engines/libhipfile: add ROCm hipFile engine\n  engines/gpuaccel: add per-backend sync flags and backend-scoped state\n  engines: refactor libcufile.c into a shared gpuaccel layer\n"
    },
    {
      "commit": "1de4a3dc5d10a0107b51c496dc96a07f58bdc5c9",
      "tree": "70483d780980b6755b646979a63f883093c66e69",
      "parents": [
        "c76c61b0fbe1b90a7886b8790805cf9903285074",
        "306f72b640aeaaf969bcd94d3d2c6168e2ad717c"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Aug 07 11:09:43 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Aug 07 11:09:43 2026 -0400"
      },
      "message": "Merge branch \u0027add_copyright\u0027 of https://github.com/ljw8161/fio\n\n* \u0027add_copyright\u0027 of https://github.com/ljw8161/fio:\n  engines/io_uring: add copyright header to bsg files\n"
    },
    {
      "commit": "da5f6c4f2bea1eed3da6a4e8e2af24c6231db64e",
      "tree": "850fa3eb242629beafb6abd4c675e48257996a6b",
      "parents": [
        "c76c61b0fbe1b90a7886b8790805cf9903285074"
      ],
      "author": {
        "name": "Vlad Tudose",
        "email": "tudosevt@amazon.com",
        "time": "Thu Aug 06 23:28:32 2026 +0000"
      },
      "committer": {
        "name": "Vlad Tudose",
        "email": "tudosevt@amazon.com",
        "time": "Thu Aug 06 23:28:32 2026 +0000"
      },
      "message": "backend: exit non-zero when a job process is killed by a signal\n\nWhen a forked job process dies from a fatal signal (SIGABRT from a\nfailed assert(), SIGSEGV, OOM kill), reap_threads() logs\n\"fio: pid\u003d..., got signal\u003d...\" and records td-\u003esig, but never sets\ntd-\u003eerror. The reaped: label only counts td-\u003eerror into exit_value, so\nthe main fio process exits 0 and the job summary prints err\u003d 0 for the\ncrashed job. The WIFEXITED branch right below does propagate a\nnon-zero exit status, so a worker that exits(1) fails the run while a\nworker that crashes reports success, defeating any automation that\nchecks fio\u0027s exit code.\n\nMark an unexpectedly signaled worker as failed by setting td-\u003eerror\n(EINTR) next to the existing log_err. SIGTERM and SIGUSR2 stay\nexcluded, matching the log message: fio uses them for orderly\ntermination. Setting td-\u003eerror rather than bumping exit_value directly\nkeeps the accounting in one place and makes the job summary show a\nnon-zero err for the crashed job.\n\nTested by sending SIGABRT to one worker of a two-job process-based\nrun: the crashed job now reports err\u003d 4 and fio exits 1 (both were 0\nbefore); a crash-free run still reports err\u003d 0 for all jobs and\nexits 0.\n\nFixes: https://github.com/axboe/fio/issues/2127\n\nSigned-off-by: Vlad Tudose \u003ctudosevt@amazon.com\u003e\n"
    },
    {
      "commit": "306f72b640aeaaf969bcd94d3d2c6168e2ad717c",
      "tree": "70483d780980b6755b646979a63f883093c66e69",
      "parents": [
        "c76c61b0fbe1b90a7886b8790805cf9903285074"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Tue Aug 04 14:07:59 2026 +0900"
      },
      "committer": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Tue Aug 04 14:14:50 2026 +0900"
      },
      "message": "engines/io_uring: add copyright header to bsg files\n\nAdd the copyright header to bsg.c and bsg.h, which provide BSG\n(Block SCSI Generic) support for the io_uring_cmd engine. The\nfiles were previously committed without a license header.\n\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\n"
    },
    {
      "commit": "c76c61b0fbe1b90a7886b8790805cf9903285074",
      "tree": "cec36c9a406e7a3b336b4dabc80fd1219176dcc7",
      "parents": [
        "b384f4d3472e9dae62122c631899bac86368df63"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Jul 27 12:16:36 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Jul 27 12:19:07 2026 -0400"
      },
      "message": "ci: add a test for OOM issue with large iolog trims\n\nFio had a bug where it would mistakenly account for trim sizes when\nallocating memory for data buffers when issuing commands from an iolog.\nAdd this test case to catch possible regressions.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "b384f4d3472e9dae62122c631899bac86368df63",
      "tree": "ec557e2e04ec4c419fba797c49251126759b8d54",
      "parents": [
        "aa079a649f6df4fbda67fe612e74b0c34cea6dea"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 23 13:57:09 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 23 14:28:28 2026 -0400"
      },
      "message": "ci: add Alpine Linux container test platform\n\nAlpine Linux uses the musl C library instead of glibc. Add an Alpine\nLinnux container test platform to increase the diversity of the\nplatforms that we test on.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "aa079a649f6df4fbda67fe612e74b0c34cea6dea",
      "tree": "b4a75d31b47f0372bfd47ea9529daf7f3da3074d",
      "parents": [
        "5033304d56f0f37d5c2d7d6ee1e7a1944d5aad1a"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jul 22 12:16:11 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jul 22 12:34:16 2026 -0400"
      },
      "message": "ci: consolidate QEMU FDP and verify-trim tests\n\nRun the FDP and verify-trim.py tests in the same QEMU guest. The two\ndon\u0027t really fit together but they are both short tests and it may\nreduce total test time if we spin up one fewer QEMU guest.\n\nThe FDP test uses an emulated NVMe device whereas verify-trim.py uses a\nmemory-backed null_blk instance.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "5033304d56f0f37d5c2d7d6ee1e7a1944d5aad1a",
      "tree": "9b700b18d0df510d21ba69c802c7d56ce7298fc4",
      "parents": [
        "ca10b7f9bea5a23ae0b48ee7e49e1ee7d129099f"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jul 22 10:54:57 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jul 22 12:20:33 2026 -0400"
      },
      "message": "ci: add t/io_uring_pi.py to QEMU tests\n\nNow that we are running a relatively recent Debian testing kernel in our\nQEMU guests we can run t/io_uring_pi.py which requires an IOCTL that\nfirst appeared in kernel 6.17.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "ca10b7f9bea5a23ae0b48ee7e49e1ee7d129099f",
      "tree": "a3fcc73408826e90ec7a252071c8b38171bee880",
      "parents": [
        "cd29b7a64de2d5462a3b72e46d098679ba16b3f1"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 21 12:24:39 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 21 18:12:55 2026 -0400"
      },
      "message": "ci: switch QEMU jobs to Debian testing\n\nIn order to have a more up to date kernel, switch the platform for our\nQEMU tests to Debian testing.\n\nvirt-builder has no Debian testing image, so just download an image from\ncloud.debian.org. I tried to do an in-place upgrade from Debian trixie\nto forky using the virt-builder image but this was not possible to\nautomate due to a grub installation issue.\n\nWith this Debian release (forky), blkzone was moved from util-linux to\nutil-linux-extra, so we have to manually install that package for our\nZBD tests.\n\nThe Debian forky cloud images also use netplan for network configuration\ninstead of relying on /etc/network/interfaces.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "cd29b7a64de2d5462a3b72e46d098679ba16b3f1",
      "tree": "003f6cc7a8322d736133c554eaa686b2ad9b2f2e",
      "parents": [
        "39ee70fd4dacecf8f21a1a491bfd9285f97ef5d5"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:43:02 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:43:02 2026 -0400"
      },
      "message": "ci: drop Ubuntu container test platforms\n\nDrop the 32- and 64-bit Ubuntu container test platforms. These are\nredundant since we already are running 32- and 64-bit Ubuntu tests on\nGitHub-hosted runners. This may speed up test execution as GitHub has a\nmaximum of 20 concurrent jobs on GitHub-hosted runners.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "39ee70fd4dacecf8f21a1a491bfd9285f97ef5d5",
      "tree": "58bab1429a5744d6441d8efb51651606f0dd9a1d",
      "parents": [
        "f7d91f9032313046b79f4da11d603dc6117c1aa1"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 10:21:44 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:40:36 2026 -0400"
      },
      "message": "ci: update macOS platform from macos-15 to macos-26\n\nApple changed to a year-based numbering convention for macOS. This\nGitHub Actions platform uses an arm64 architecture.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "f7d91f9032313046b79f4da11d603dc6117c1aa1",
      "tree": "b57e81115860b1375b579fcb40ff9c5dba0fa5e9",
      "parents": [
        "852a498c8a28d3906ab120f76b485c6ae3c932bb"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 15:20:04 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:40:36 2026 -0400"
      },
      "message": "ci: update platforms for QEMU tests\n\nRun the QEMU tests on Ubuntu 26.04 platforms and instantiate Debian 13\nguests.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "852a498c8a28d3906ab120f76b485c6ae3c932bb",
      "tree": "03068e7709b6689cc14c6d003ed017bd511fbd41",
      "parents": [
        "8f7740afe1988b6de9b34b1bfbd07920119de5e6"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 14:43:34 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:40:36 2026 -0400"
      },
      "message": "ci: use newer platforms for container tests\n\nSwitch to newer platforms for container tests. Adjust build options to\nreflect that RHEL clones no longer have libiscsi-devel and\nglusterfs-api-devel in their upstream repositories.\n\nExplicitly install python3-six package on Ubuntu.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "8f7740afe1988b6de9b34b1bfbd07920119de5e6",
      "tree": "aaf2807665b79b4781cf43d66ad0e1943097676f",
      "parents": [
        "dad7f10c36dbb6f6517b17f888922c6a8fb2260e"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 14:15:16 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:40:16 2026 -0400"
      },
      "message": "fio: resolve const char * compiler warnings\n\nNewer gcc version emit a warning upon encountering the assignment of a\nconst char * to a non-const char *. Resolve these warnings with type\ncasts.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "dad7f10c36dbb6f6517b17f888922c6a8fb2260e",
      "tree": "2a8aecaa8d535ac10ae9b11410bd85ce747f7a76",
      "parents": [
        "cc1875cf33d0b64544165225cf1ed29b7d1b372c"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 11:59:00 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:40:16 2026 -0400"
      },
      "message": "fio: fix const char * warning\n\nfio_show_ioengine_help takes a const char * but may modify the\nassociated string. This triggers a warning in newer gcc versions. Avoid\nthis warning by modifying a copy of the original string.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "cc1875cf33d0b64544165225cf1ed29b7d1b372c",
      "tree": "a100939f59354eeb52eb389814093d9aeaa5096b",
      "parents": [
        "f034409358a7ba3bff3a5c67595afdce6bd65eb3"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 11:05:25 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jul 17 11:40:16 2026 -0400"
      },
      "message": "ci: switch from Ubuntu 22.04 to 26.04\n\nSwitch the platforms for GitHub-hosted runners from Ubuntu 22.04 to\n26.04.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "f034409358a7ba3bff3a5c67595afdce6bd65eb3",
      "tree": "4d72b8bd73821b7ce2acdb1a4c02562baa052510",
      "parents": [
        "b75f951c8635c0718c4b1b756f649ceb53b68481"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 10:36:26 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jul 16 10:36:26 2026 -0400"
      },
      "message": "test: drop scheduled tests\n\nDrop the scheduled CI tests that ran every night. These nightly tests\noriginally ran the verify test script. Since we are now running the\nverify tests with every push and pull request, we no longer need these\nnightly tests.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "b75f951c8635c0718c4b1b756f649ceb53b68481",
      "tree": "7869a4292a5f9ea69770ed996081df3ce705a09d",
      "parents": [
        "179fb9c335020ab6993ace93d4c2de7487f05a09",
        "fd45a5ae00868645199013ac20d0528b9a2b92ca"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jul 15 12:41:48 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jul 15 12:41:48 2026 -0400"
      },
      "message": "Merge branch \u0027prv-y-verify-bytes-issued\u0027 of https://github.com/malikoyv/fio\n\n* \u0027prv-y-verify-bytes-issued\u0027 of https://github.com/malikoyv/fio:\n  verify: add coverage for experimental replay\n  init: disable write sequence checking for experimental_verify\n  io_ddir: fix -Wsign-compare in io_ddir_name()\n  backend: stop experimental verify based on bytes issued, not completed\n"
    },
    {
      "commit": "fd45a5ae00868645199013ac20d0528b9a2b92ca",
      "tree": "7869a4292a5f9ea69770ed996081df3ce705a09d",
      "parents": [
        "40dcc0af50f3aa7b28a4a7710cc4db3ae3bf982f"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jul 15 10:26:03 2026 +0200"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jul 15 10:28:04 2026 +0200"
      },
      "message": "verify: add coverage for experimental replay\n\nEnable verify_only coverage for experimental_verify now that replay\nstate is reset correctly, and add an experimental_verify case to the\nverify header test matrix.\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    },
    {
      "commit": "40dcc0af50f3aa7b28a4a7710cc4db3ae3bf982f",
      "tree": "42d9736d007f22bd1050c64330d896dc80a352f3",
      "parents": [
        "40cc195cfb0c3cb5c2dcec06b47c122b152a55f0"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jul 15 10:25:06 2026 +0200"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jul 15 10:27:36 2026 +0200"
      },
      "message": "init: disable write sequence checking for experimental_verify\n\nDisable write sequence checking for experimental_verify overlap-risk\nworkloads unless explicitly requested, since duplicate overwrites\ncannot be sequence-verified without the full write history.\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    },
    {
      "commit": "40cc195cfb0c3cb5c2dcec06b47c122b152a55f0",
      "tree": "1ee1d5ce2d70f3b92f0fd13a22d4b87863aefaa6",
      "parents": [
        "7f19048b831eeee29e245b84d95a1bb63befd4b8"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Tue Jul 14 13:40:13 2026 +0200"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jul 15 10:16:30 2026 +0200"
      },
      "message": "io_ddir: fix -Wsign-compare in io_ddir_name()\n\nddir is a signed enum fio_ddir while sizeof(name)/sizeof(name[0]) is\nunsigned long, which trips -Werror\u003dsign-compare in downstream builds\n(e.g. the SPDK fio_plugin). Cast the array size to int; the ddir \u003e\u003d 0\nguard still protects the negative enum values.\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    },
    {
      "commit": "7f19048b831eeee29e245b84d95a1bb63befd4b8",
      "tree": "5bdaf68dbe354694711953a1828321baf65d2c03",
      "parents": [
        "179fb9c335020ab6993ace93d4c2de7487f05a09"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Tue Jul 14 13:39:40 2026 +0200"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jul 15 10:16:26 2026 +0200"
      },
      "message": "backend: stop experimental verify based on bytes issued, not completed\n\nIn experimental_verify mode, do_verify() decided whether to stop\nissuing verify reads by comparing td-\u003ebytes_verified against\nverify_bytes. bytes_verified is only updated on completion, so with a\nqueue depth \u003e 1 it lags the issue side. As a result fio kept issuing\nread/verify commands to fill the queue even after the last block that\nwas actually written had already been submitted.\n\nThose extra reads target offsets that were never written (especially\nwith norandommap, where the write phase does not cover every block),\nwhich the verify phase then reads back as zeroes, producing spurious\n\"bad magic header 0\" verify failures.\n\nTrack a new counter, td-\u003everify_bytes_issued, which is incremented at\nissue time for both the write-\u003eread and trim-\u003eread verify conversions,\nand use it for the stop condition. Reset it in reset_io_counters()\nalongside bytes_verified.\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    },
    {
      "commit": "e89f08b5271daace151b4307a679089d5c9f22d2",
      "tree": "b6316220f7491376e640367ede624830f66c9ff1",
      "parents": [
        "67256d4ec503571d37a59226e95ef39dc543cea7"
      ],
      "author": {
        "name": "zbyrne",
        "email": "zbyrne@amd.com",
        "time": "Fri May 08 17:30:11 2026 -0400"
      },
      "committer": {
        "name": "Stephen Bates",
        "email": "sbates@raithlin.com",
        "time": "Mon Jul 13 12:28:07 2026 -0600"
      },
      "message": "examples/doc: add libhipfile example job files and documentation\n\nAdd two example fio job files for the new libhipfile engine:\n  examples/libhipfile-hipfile.fio  - direct GPU I/O via hipFile\n  examples/libhipfile-posix.fio    - POSIX bounce-buffer mode\n\nDocument the libhipfile engine, its gpu_dev_ids and rocm_io options, and\nthe --enable-libhipfile configure flag in both HOWTO.rst and fio.1,\nmirroring the existing libcufile entries.\n\nSigned-off-by: Zach Byrne \u003czbyrne@amd.com\u003e\nSigned-off-by: Stephen Bates \u003csbates@raithlin.com\u003e\n"
    },
    {
      "commit": "67256d4ec503571d37a59226e95ef39dc543cea7",
      "tree": "82962d9dc6a161fa63b0b4da2074113bcb159581",
      "parents": [
        "8e14318d4efe20c3cc8adfba2c912d8205838bda"
      ],
      "author": {
        "name": "zbyrne",
        "email": "zbyrne@amd.com",
        "time": "Fri May 08 16:56:06 2026 -0400"
      },
      "committer": {
        "name": "Stephen Bates",
        "email": "sbates@raithlin.com",
        "time": "Mon Jul 13 12:28:07 2026 -0600"
      },
      "message": "engines/libhipfile: add ROCm hipFile engine\n\nAdd a new fio I/O engine for AMD ROCm hardware using the HIP and hipFile\nAPIs.  The engine implements struct gpuaccel_backend by calling HIP\nfunctions to allocate and manage GPU memory (hipMalloc/hipFree), copy\nbetween VRAM and host buffers (hipMemcpy), and perform direct I/O from\nVRAM via hipFileRead/hipFileWrite.\n\nThe engine is built into the fio binary like libcufile (not as a dynamic\nexternal engine), so the shared gpuaccel symbols resolve at link time.\nconfigure carries the full ROCm include/lib/rpath flags; the Makefile\nstanza stays minimal.  ROCM_PATH defaults to /opt/rocm and can be\noverridden via the environment.\n\nNew options:\n  gpu_dev_ids  - comma-separated list of GPU device IDs to use\n  rocm_io      - select hipfile (direct) or posix (bounce-buffer) I/O mode\n\nSigned-off-by: Zach Byrne \u003czbyrne@amd.com\u003e\nSigned-off-by: Stephen Bates \u003csbates@raithlin.com\u003e\n"
    },
    {
      "commit": "8e14318d4efe20c3cc8adfba2c912d8205838bda",
      "tree": "c1bf3c8051f5c5a522615ce76f71b6b6156f57cb",
      "parents": [
        "9ce0653a2c15cf39d305171c86b5890ee74b6e8c"
      ],
      "author": {
        "name": "zbyrne",
        "email": "zbyrne@amd.com",
        "time": "Fri May 08 15:47:41 2026 -0400"
      },
      "committer": {
        "name": "Stephen Bates",
        "email": "sbates@raithlin.com",
        "time": "Mon Jul 13 12:28:07 2026 -0600"
      },
      "message": "engines/gpuaccel: add per-backend sync flags and backend-scoped state\n\nTwo independent clean-ups to the gpuaccel layer:\n\n * Add sync_after_write_recv, sync_after_verify_copy, and\n   sync_after_verify_read_copy flags to struct gpuaccel_backend.  hipFile\n   requires several extra stream-synchronize calls that cuFile does not;\n   the flags let each backend declare its needs without ifdefs.  libcufile\n   sets all flags to false (no behaviour change).\n\n * Move the static running/initialized state out of gpuaccel.c file scope\n   and into struct gpuaccel_backend so that cuFile and hipFile can coexist\n   in one process without sharing state.  libcufile initialises the new\n   fields (no behaviour change).\n\nSigned-off-by: Zach Byrne \u003czbyrne@amd.com\u003e\nSigned-off-by: Stephen Bates \u003csbates@raithlin.com\u003e\n"
    },
    {
      "commit": "9ce0653a2c15cf39d305171c86b5890ee74b6e8c",
      "tree": "587dbccc4a8a233b2120e82169eba948c6d8c41d",
      "parents": [
        "179fb9c335020ab6993ace93d4c2de7487f05a09"
      ],
      "author": {
        "name": "zbyrne",
        "email": "zbyrne@amd.com",
        "time": "Wed May 06 13:47:00 2026 -0400"
      },
      "committer": {
        "name": "Stephen Bates",
        "email": "sbates@raithlin.com",
        "time": "Mon Jul 13 12:19:30 2026 -0600"
      },
      "message": "engines: refactor libcufile.c into a shared gpuaccel layer\n\nExtract the vendor-neutral orchestration out of the NVIDIA-specific\nlibcufile engine so that a second GPU-accelerator backend (ROCm hipFile)\ncan share it without code duplication.\n\nSteps:\n 1. Extract all CUDA calls from the engine interface into thin wrappers\n    inside libcufile.c, leaving the rest of the engine logic untouched.\n 2. Add a small backend vtable (struct gpuaccel_backend) so the wrappers\n    are reached through a function table rather than directly.\n 3. Rename the now-vendor-neutral orchestration from libcufile_* to\n    gpuaccel_* throughout.\n 4. Move the gpuaccel core into a new engines/gpuaccel.c and gpuaccel.h;\n    libcufile.c retains only the CUDA/cuFile-specific pieces.\n\nSteps 1-4 are intended to be no-functional-change for libcufile: the\ncuFile behaviour is preserved as an identity transform through the vtable.\n\nSigned-off-by: Zach Byrne \u003czbyrne@amd.com\u003e\nSigned-off-by: Stephen Bates \u003csbates@raithlin.com\u003e\n"
    },
    {
      "commit": "179fb9c335020ab6993ace93d4c2de7487f05a09",
      "tree": "eef845b32637c6a1960dab7fb01fc5e9ce359e23",
      "parents": [
        "fd2ed065712697cb218f1894447f5900e4d3e714"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 07 16:22:15 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 07 16:22:15 2026 -0400"
      },
      "message": "parse: use signed format specifier for debug print\n\nSome option values such as the one for \u0027nice\u0027 can be negative. For such\noptions change the debug print format specifier to the one for a signed\nlong long instead of unsigned. This affects FIO_OPT_INT.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "fd2ed065712697cb218f1894447f5900e4d3e714",
      "tree": "5a9c7cf8b6a3b3d7ccdfa0f3766a7281ec12554d",
      "parents": [
        "eb15a0d03fe20d3d3e00507ff95e9f1aedecabdc",
        "079a59018ba8f5474c35510a5878c86ce090d4bf"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 07 15:54:48 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 07 15:54:48 2026 -0400"
      },
      "message": "Merge branch \u0027fix-issue-1657\u0027 of https://github.com/cenhuil/fio\n\n* \u0027fix-issue-1657\u0027 of https://github.com/cenhuil/fio:\n  parse: ignore leading minus sign when splitting options\n"
    },
    {
      "commit": "eb15a0d03fe20d3d3e00507ff95e9f1aedecabdc",
      "tree": "a326b1d290ebc136d89e781f1062dab617b5b9ff",
      "parents": [
        "b0ed309ee6ac7ee3bc75ff05976e31799a2835bc"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 07 10:08:32 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jul 07 10:18:21 2026 -0700"
      },
      "message": "engines/io_uring: set sync trim flag when async trim fails\n\nWhen Fio is running on an older kernel that does not support io_uring\nasync trim it needs to set the FIO_ASYNCIO_SYNC_TRIM flag to make\nsure that the io_u\u0027s issue_time is set by the upper layer.\n\nLink: https://lore.kernel.org/fio/CAOp\u003dCXkW4206EoW0AY-7xzvg+Zrwjjt6DiXfyL-UO8S+njK-Pw@mail.gmail.com\nFixes: 980fb7f2 (\"engines/io_uring: add support for async TRIM\")\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "b0ed309ee6ac7ee3bc75ff05976e31799a2835bc",
      "tree": "a8d8848deb3df18daae1bde3a53f808179421e6b",
      "parents": [
        "ed3e687f27802ae0daa60ae96ae9b798ee1b6511",
        "9763360f9a17421e0e6b81cf885f0711f278bf91"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jul 07 06:41:04 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jul 07 06:41:04 2026 -0600"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:bvanassche/fio\n\n* \u0027master\u0027 of github.com:bvanassche/fio:\n  blktrace: fix error handling in merge_blktrace_iologs\n  ioengines: record all sync io_u completions under DDIR_SYNC in total_io_u\n  io_ddir: add \"syncfs\" to io_ddir_name() array\n"
    },
    {
      "commit": "9763360f9a17421e0e6b81cf885f0711f278bf91",
      "tree": "a8d8848deb3df18daae1bde3a53f808179421e6b",
      "parents": [
        "af511749958d942bebe5511f26c8e6977952e360"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sat Jul 04 15:38:39 2026 -0700"
      },
      "committer": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sat Jul 04 18:38:25 2026 -0700"
      },
      "message": "blktrace: fix error handling in merge_blktrace_iologs\n\nIf setvbuf() fails, also close merge_fp. This patch fixes the following\nCoverity complaint:\n\n*** CID 647237:         Resource leaks  (RESOURCE_LEAK)\n/blktrace.c: 811             in merge_blktrace_iologs()\n805     \tfclose(merge_fp);\n806     err_out_file:\n807     \tfree(merge_buf);\n808     err_param:\n809     \tfree(bcs);\n810\n\u003e\u003e\u003e     CID 647237:         Resource leaks  (RESOURCE_LEAK)\n\u003e\u003e\u003e     Variable \"merge_fp\" going out of scope leaks the storage it points to.\n811     \treturn ret;\n\nFixes: c55d29efc7cb (\"blktrace: fix three bugs in merge_blktrace_iologs path\")\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\n"
    },
    {
      "commit": "af511749958d942bebe5511f26c8e6977952e360",
      "tree": "29d646cb228f3f77bd6999b172c0b7c5a9eebf1d",
      "parents": [
        "62b7000971cb58781827b5cb18e05fb309391b85"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sat Jul 04 15:38:34 2026 -0700"
      },
      "committer": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sat Jul 04 15:51:14 2026 -0700"
      },
      "message": "ioengines: record all sync io_u completions under DDIR_SYNC in total_io_u\n\nWhen queuing or completing synchronous I/O operations\n(`ddir_sync(io_u-\u003eddir)` is true), increment `td-\u003ets.total_io_u[DDIR_SYNC]`\ninstead of `td-\u003ets.total_io_u[io_u-\u003eddir]`.\n\nThe `total_io_u` array is sized by `DDIR_RWDIR_SYNC_CNT` (4 elements: read,\nwrite, trim, sync). Indexing directly with `io_u-\u003eddir` for other\nsynchronous I/O types such as `DDIR_DATASYNC`, `DDIR_SYNC_FILE_RANGE`, or\n`DDIR_SYNCFS` resulted in out-of-bounds array accesses. Aggregating all\nsynchronous I/O completion counts under `DDIR_SYNC` prevents memory\ncorruption and accurately tracks total sync I/O units.\n\nThis patch addresses the following Coverity complaint:\n\n*** CID 647239:         Memory - corruptions  (OVERRUN)\n/backend.c: 314             in fio_syncfs()\n308     \t\tif (fio_open_fs(td, fm)) {\n309     \t\t\tlog_err(\"open %s for syncfs failed\\n\", fm-\u003ebase);\n310     \t\t\terr \u003d -1;\n311     \t\t\tcontinue;\n312     \t\t}\n313\n\u003e\u003e\u003e     CID 647239:         Memory - corruptions  (OVERRUN)\n\u003e\u003e\u003e     Overrunning callee\u0027s array of size 4 by passing argument \"DDIR_SYNCFS\" in call to \"fio_io_sync\".\n314     \t\tif (fio_io_sync(td, fm-\u003ef, DDIR_SYNCFS)) {\n315     \t\t\tlog_err(\"syncfs %s failed\\n\", fm-\u003ebase);\n316     \t\t\terr \u003d -1;\n317     \t\t\tcontinue;\n318     \t\t}\n319\n\nFixes: 7f3ecee2f6dd (\"Track fsync/fdatasync/sync_file_range issue count\")\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\n"
    },
    {
      "commit": "62b7000971cb58781827b5cb18e05fb309391b85",
      "tree": "cc5a930c24ca2235303b17467fb02ba4d52be070",
      "parents": [
        "ed3e687f27802ae0daa60ae96ae9b798ee1b6511"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sat Jul 04 15:38:28 2026 -0700"
      },
      "committer": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sat Jul 04 15:51:10 2026 -0700"
      },
      "message": "io_ddir: add \"syncfs\" to io_ddir_name() array\n\nUpdate the `name` array in `io_ddir_name()` to include `\"syncfs\"`,\ncorresponding to `DDIR_SYNCFS`.\n\nPreviously, `DDIR_SYNCFS` was missing from the lookup table, causing\nstring conversions for `DDIR_WAIT` to return the wrong name due to an\noff-by-one index mismatch.\n\nFixes: 4d3aaa40f6a8 (\"fio: introduce the end_syncfs option\")\nReported-by: Gemini LLM\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\n"
    },
    {
      "commit": "ed3e687f27802ae0daa60ae96ae9b798ee1b6511",
      "tree": "999e7a060495a718688b02949be97536ab500435",
      "parents": [
        "f80c50d9ff50a746cd1a111f1986648963bbf7dd",
        "81f292f91ed17835b1b12d16bc0420d9db6fda44"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Jul 02 08:46:38 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Jul 02 08:46:38 2026 -0600"
      },
      "message": "Merge branch \u0027fix-pending-log-iodepth-assert\u0027 of https://github.com/SAY-5/fio\n\n* \u0027fix-pending-log-iodepth-assert\u0027 of https://github.com/SAY-5/fio:\n  iolog: size pending log larger than iodepth to avoid log assertion\n"
    },
    {
      "commit": "81f292f91ed17835b1b12d16bc0420d9db6fda44",
      "tree": "999e7a060495a718688b02949be97536ab500435",
      "parents": [
        "f80c50d9ff50a746cd1a111f1986648963bbf7dd"
      ],
      "author": {
        "name": "Sai Asish Y",
        "email": "say.apm35@gmail.com",
        "time": "Thu Jul 02 02:41:27 2026 -0700"
      },
      "committer": {
        "name": "Sai Asish Y",
        "email": "say.apm35@gmail.com",
        "time": "Thu Jul 02 02:42:09 2026 -0700"
      },
      "message": "iolog: size pending log larger than iodepth to avoid log assertion\n\nWhen per-unit bandwidth/latency logging is active with inline IO\nsubmission, samples are buffered in iolog-\u003epending until regrow_logs()\nruns. Up to iodepth in-flight IOs can complete and log a sample before\nthat happens, and get_cur_log() asserts there is always room for one\nmore (nr_samples \u003c max_samples), so the pending buffer must hold more\nthan iodepth entries. It was sized with roundup_pow2(iodepth), which\nreturns iodepth unchanged for power-of-2 depths (1024, 2048, ...),\nleaving no spare slot. That overflows the buffer and trips the\nassertion in get_cur_log(), or corrupts the heap at larger depths.\n\nRoute iodepth \u003e\u003d DEF_LOG_ENTRIES through roundup_pow2(iodepth + 1) so\nthe buffer is always strictly larger than iodepth. This also covers\niodepth \u003d\u003d DEF_LOG_ENTRIES, which previously fell through to the 1024\ndefault and hit the same problem.\n\nSigned-off-by: Sai Asish Y \u003csay.apm35@gmail.com\u003e\n"
    },
    {
      "commit": "f80c50d9ff50a746cd1a111f1986648963bbf7dd",
      "tree": "104c46d1be0caec1d043388f804a4b3c861bdd58",
      "parents": [
        "855d7e24e4188a357a150a7569c3150267106630",
        "954d049ab5e21ef388a6bfa1410331be7ab39edf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jun 30 12:23:27 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jun 30 12:23:27 2026 -0600"
      },
      "message": "Merge branch \u0027fix-issue-1542\u0027 of https://github.com/cenhuil/fio\n\n* \u0027fix-issue-1542\u0027 of https://github.com/cenhuil/fio:\n  server: reap child processes on SIGINT to prevent assertion crash\n"
    },
    {
      "commit": "855d7e24e4188a357a150a7569c3150267106630",
      "tree": "a526b2039ad5872fda49dc4f3acaefa6801095e0",
      "parents": [
        "2f920a4f891779b247b501c9d73b09fbe26f0b6e"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jun 26 12:35:04 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jun 26 12:35:04 2026 -0400"
      },
      "message": "t/run-fio-tests: add t/sequence.py\n\nAdd the test script for the new sequence random distribution to our test\nharness. Also set the script file\u0027s executable permission bit to enable\nit to run.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "2f920a4f891779b247b501c9d73b09fbe26f0b6e",
      "tree": "58efa0c3d21875015d25c08eb963150bc1e82fa4",
      "parents": [
        "360e4d6ae2fafcb17438df45499e514406f4d746",
        "1629fb0f7873e59fc606cdcd7a32eeec749373ee"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jun 26 12:32:23 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Fri Jun 26 12:32:23 2026 -0400"
      },
      "message": "Merge branch \u0027rand_dist\u0027 of https://github.com/vadlakondaswetha/fio\n\n* \u0027rand_dist\u0027 of https://github.com/vadlakondaswetha/fio:\n  Implement Sequence Distribution feature with Striding\n"
    },
    {
      "commit": "1629fb0f7873e59fc606cdcd7a32eeec749373ee",
      "tree": "f782ab1edd2591da080f7ff878d04fd3f476f899",
      "parents": [
        "72156dca3d41df7d05ea4e5a4e59623c2d393a92"
      ],
      "author": {
        "name": "vadlakondaswetha",
        "email": "swethav0411@gmail.com",
        "time": "Thu May 21 13:07:52 2026 +0000"
      },
      "committer": {
        "name": "vadlakondaswetha",
        "email": "swethav0411@gmail.com",
        "time": "Fri Jun 26 07:47:05 2026 +0000"
      },
      "message": "Implement Sequence Distribution feature with Striding\n\nThis change extends fio to support a new random distribution pattern\ncalled `sequence`. It allows users to specify a fixed repeating\nsequence of block indices for I/O operations using the syntax\n`random_distribution\u003dsequence:2,0,1`.\n\nAdditionally, it introduces the `random_sequence_stride` boolean option.\nWhen enabled (1), the sequence progresses through the file as a Strided\nBlock Group pattern (e.g., 2,0,1, 5,3,4, 8,6,7...), automatically\nadvancing the base block index by the sequence length after each cycle.\n\nIntegration tests are added in `t/sequence.py`.\n\nSigned-off-by: Swetha Vadlakonda \u003cswethv@google.com\u003e\n"
    },
    {
      "commit": "360e4d6ae2fafcb17438df45499e514406f4d746",
      "tree": "33dd65ff04c0edd7ea106f2d4173632e16e77704",
      "parents": [
        "8baa2b4e25abcac50d32676e07b99aa401825756",
        "ebf4b46d29ed9826fbeffa271ce0aad4a59f19af"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jun 25 12:54:29 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jun 25 12:54:29 2026 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of https://github.com/Krien/fio\n\n* \u0027master\u0027 of https://github.com/Krien/fio:\n  io_uring: add support for zone appends when using ZBD\n  io_uring: add fio_ioring_cmd_finish_zone when using uring_cmd\n"
    },
    {
      "commit": "8baa2b4e25abcac50d32676e07b99aa401825756",
      "tree": "57738707849e241f00e5e0b6015a43f3fd157eb1",
      "parents": [
        "bbbe6c4a9b1dc3be2c863ebcd4bdb05c99ed83ba"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jun 25 12:13:04 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jun 25 12:13:04 2026 -0400"
      },
      "message": "ci: split ZBD tests across configurations\n\nInstead of running a single configuration for all of the sections run by\nt/zbd/run-tests-against-nuillb, split the 25 sections across five\ndifferent configurations. This should shorten the test time from nearly\n2.5 hours to 30min or less.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "bbbe6c4a9b1dc3be2c863ebcd4bdb05c99ed83ba",
      "tree": "e0f7f0739d911b455a12e515d50c749343250a6f",
      "parents": [
        "d72bcf71534b5ac82359e3b987ff109b0de57af0"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jun 25 11:05:40 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Thu Jun 25 11:05:40 2026 -0400"
      },
      "message": "ci: split 16-bit Guard PI QEMU tests\n\nInstead of running one long configuration with all the 16-bit Guard PI\nLBA formats, run two sets of tests in parallel. One set will have LBAFs\nwith 512B data size and the other set will have LBAFs with 4K data size.\nThese will run in parallel.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "ebf4b46d29ed9826fbeffa271ce0aad4a59f19af",
      "tree": "f46797fe4aca783a99da1a52653931b6dfb36471",
      "parents": [
        "77cdf892cbed60459c38abcd93e9a4d9b0cfc6b6"
      ],
      "author": {
        "name": "Krijn Doekemeijer",
        "email": "krijn.doekemeijer@wdc.com",
        "time": "Wed Jun 03 14:46:17 2026 +0000"
      },
      "committer": {
        "name": "Krijn Doekemeijer",
        "email": "krijn.doekemeijer@wdc.com",
        "time": "Thu Jun 25 08:31:02 2026 +0000"
      },
      "message": "io_uring: add support for zone appends when using ZBD\n\nAdd a new write mode \u0027zone_append\u0027 for io_uring_cmd that uses zone_appends instead of\nwrites when ZBD is enabled. Zone appends are issued to the start of\nzones.\n\nSigned-off-by: Krijn Doekemeijer \u003ckrijn.doekemeijer@wdc.com\u003e\n"
    },
    {
      "commit": "77cdf892cbed60459c38abcd93e9a4d9b0cfc6b6",
      "tree": "fb7c86f23a6feb473afd4cd429ed279d135bc333",
      "parents": [
        "d72bcf71534b5ac82359e3b987ff109b0de57af0"
      ],
      "author": {
        "name": "Krijn Doekemeijer",
        "email": "krijn.doekemeijer@wdc.com",
        "time": "Wed Jun 03 14:44:45 2026 +0000"
      },
      "committer": {
        "name": "Krijn Doekemeijer",
        "email": "krijn.doekemeijer@wdc.com",
        "time": "Thu Jun 25 08:12:29 2026 +0000"
      },
      "message": "io_uring: add fio_ioring_cmd_finish_zone when using uring_cmd\n\nWhen using uring_cmd use fio_ioring_cmd_finish_zone instead of the\nfinish command from blkzone, which is supposed to be used with block\ndevices.\n\nSigned-off-by: Krijn Doekemeijer \u003ckrijn.doekemeijer@wdc.com\u003e\n"
    },
    {
      "commit": "079a59018ba8f5474c35510a5878c86ce090d4bf",
      "tree": "33d37f4d08e3038c3ffdd4fbd28c55f265405e3b",
      "parents": [
        "fb5b6ae8913be8032beb6cbfe0a4772c74d78cb2"
      ],
      "author": {
        "name": "Huilin Cen",
        "email": "cenhuilin@kylinos.cn",
        "time": "Wed Jun 24 17:14:36 2026 +0800"
      },
      "committer": {
        "name": "Huilin Cen",
        "email": "cenhuilin@kylinos.cn",
        "time": "Thu Jun 25 08:54:02 2026 +0800"
      },
      "message": "parse: ignore leading minus sign when splitting options\n\nWhen parsing an option like --nice\u003d-20, the hyphen is incorrectly\nidentified as a delimiter, splitting the value into two parts: an\nempty string and \u002720\u0027. This results in a bogus out-of-range warning:\n\u0027nice: max value out of range: 20 (19 max)\u0027.\n\nThis commit fixes the issue by ignoring the hyphen if it appears as\nthe very first character, correctly treating it as a negative sign\nrather than an option delimiter.\n\nFixes #1657\n\nSigned-off-by: Huilin Cen \u003ccenhuilin@kylinos.cn\u003e\n"
    },
    {
      "commit": "954d049ab5e21ef388a6bfa1410331be7ab39edf",
      "tree": "4a63552ed5f0895b15692bd8510f3fb63ddffb1e",
      "parents": [
        "fb5b6ae8913be8032beb6cbfe0a4772c74d78cb2"
      ],
      "author": {
        "name": "Huilin Cen",
        "email": "cenhuilin@kylinos.cn",
        "time": "Wed Jun 17 14:53:31 2026 +0800"
      },
      "committer": {
        "name": "Huilin Cen",
        "email": "cenhuilin@kylinos.cn",
        "time": "Thu Jun 25 08:54:00 2026 +0800"
      },
      "message": "server: reap child processes on SIGINT to prevent assertion crash\n\nWhen running fio --server and sending SIGINT to the main server\nprocess, the server gracefully breaks out of its accept_loop but\nfails to reap child connection handlers and job processes. This\nresults in the main process destroying shared memory semaphores\nwhile child processes are still running, leading to an assertion\nfailure:\nfio: fio_sem.c:151: fio_sem_down: Assertion \u0027sem-\u003emagic \u003d\u003d\nFIO_SEM_MAGIC\u0027 failed.\n\nThis commit resolves the issue by properly capturing SIGTERM in the\nserver handlers, and gracefully sending SIGTERM to and waiting for\nall children before the main server exits.\n\nFixes #1542\n\nSigned-off-by: Huilin Cen \u003ccenhuilin@kylinos.cn\u003e\n"
    },
    {
      "commit": "d72bcf71534b5ac82359e3b987ff109b0de57af0",
      "tree": "4e5eb341fd90e94c37c98e1791acf1c53c17b83a",
      "parents": [
        "a77cf8f741f4cb3f5fce2738d171af4e3fc47e32"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 21:18:01 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:25:19 2026 -0400"
      },
      "message": "t/io_uring_cmd: better default for fio executable\n\nUse the location of this script to find the Fio executable to use for\ntesting if none is supplied.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "a77cf8f741f4cb3f5fce2738d171af4e3fc47e32",
      "tree": "1e3d6f09e87cea19564608e5d0e346ed1d4df77d",
      "parents": [
        "4536e5fc9c659f1b535e1abbfd8392a9a0a25972"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 21:17:29 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:25:19 2026 -0400"
      },
      "message": "t/io_uring_cmd: add a writefua/readfua test\n\nAdd a test case that sets the writefua and readfua flags.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "4536e5fc9c659f1b535e1abbfd8392a9a0a25972",
      "tree": "82b88037f4dec476da29f591f9f0b1a0adc95fe2",
      "parents": [
        "eccc3af077aa394bfe2049aa32f71014c5f03969"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 21:16:09 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:22:23 2026 -0400"
      },
      "message": "t/io_uring_cmd: support more cmd_types\n\nAdd `cmd_type` as a parameter so that we can run with `cmd_type\u003dbsg`.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "eccc3af077aa394bfe2049aa32f71014c5f03969",
      "tree": "e35e0d54bd9c0e5d30168d527d481edc0090b0a0",
      "parents": [
        "7d34d164825554235b2b5a78d564b0f7e9517a8b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 21:12:07 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:22:23 2026 -0400"
      },
      "message": "t/io_uring_cmd: rename from t/nvmept.py\n\nRename t/nvmept.py to t/io_uring_cmd.py since we can use this script to\ntest ioengine\u003dio_uring_cmd and cmd_type\u003d{nvme,bsg}.\n\nAlso change some of the strings inside the script to reflect the new\nname.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "7d34d164825554235b2b5a78d564b0f7e9517a8b",
      "tree": "7424f480f2e90f4ba7ef18888e84a61d9e8b69e4",
      "parents": [
        "bdb1265ffa7408f42db3d7534daefe57eea4df94"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:13:41 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:15:52 2026 -0400"
      },
      "message": "engines/io_uring: add missing curly braces\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "bdb1265ffa7408f42db3d7534daefe57eea4df94",
      "tree": "ae10ab83e127c8c75b50fff95ea5bf8be1a76c0c",
      "parents": [
        "2c69e8e9b67c0e8967cb1b9e67a74ef55ef9d027",
        "d77ed2b935b30a45e5ee39dc16f99051a41bbe1d"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:10:54 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 24 13:10:54 2026 -0400"
      },
      "message": "Merge branch \u0027upstream-io_uring-bsg\u0027 of https://github.com/ljw8161/fio\n\n* \u0027upstream-io_uring-bsg\u0027 of https://github.com/ljw8161/fio:\n  engines/io_uring: Add bsg support for io_uring_cmd engine\n  engines/sg: extract BE accessor helpers into shared sg.h\n  engines/io_uring: Separate NVMe-specific logic\n"
    },
    {
      "commit": "d77ed2b935b30a45e5ee39dc16f99051a41bbe1d",
      "tree": "ae10ab83e127c8c75b50fff95ea5bf8be1a76c0c",
      "parents": [
        "366c41d5adf68d33ce5fa9419d387840cb68086a"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Wed May 13 22:38:56 2026 +0900"
      },
      "committer": {
        "name": "Kyoungrul Kim",
        "email": "k831.kim@samsung.com",
        "time": "Wed Jun 24 11:01:01 2026 +0900"
      },
      "message": "engines/io_uring: Add bsg support for io_uring_cmd engine\n\nExtend io_uring_cmd engine to support SCSI commands via bsg (Block SCSI\nGeneric) interface. Previously, io_uring_cmd engine only supported NVMe\ndeivces through cmd_type\u003dnvme.\n\nThis patch introduces:\n- NEW cmd_type option \"bsg\" to select bsg_uring_cmd interface\n- BSG-specific command preparation and completion handling\n- SCSI CDB (Command Descriptor Block) construction\n- Read Capacity support for device size detection\n- Proper error reporting with SCSI status and host status separation\n\nCurrently, the following basic fio --rw\u003d are supported:\n- read: READ(10)\n- write: WRITE(10)\n- trim: UNMAP\n- fsync: SYNC CACHE(10)\n\nExample:\n--filename\u003d/dev/bsg/0\\:0\\:0\\:0 --ioengine\u003dio_uring_cmd --cmd_type\u003dbsg\n\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\nSigned-off-by: Kyoungrul Kim \u003ck831.kim@samsung.com\u003e\n"
    },
    {
      "commit": "366c41d5adf68d33ce5fa9419d387840cb68086a",
      "tree": "c406b3f647855fce6ab7113dd75cf12fd580ed78",
      "parents": [
        "97de7130fbeb969a9c1be8a89e39a30b2943387d"
      ],
      "author": {
        "name": "Kyoungrul Kim",
        "email": "k831.kim@samsung.com",
        "time": "Wed Jun 17 09:44:24 2026 +0900"
      },
      "committer": {
        "name": "Kyoungrul Kim",
        "email": "k831.kim@samsung.com",
        "time": "Wed Jun 24 11:01:01 2026 +0900"
      },
      "message": "engines/sg: extract BE accessor helpers into shared sg.h\n\nThe six static inline byte-order helpers (sgio_get/set_be16/32/64)\nwere defined privately inside sg.c, making them inaccessible to other\nengines that also need to construct or parse SCSI CDBs.\n\nMove them into a new engines/sg.h so that any engine speaking SCSI can\ninclude the header directly rather than reimplementing the same\nbyte-swap wrappers independently.  sg.c gains an include of sg.h in\nplace of the now-removed definitions; no behaviour is changed.\n\nSigned-off-by: Kyoungrul Kim \u003ck831.kim@samsung.com\u003e\n"
    },
    {
      "commit": "97de7130fbeb969a9c1be8a89e39a30b2943387d",
      "tree": "2f630ba05edbb9c197d26c16a2afc28cee9430e6",
      "parents": [
        "2c69e8e9b67c0e8967cb1b9e67a74ef55ef9d027"
      ],
      "author": {
        "name": "Jungwon Lee",
        "email": "jjung1.lee@samsung.com",
        "time": "Wed May 13 16:42:22 2026 +0900"
      },
      "committer": {
        "name": "Kyoungrul Kim",
        "email": "k831.kim@samsung.com",
        "time": "Wed Jun 24 11:01:01 2026 +0900"
      },
      "message": "engines/io_uring: Separate NVMe-specific logic\n\nPreviously, io_uring_cmd engine was tightly coupled with NVMe command\nstructures, making it difficult to use with other device types.\n\nThis patch supports separated NVMe-specific logic from io_uring_cmd\nengine to enable support for other device types such as bsg next to this\npatch.\n\nNote that this patch is a prep patch for the followings with no\nfunctional changes.\n\nSigned-off-by: Jungwon Lee \u003cjjung1.lee@samsung.com\u003e\nSigned-off-by: Kyoungrul Kim \u003ck831.kim@samsung.com\u003e\n"
    },
    {
      "commit": "2c69e8e9b67c0e8967cb1b9e67a74ef55ef9d027",
      "tree": "544c763eb919b77fa6386aa46785c307070472ed",
      "parents": [
        "706fa690513c6e790887455e31ce17d1a010f09a"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 16:36:52 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 16:36:52 2026 -0400"
      },
      "message": "test: run QEMU tests on push and pull request\n\nSome of the QEMU tests run for a long time (2hrs for zbd, 1hr for 16-bit\nGuard PI), so we have only been running them nightly on the tip of the\nmaster branch.\n\nThis patch changes the workflow to run these tests on every push and for\nevery pull request. Even thought it will take longer to get a clean bill\nof health I think it\u0027s worth it to automate these tests and detect any\nissues sooner.\n\nAn issue with the io_uring_cmd bsg pull request would have been found\nearlier if we automatically ran these tests.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "706fa690513c6e790887455e31ce17d1a010f09a",
      "tree": "07b581479c70542c11255dbb77b592c3257f8f03",
      "parents": [
        "fb5b6ae8913be8032beb6cbfe0a4772c74d78cb2"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 16:33:08 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Tue Jun 23 16:33:08 2026 -0400"
      },
      "message": "t/nvmept_pi: improve default fio executable\n\nUse the location of this script to find the Fio executable when none is\nsupplied.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "fb5b6ae8913be8032beb6cbfe0a4772c74d78cb2",
      "tree": "6a618d2b3a3e33d0651b261f374c035814b94f4e",
      "parents": [
        "19a6a29c6ba25ceb2caa89f1a601cc3a08ab981a",
        "c0e4b6ed221d8756276fae43eb879481b05fe62f"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Jun 15 11:29:22 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Mon Jun 15 11:29:22 2026 -0400"
      },
      "message": "Merge branch \u0027pr-speed-up-norandommap-read-bw\u0027 of https://github.com/malikoyv/fio\n\n* \u0027pr-speed-up-norandommap-read-bw\u0027 of https://github.com/malikoyv/fio:\n  iolog: fix io_piece leak on overlapping in-flight writes\n  verify: fix verify starvation with norandommap\n"
    },
    {
      "commit": "19a6a29c6ba25ceb2caa89f1a601cc3a08ab981a",
      "tree": "ea668646fc5c6333408b0221b9078ea38f1ffc31",
      "parents": [
        "8c3d6065d411211965d09467c651daee88123f2d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Jun 13 06:32:38 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Jun 13 06:32:38 2026 -0600"
      },
      "message": "engines/io_uring: code style tweak\n\nNo need for braces for a single line \u0027if\u0027 statement.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8c3d6065d411211965d09467c651daee88123f2d",
      "tree": "ff22911e4695260fd8ed4bb5cac574e0ade8b211",
      "parents": [
        "d8380abcb6756d7356961ac496904acc12181bf7",
        "cdfab6830ebb55e8a6b7272b45550e3b12fcd0c1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Jun 13 06:31:42 2026 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Jun 13 06:31:42 2026 -0600"
      },
      "message": "Merge branch \u0027opt/register-ring-fd\u0027 of https://github.com/calebsander/fio\n\n* \u0027opt/register-ring-fd\u0027 of https://github.com/calebsander/fio:\n  io_uring: try to register ring fd\n  io_uring: consolidate fio_ioring{,_cmd}_post_init()\n  io_uring: consolidate fio_ioring{,_cmd}_queue_init()\n"
    },
    {
      "commit": "cdfab6830ebb55e8a6b7272b45550e3b12fcd0c1",
      "tree": "ff22911e4695260fd8ed4bb5cac574e0ade8b211",
      "parents": [
        "1dd13a5105a62549cbf7f0ff3f8e6e7874c4716b"
      ],
      "author": {
        "name": "Caleb Sander Mateos",
        "email": "csander@purestorage.com",
        "time": "Fri Jun 12 23:04:14 2026 -0600"
      },
      "committer": {
        "name": "Caleb Sander Mateos",
        "email": "csander@purestorage.com",
        "time": "Fri Jun 12 23:14:37 2026 -0600"
      },
      "message": "io_uring: try to register ring fd\n\nTry to issue IORING_REGISTER_RING_FDS in io_uring queue initialization\nto register the io_uring\u0027s own file descriptor. Use the registered ring\nfd with IORING_ENTER_REGISTERED_RING for all io_uring_enter() syscalls.\nThis improves performance by avoiding the io_uring file descriptor\nreference-counting overhead on each io_uring_enter() syscall.\nIORING_REGISTER_RING_FDS isn\u0027t supported on older kernels, so fall back\nto the existing behavior of passing io_uring_enter() a raw fd if the\nregistration fails.\n\nSigned-off-by: Caleb Sander Mateos \u003ccsander@purestorage.com\u003e\n"
    },
    {
      "commit": "1dd13a5105a62549cbf7f0ff3f8e6e7874c4716b",
      "tree": "30eee892e7bf4744b1139bcefe2870ad69d214b3",
      "parents": [
        "0c7ce679d32bb00ae4e2c7458ca325097ca2df7f"
      ],
      "author": {
        "name": "Caleb Sander Mateos",
        "email": "csander@purestorage.com",
        "time": "Fri Jun 12 22:31:26 2026 -0600"
      },
      "committer": {
        "name": "Caleb Sander Mateos",
        "email": "csander@purestorage.com",
        "time": "Fri Jun 12 22:35:49 2026 -0600"
      },
      "message": "io_uring: consolidate fio_ioring{,_cmd}_post_init()\n\nfio_ioring_cmd_post_init() is identical to fio_ioring_post_init() except\nfor the additional handling of 128-byte SQEs. Check for is_uring_cmd_eng\nin fio_ioring_post_init() and adjust the SQE size accordingly. Replace\nfio_ioring_cmd_post_init() with fio_ioring_post_init().\n\nSigned-off-by: Caleb Sander Mateos \u003ccsander@purestorage.com\u003e\n"
    },
    {
      "commit": "0c7ce679d32bb00ae4e2c7458ca325097ca2df7f",
      "tree": "bfaef901ac9c0167ca8283b5d1b508eca18f4ac3",
      "parents": [
        "d8380abcb6756d7356961ac496904acc12181bf7"
      ],
      "author": {
        "name": "Caleb Sander Mateos",
        "email": "csander@purestorage.com",
        "time": "Fri Jun 12 22:24:30 2026 -0600"
      },
      "committer": {
        "name": "Caleb Sander Mateos",
        "email": "csander@purestorage.com",
        "time": "Fri Jun 12 22:26:47 2026 -0600"
      },
      "message": "io_uring: consolidate fio_ioring{,_cmd}_queue_init()\n\nfio_ioring_cmd_queue_init() is identical to fio_ioring_queue_init()\nexcept for the additional IORING_SETUP_SQE128 and IORING_SETUP_CQE32\nflags. Check for is_uring_cmd_eng in fio_ioring_queue_init() and set\nthese flags accordingly. Replace fio_ioring_cmd_queue_init() with\nfio_ioring_queue_init().\n\nSigned-off-by: Caleb Sander Mateos \u003ccsander@purestorage.com\u003e\n"
    },
    {
      "commit": "d8380abcb6756d7356961ac496904acc12181bf7",
      "tree": "5c7fdbae051df8b9423b976ace541c8adcb88a01",
      "parents": [
        "bd11387aba55e9dc58c0127437c8c6982e6ac32f",
        "3346121eae796f9e2b710b3442031d88f09ab03b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 20:31:50 2026 -0400"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 20:31:50 2026 -0400"
      },
      "message": "Merge branch \u0027fix/trim-with-do-verify-0\u0027 of https://github.com/minwooim/fio\n\n* \u0027fix/trim-with-do-verify-0\u0027 of https://github.com/minwooim/fio:\n  backend: log trim @io_u to io_hist even `do_verify\u003d0`\n"
    },
    {
      "commit": "bd11387aba55e9dc58c0127437c8c6982e6ac32f",
      "tree": "56ccf868c6e732546dad83d67e9285d11b7ae4ef",
      "parents": [
        "60274d9612bec4823216e888ead59ffb72a41b26"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 22:28:50 2026 +0000"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 22:28:50 2026 +0000"
      },
      "message": "ci: skip new write uncorrectable tests on QEMU\n\nWe run nightly tests on QEMU with an emulated NVMe device. QEMU NVMe\ndevices do not support the write uncorrectable command. Skip test cases\nsubmitting write uncorrectable commands when runnight nightly GitHub\nActions QEMU tests.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "60274d9612bec4823216e888ead59ffb72a41b26",
      "tree": "40e2dcf5960e945fdd5d54c3b38df6756601af39",
      "parents": [
        "24520efc41627b1889918959490deebc49f07968"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 14:43:18 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 14:45:03 2026 -0700"
      },
      "message": "t/nvmept_write_mode: improve formatting\n\npylint complained about formatting. Fix two issues.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "24520efc41627b1889918959490deebc49f07968",
      "tree": "4ce0b9d59a2f1c2e14a0063223dbb67884068581",
      "parents": [
        "c06c2f3d9b33bfdc7b6e1f0c4834a4d3efd1b44c"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 14:40:47 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 14:45:03 2026 -0700"
      },
      "message": "t/nvmept_write_mode: check verify job\n\nRun verify jobs with write zeroes and write uncorrectable commands.\nCheck to make sure that the number of write zeroes verify and read\nerrors matches the number of write zeroes and write uncorrectable\ncommands issued.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "c06c2f3d9b33bfdc7b6e1f0c4834a4d3efd1b44c",
      "tree": "700928f8b99821aae1ac03b3a556c39d1f41e43a",
      "parents": [
        "b2c04305de8c48c9ea9bb49bc937d6dcd333977b"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 10:24:06 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 14:45:03 2026 -0700"
      },
      "message": "t/nvmept_write_mode: check write mode splits\n\nCount the commands actually submitted to make sure that the actual\ndistribution of different write commands is close to what was specified.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "b2c04305de8c48c9ea9bb49bc937d6dcd333977b",
      "tree": "b9aaa4ecf3673bf1286f70198195d714d5270ef2",
      "parents": [
        "5549d6a50a49e359503d89a82eb87d07fc3dd7de"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 09:22:06 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 13:47:08 2026 -0700"
      },
      "message": "verify: debug print for verifying write zeroes\n\nTo facilitate testing, add a debug print when verifying an offset that\nhas received a write zeroes command.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "5549d6a50a49e359503d89a82eb87d07fc3dd7de",
      "tree": "f896c1cddfd8a8877a2410255a56f5e66182195d",
      "parents": [
        "e103dce9f0493aa7a29aa586c0b596f19123a29c"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 09:19:30 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 13:47:08 2026 -0700"
      },
      "message": "engines/io_uring_cmd: debug print for write mode\n\nTo make testing easier, add a debug print displaying which opcode was\nchosen when write mode is randomly selected.\n\nSigned-off-by: Vincent Fu \u003cvincent.fu@samsung.com\u003e\n"
    },
    {
      "commit": "e103dce9f0493aa7a29aa586c0b596f19123a29c",
      "tree": "557a8f35804ec29b399e083237a304d0dfe8e8dc",
      "parents": [
        "f055bacb90990b96fe9940579b3f7eda3515679f",
        "658100403e6e69b2e479423c8bded167917a6fd5"
      ],
      "author": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 11:54:38 2026 -0700"
      },
      "committer": {
        "name": "Vincent Fu",
        "email": "vincent.fu@samsung.com",
        "time": "Wed Jun 10 11:54:38 2026 -0700"
      },
      "message": "Merge branch \u0027io_uring/multiple-write-modes\u0027 of https://github.com/minwooim/fio\n\n* \u0027io_uring/multiple-write-modes\u0027 of https://github.com/minwooim/fio:\n  t/nvmept_write_mode: add multiple write_mode tests\n  io_u: add zeroed, errored flags to @io_u for verify\n  io_uring_cmd: support mixed write_mode with ratio\n"
    },
    {
      "commit": "c0e4b6ed221d8756276fae43eb879481b05fe62f",
      "tree": "8ffe1758eb416a9eebdee495b68d75ac8a96192b",
      "parents": [
        "94cc6426e62683ebb9f1f2e424dc5d7dc445781e"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jun 10 09:26:05 2026 +0200"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jun 10 09:26:05 2026 +0200"
      },
      "message": "iolog: fix io_piece leak on overlapping in-flight writes\n\nWhen an in-flight io_piece is evicted from the RB tree due to an\noverlapping write in log_io_piece(), the entry cannot be freed\nimmediately. However, the IP_F_ONRB flag was not cleared on eviction.\nOn IO completion, the entry still appeared to belong to the tree, so\nit was never freed.\n\nClear IP_F_ONRB when evicting an in-flight entry from the tree. On IO\ncompletion, detect the orphaned io_piece (neither IP_F_ONRB nor\nIP_F_ONLIST set) and free it.\n\nThis leak only occurs with norandommap or softrandommap where\nfio_offset_overlap_risk() is true, causing io_pieces to be stored in\nthe RB tree with overlap detection.\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    },
    {
      "commit": "94cc6426e62683ebb9f1f2e424dc5d7dc445781e",
      "tree": "82cd2ba93ed6d0042b56c3981f1136a74de03b73",
      "parents": [
        "cf144e06b4f98492f6ca8a17157bcf284b3f64a4"
      ],
      "author": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jun 10 09:25:41 2026 +0200"
      },
      "committer": {
        "name": "Yehor Malikov",
        "email": "Yehor.Malikov@solidigm.com",
        "time": "Wed Jun 10 09:25:41 2026 +0200"
      },
      "message": "verify: fix verify starvation with norandommap\n\nWhen norandommap is set, io_pieces are stored in an RB tree sorted by\noffset. get_next_verify() only checked rb_first() for a completed\nentry. If the lowest-offset IO was still in-flight, it returned\n\"nothing\" even though completed entries existed at higher offsets. This\nstarved verification reads during verify_backlog processing, causing\nsevere read/write bandwidth asymmetry (e.g. 40 MiB/s read vs 700 MiB/s\nwrite) and unbounded io_piece accumulation in the tree.\n\nFix this by walking the tree with rb_next() to find the first completed\nentry instead of giving up at rb_first().\n\nThis does not affect the linked-list path used when norandommap is not\nset, since list ordering matches submission order.\n\nSigned-off-by: Yehor Malikov \u003cYehor.Malikov@solidigm.com\u003e\n"
    }
  ],
  "next": "f055bacb90990b96fe9940579b3f7eda3515679f"
}
