)]}'
{
  "commit": "796d5116c407690b14fd5bda136aa67a39e7061a",
  "tree": "bb0522aacb0a923e6636c82aff143df95ea1d730",
  "parents": [
    "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
  ],
  "author": {
    "name": "Jeff Moyer",
    "email": "jmoyer@redhat.com",
    "time": "Thu Jun 02 21:19:05 2011 +0200"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jaxboe@fusionio.com",
    "time": "Thu Jun 02 21:19:05 2011 +0200"
  },
  "message": "iosched: prevent aliased requests from starving other I/O\n\nHi, Jens,\n\nIf you recall, I posted an RFC patch for this back in July of last year:\nhttp://lkml.org/lkml/2010/7/13/279\n\nThe basic problem is that a process can issue a never-ending stream of\nasync direct I/Os to the same sector on a device, thus starving out\nother I/O in the system (due to the way the alias handling works in both\ncfq and deadline).  The solution I proposed back then was to start\ndispatching from the fifo after a certain number of aliases had been\ndispatched.  Vivek asked why we had to treat aliases differently at all,\nand I never had a good answer.  So, I put together a simple patch which\nallows aliases to be added to the rb tree (it adds them to the right,\nthough that doesn\u0027t matter as the order isn\u0027t guaranteed anyway).  I\nthink this is the preferred solution, as it doesn\u0027t break up time slices\nin CFQ or batches in deadline.  I\u0027ve tested it, and it does solve the\nstarvation issue.  Let me know what you think.\n\nCheers,\nJeff\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c52d6888924c53215579b1b663083be376dfa48",
      "old_mode": 33188,
      "old_path": "block/cfq-iosched.c",
      "new_id": "a2fb14bb1402a0875ae5d0c0c7f983faf3eb7866",
      "new_mode": 33188,
      "new_path": "block/cfq-iosched.c"
    },
    {
      "type": "modify",
      "old_id": "5139c0ea1864a858b6072febcf636a71e9bc6f13",
      "old_mode": 33188,
      "old_path": "block/deadline-iosched.c",
      "new_id": "c644137d9cd643b0e3b80750333dc42e92d1e964",
      "new_mode": 33188,
      "new_path": "block/deadline-iosched.c"
    },
    {
      "type": "modify",
      "old_id": "b0b38ce0dcb6ec4cca1cbf28454e834cf3f1073e",
      "old_mode": 33188,
      "old_path": "block/elevator.c",
      "new_id": "a3b64bc71d8821fcdf4fa15dbbd0704ac34b843a",
      "new_mode": 33188,
      "new_path": "block/elevator.c"
    },
    {
      "type": "modify",
      "old_id": "21a8ebf2dc3a2ab5a899077beaad61aa3e6e4f80",
      "old_mode": 33188,
      "old_path": "include/linux/elevator.h",
      "new_id": "d800d5142184216bab18fb1858452fd896e85612",
      "new_mode": 33188,
      "new_path": "include/linux/elevator.h"
    }
  ]
}
