)]}'
{
  "commit": "eb8dd984881241bd206b0503a3bc2627f7ad0d09",
  "tree": "a0eea4c07b5dc6b948b495b3ced22987833977df",
  "parents": [
    "5dfc30a27303af1185e65d10890fdb35117bb3eb"
  ],
  "author": {
    "name": "Maoyi Xie",
    "email": "maoyi.xie@ntu.edu.sg",
    "time": "Wed May 06 21:59:35 2026 +0800"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "axboe@kernel.dk",
    "time": "Thu May 07 10:43:09 2026 -0600"
  },
  "message": "test: add timens-abs-timer regression test\n\nAdd a regression test that exercises the two ABS timer paths in\nio_uring with the submitter inside a CLONE_NEWTIME time namespace\nthat has a -10s monotonic offset:\n\n  - IORING_OP_TIMEOUT with IORING_TIMEOUT_ABS, parsed via\n    io_parse_user_time() in io_uring/timeout.c.\n  - io_uring_enter with IORING_ENTER_ABS_TIMER, parsed inline in\n    io_cqring_wait() in io_uring/wait.c.\n\nThe test forks once to enter the new userns, sets up uid_map\nand gid_map for unprivileged root, writes the -10s monotonic\noffset to /proc/self/timens_offsets, then forks again. The\ngrandchild is the first process actually inside the new time\nnamespace (unshare(CLONE_NEWTIME) does not move the caller in,\nonly its future children). On both ABS timer paths the\ngrandchild submits an absolute deadline of now + 1s and asserts\nthe call returns after at least 0.9s.\n\nThe test fails on a kernel without commits 9cc6bac1bebf\n(\"io_uring/timeout: honour caller\u0027s time namespace for\nIORING_TIMEOUT_ABS\") and 45d2b37a37ab (\"io_uring/wait: honour\ncaller\u0027s time namespace for IORING_ENTER_ABS_TIMER\"), where\nthe deadline is interpreted in host view and the timer fires\nafter ~1ms.\n\nThe test is skipped if the kernel lacks CLONE_NEWTIME support\nor the caller cannot create an unprivileged user namespace.\n\nSigned-off-by: Maoyi Xie \u003cmaoyi.xie@ntu.edu.sg\u003e\nLink: https://patch.msgid.link/20260506135935.2420124-1-maoyixie.tju@gmail.com\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6a79a021b447c2d5ed8cada8df1cfba56c7cdfc6",
      "old_mode": 33188,
      "old_path": "test/Makefile",
      "new_id": "13841a92a76ac6fbf5cbfbd7365e924dd89e5f08",
      "new_mode": 33188,
      "new_path": "test/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cd5471b5dbd57220925894be01af2213e4b1e63f",
      "new_mode": 33188,
      "new_path": "test/timens-abs-timer.c"
    }
  ]
}
