)]}'
{
  "commit": "db3b5848ea6440968fcdd29b80514d0de044bb7c",
  "tree": "75d3356743362570b7e6f94696f37fd4b1c9ce2f",
  "parents": [
    "c374f127e4ff17a318b9ae95a5bf65f370c2d0b1"
  ],
  "author": {
    "name": "Kiyoshi Ueda ",
    "email": "k-ueda@ct.jp.nec.com",
    "time": "Fri Jun 17 16:15:10 2005 +0200"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "axboe@suse.de",
    "time": "Fri Jun 17 16:15:10 2005 +0200"
  },
  "message": "When cfq I/O scheduler is selected, get_request() in __make_request() calls\n__cfq_get_queue().  __cfq_get_queue() finds an existing queue (struct\ncfq_queue) of the current process for the device and returns it.  If it\u0027s not\nfound, __cfq_get_queue() creates and returns a new one if __cfq_get_queue() is\ncalled with __GFP_WAIT flag, or __cfq_get_queue() returns NULL (this means that\nget_request() fails) if no __GFP_WAIT flag.\n\nOn the other hand, in __make_request(), get_request() is called without\n__GFP_WAIT flag at the first time.  Thus, the get_request() fails when there is\nno existing queue, typically when it\u0027s called for the first I/O request of the\nprocess to the device.\n\nThough it will be followed by get_request_wait() for general case,\n__make_request() will just end the I/O with an error (EWOULDBLOCK) when the\nrequest was for read-ahead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0ef7a0065ece2c9468ced12e65016c37b40ad3c4",
      "old_mode": 33188,
      "old_path": "drivers/block/cfq-iosched.c",
      "new_id": "2210bacad56a34c4023a85036681c51657d19f8b",
      "new_mode": 33188,
      "new_path": "drivers/block/cfq-iosched.c"
    }
  ]
}
