)]}'
{
  "commit": "7be835694daebbb4adffbc461519081aa0cf28e1",
  "tree": "4f9903b5a99814958e317bf070d77a3d08da902f",
  "parents": [
    "99dc422335d8b2bd4d105797241d3e715bae90e9"
  ],
  "author": {
    "name": "Yu Kuai",
    "email": "yukuai3@huawei.com",
    "time": "Thu May 09 20:37:17 2024 +0800"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "axboe@kernel.dk",
    "time": "Thu May 09 07:59:44 2024 -0600"
  },
  "message": "block: fix that util can be greater than 100%\n\nutil means the percentage that disk has IO, and theoretically it should\nnot be greater than 100%. However, there is a gap for rq-based disk:\n\nio_ticks will be updated when rq is allocated, however, before such rq\ndispatch to driver, it will not be account as inflight from\nblk_mq_start_request() hence diskstats_show()/part_stat_show() will not\nupdate io_ticks. For example:\n\n1) at t0, issue a new IO, rq is allocated, and blk_account_io_start()\nupdate io_ticks;\n\n2) something is wrong with drivers, and the rq can\u0027t be dispatched;\n\n3) at t0 + 10s, drivers recovers and rq is dispatched and done, io_ticks\nis updated;\n\nThen if user is using \"iostat 1\" to monitor \"util\", between t0 - t0+9s,\nutil will be zero, and between t0+9s - t0+10s, util will be 1000%.\n\nFix this problem by updating io_ticks from diskstats_show() and\npart_stat_show() if there are rq allocated.\n\nSigned-off-by: Yu Kuai \u003cyukuai3@huawei.com\u003e\nLink: https://lore.kernel.org/r/20240509123717.3223892-3-yukuai1@huaweicloud.com\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f1163d2d17166ed71bd33a1a565e118f2bc3855",
      "old_mode": 33188,
      "old_path": "block/genhd.c",
      "new_id": "7f39fbe6075357d08d157ae0887f5b68de1d9690",
      "new_mode": 33188,
      "new_path": "block/genhd.c"
    }
  ]
}
