)]}'
{
  "log": [
    {
      "commit": "35797132b311b3b7d4add48393b0a03f3566cbc1",
      "tree": "8b2dee69a4f6b881e22815e9710c479ba853f6fc",
      "parents": [
        "31139971b3dc9fbb2e8a8572fb81e6e8470f363a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sat Sep 10 14:17:10 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:15:12 2005 -0700"
      },
      "message": "[PATCH] cfq-iosched: reverse bad reference count fix\n\nThe reference count fix merged isn\u0027t fully bug free. It doesn\u0027t leak\nnow, but instead it crashes due to looking at freed memory. So for now,\nlets reverse the change and I\u0027ll fix it for real next week.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "38f18527592756d24a12e84c0713e8c902ba7f15",
      "tree": "e20298522f411f1184d748206df6e15b3b949117",
      "parents": [
        "49e31cbac5be2202f351626fd4fb33ad4d4819b8"
      ],
      "author": {
        "name": "Brian King",
        "email": "brking@us.ibm.com",
        "time": "Tue Sep 06 15:18:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:39 2005 -0700"
      },
      "message": "[PATCH] block: CFQ refcounting fix\n\nI ran across a memory leak related to the cfq scheduler. The cfq\ninit function increments the refcnt of the associated request_queue.\n\nThis refcount gets decremented in cfq\u0027s exit function. Since blk_cleanup_queue\nonly calls the elevator exit function when its refcnt goes to zero, the\nrequest_q never gets cleaned up. It didn\u0027t look like other io schedulers were\nincrementing this refcnt, so I removed the refcnt increment and it fixed the\nmemory leak for me.\n\nTo reproduce the problem, simply use cfq and use the scsi_host scan sysfs\nattribute to scan \"- - -\" repeatedly on a scsi host and watch the memory\nvanish.\n\nSigned-off-by: Brian King \u003cbrking@us.ibm.com\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9c2c38a122cc23d6a09b8004d60a33913683eedf",
      "tree": "0596d9e3315a64d01f2a6f64d4f352f3cd0de08f",
      "parents": [
        "41290c14640bc9312bf63202d14ebef075b6171a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Aug 24 14:57:54 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 24 10:22:44 2005 -0700"
      },
      "message": "[PATCH] cfq-iosched.c: minor fixes\n\nOne critical fix and two minor fixes for 2.6.13-rc7:\n\n- Max depth must currently be 2 to allow barriers to function on SCSI\n- Prefer sync request over async in choosing the next request\n- Never allow async request to preempt or disturb the \"anticipation\" for\n  a single cfq process context. This is as-designed, the code right now\n  is buggy in that area.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d7ed538a02c219119adb20f1dccbf0f8015e53f3",
      "tree": "d716ae7dc2e986b36c8180333839312dc0eab7e2",
      "parents": [
        "f7c80c9f77b0e8a59a19506fd3caf323408a5166"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Aug 02 20:08:02 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 02 11:19:18 2005 -0700"
      },
      "message": "[PATCH] cfq-iosched: fix problem with barriers and max_depth \u003d\u003d 1\n\nCFQ will currently stall when using write barriers and the default\nmax_depth setting of 1, since we artificially need a depth of 2 when\npre-pending the first flush. So never deny the barrier request going to\nthe device.\n\nThis is a regression since 2.6.12, it was found in SUSE testing.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99f95e5286df2f69edab8a04c7080d986ee4233b",
      "tree": "91963ac1a2e0f55ec5a619cf0390bff1453a5de4",
      "parents": [
        "6e5a32754c67f0d156c2f196d604b2e9129a1fd5"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Jun 27 20:14:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 20:31:02 2005 -0700"
      },
      "message": "[PATCH] cfq build fix\n\ndrivers/block/cfq-iosched.c: In function \u0027cfq_put_queue\u0027:\ndrivers/block/cfq-iosched.c:303: sorry, unimplemented: inlining failed in call to \u0027cfq_pending_requests\u0027: function body not available\ndrivers/block/cfq-iosched.c:1080: sorry, unimplemented: called from here\ndrivers/block/cfq-iosched.c: In function \u0027__cfq_may_queue\u0027:\ndrivers/block/cfq-iosched.c:1955: warning: the address of \u0027cfq_cfqq_must_alloc_slice\u0027, will always evaluate as \u0027true\u0027\nmake[1]: *** [drivers/block/cfq-iosched.o] Error 1\nmake: *** [drivers/block/cfq-iosched.o] Error 2\n\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96c51ce94e8415d2dfb08358bbd50e1589111f33",
      "tree": "b1b049dce9f3013334ddca6019e5835c4c994ae6",
      "parents": [
        "52a5e15f665385ac99607d6b9e0c3dbdf17c5cfa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 14:49:39 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:30 2005 -0700"
      },
      "message": "[PATCH] CFQ io scheduler: scheduler switch oops\n\nIf cfq is managing a queue and a new scheduler is later selected, it is\npossible for the cfqd unplug_work work to be queued after the kblockd\nwork struct has been flushed.  The problem is the ordering of\ncfq_shutdown_timer_wq() and blk_put_queue() in cfq_put_cfqd().  The\nlatter may rearm the work, leaving cfq_kick_queue() with dead data.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3b18152c327707ae6a2eeba4cfb66457143753bc",
      "tree": "5cdf299af4119762c036cc98a09e23458e0b37fa",
      "parents": [
        "3d25f3566bb606720a67caef77b16190df10dd98"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 10:56:24 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:30 2005 -0700"
      },
      "message": "[PATCH] CFQ io scheduler updates\n\n- Adjust slice values\n\n- Instead of one async queue, one is defined per priority level. This\n  prevents kernel threads (such as reiserfs/x and others) that run at\n  higher io priority from conflicting with others. Previously, it was a\n  coin toss what io prio the async queue got, it was defined by who\n  first set up the queue.\n\n- Let a time slice only begin, when the previous slice is completely\n  done. Previously we could be somewhat unfair to a new sync slice, if\n  the previous slice was async and had several ios queued. This might\n  need a little tweaking if throughput suffers a little due to this,\n  allowing perhaps an overlap of a single request or so.\n\n- Optimize the calling of kblockd_schedule_work() by doing it only when\n  it is strictly necessary (no requests in driver and work left to do).\n\n- Correct sync vs async logic. A \u0027normal\u0027 process can be purely async as\n  well, and a flusher can be purely sync as well. Sync or async is now a\n  property of the class defined and requests pending. Previously writers\n  could be considered sync, when they were really async.\n\n- Get rid of the bit fields in cfqq and crq, use flags instead.\n\n- Various other cleanups and fixes\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3d25f3566bb606720a67caef77b16190df10dd98",
      "tree": "b80225d86859487b6a8eb62126d9de31c7cbf26e",
      "parents": [
        "22e2c507c301c3dbbcf91b4948b88f78842ee6c9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 10:55:49 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:29 2005 -0700"
      },
      "message": "[PATCH] Fix cfq_find_next_crq()\n\nIn cfq_find_next_crq(), cfq tries to find the next request by choosing\none of two requests before and after the current one.  Currently, when\nchoosing the next request, if there\u0027s no next request, the next\ncandidate is NULL, resulting in selection of the previous request.  This\nresults in weird scheduling.  Once we reach the end, we always seek\nbackward.\n\nThe correct behavior is using the first request as the next candidate.\ncfq_choose_req() already has logics for handling wrapped requests.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "22e2c507c301c3dbbcf91b4948b88f78842ee6c9",
      "tree": "9a97c91d1362e69703aa286021daffb8a5456f4c",
      "parents": [
        "020f46a39eb7b99a575b9f4d105fce2b142acdf1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 10:55:12 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:29 2005 -0700"
      },
      "message": "[PATCH] Update cfq io scheduler to time sliced design\n\nThis updates the CFQ io scheduler to the new time sliced design (cfq\nv3).  It provides full process fairness, while giving excellent\naggregate system throughput even for many competing processes.  It\nsupports io priorities, either inherited from the cpu nice value or set\ndirectly with the ioprio_get/set syscalls.  The latter closely mimic\nset/getpriority.\n\nThis import is based on my latest from -mm.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6c1852a08e444a2e66367352a99c0e93c8bf3e97",
      "tree": "ffa075f75b7eb0e5b1399aeb8e34e6cf9a631a10",
      "parents": [
        "fc7e4828995d8c9e4c9597f8a19179e4ab53f73e"
      ],
      "author": {
        "name": "Dmitry Torokhov",
        "email": "dtor_core@ameritech.net",
        "time": "Fri Apr 29 01:26:06 2005 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:03 2005 -0700"
      },
      "message": "[PATCH] sysfs: (driver/block) if show/store is missing return -EIO\n\nsysfs: fix drivers/block so if an attribute doesn\u0027t implement\n       show or store method read/write will return -EIO\n       instead of 0 or -EINVAL.\n\nSigned-off-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
