)]}'
{
  "log": [
    {
      "commit": "59d9136b9844d3a0376d93c945ab280decedb323",
      "tree": "6c3eaa9f902ae983b96500a8d60720610da539a4",
      "parents": [
        "fb1697933a03ec47d794b38e2a4e3ccc2463fd22"
      ],
      "author": {
        "name": "Benjamin LaHaise",
        "email": "bcrl@kvack.org",
        "time": "Sun Jan 08 01:04:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:14:03 2006 -0800"
      },
      "message": "[PATCH] aio: reorder kiocb structure elements to make sync iocb setup faster\n\nReorder members of the kiocb structure to make sync kiocb setup faster.  By\nsetting the elements sequentially, the write combining buffers on the CPU\nare able to combine the writes into a single burst, which results in fewer\ncache cycles being consumed, freeing them up for other code.  This results\nin a 10-20KB/s[*] increase on the bw_unix part of LMbench on my test\nsystem.\n\n* The improvement varies based on what other patches are in the system,\n  as there are a number of bottlenecks, so this number is not absolutely\n  accurate.\n\nSigned-off-by: Benjamin LaHaise \u003cbenjamin.c.lahaise@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5ef1c49f8f9f0d6b5b8d57bb4b66c605a3d65876",
      "tree": "8431e60b0f5ebb4f22b0f4bffbc6f0ebb0faf601",
      "parents": [
        "d00689af6b3b6ba9e1fdefec3bd62edc860c385d"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Nov 13 16:07:35 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:16 2005 -0800"
      },
      "message": "[PATCH] aio: don\u0027t ref kioctx after decref in put_ioctx\n\nput_ioctx\u0027s refcount debugging was doing an atomic_read after dropping its\nreference when it wasn\u0027t the last ref, leaving a tiny race for another freeing\nthread to sneak into.  This shifts the debugging before the ops, uses BUG_ON,\nand reformats the defines a little.  Sadly, moving to inlines increased the\ncode size but this change decreases the code size by a whole 9 bytes :)\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "20dcae32439384b6863c626bb3b2a09bed65b33e",
      "tree": "9750c39119447fb32963448bf1935e1ba22b2f9d",
      "parents": [
        "4557398f8cbaf9f254cff747534b4724c7f75c4f"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Nov 13 16:07:33 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:16 2005 -0800"
      },
      "message": "[PATCH] aio: remove kioctx from mm_struct\n\nSync iocbs have a life cycle that don\u0027t need a kioctx.  Their retrying, if\nany, is done in the context of their owner who has allocated them on the\nstack.\n\nThe sole user of a sync iocb\u0027s ctx reference was aio_complete() checking for\nan elevated iocb ref count that could never happen.  No path which grabs an\niocb ref has access to sync iocbs.\n\nIf we were to implement sync iocb cancelation it would be done by the owner of\nthe iocb using its on-stack reference.\n\nRemoving this chunk from aio_complete allows us to remove the entire kioctx\ninstance from mm_struct, reducing its size by a third.  On a i386 testing box\nthe slab size went from 768 to 504 bytes and from 5 to 8 per page.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d55b5fdaf40846221d543937b786956e27837fda",
      "tree": "ecdf572d7d2b08b4f7b31d804542a920934b6d9a",
      "parents": [
        "0f6ed7c2641fe4cea83cd09c21928ca30c0983ec"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Mon Nov 07 00:59:31 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:53:38 2005 -0800"
      },
      "message": "[PATCH] aio: remove aio_max_nr accounting race\n\nAIO was adding a new context\u0027s max requests to the global total before\ntesting if that resulting total was over the global limit.  This let\ninnocent tasks get their new limit tested along with a racing guilty task\nthat was crossing the limit.  This serializes the _nr accounting with a\nspinlock It also switches to using unsigned long for the global totals.\nIndividual contexts are still limited to an unsigned int\u0027s worth of\nrequests by the syscall interface.\n\nThe problem and fix were verified with a simple program that spun creating\nand destroying a context while holding on to another long lived context.\nBefore the patch a task creating a tiny context could get a spurious EAGAIN\nif it raced with a task creating a very large context that overran the\nlimit.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4faa5285283fad081443e3612ca426a311bb6c7e",
      "tree": "f5178184a94fb8343afee94a5b7cd47c05a2bc49",
      "parents": [
        "e7507ed91e093b9e4e218e41ebfdce05458258fc"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Mon Oct 17 16:43:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 17 17:03:57 2005 -0700"
      },
      "message": "[PATCH] aio: revert lock_kiocb()\n\nlock_kiocb() was introduced to serialize retrying and cancellation.  In the\nprocess of doing so it tried to sleep waiting for KIF_LOCKED while holding\nthe ctx_lock spinlock.  Recent fixes have ensured that multiple concurrent\nretries won\u0027t be attempted for a given iocb.  Cancel has other problems and\nhas no significant in-tree users that have been complaining about it.  So\nfor the immediate future we\u0027ll revert sleeping with the lock held and will\naddress proper cancellation and retry serialization in the future.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "897f15fb587fd2772b9e7ff6ec0265057f3c3975",
      "tree": "d975ce5f131b8f42915cf264122cd265661651e0",
      "parents": [
        "998765e5588b197737d457e16f72832d8036190f"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Fri Sep 30 11:58:55 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 30 12:41:17 2005 -0700"
      },
      "message": "[PATCH] aio: remove unlocked task_list test and resulting race\n\nOnly one of the run or kick path is supposed to put an iocb on the run\nlist.  If both of them do it than one of them can end up referencing a\nfreed iocb.  The kick path could delete the task_list item from the wait\nqueue before getting the ctx_lock and putting the iocb on the run list.\nThe run path was testing the task_list item outside the lock so that it\ncould catch ki_retry methods that return -EIOCBRETRY *without* putting the\niocb on a wait queue and promising to call kick_iocb.  This unlocked check\ncould then race with the kick path to cause both to try and put the iocb on\nthe run list.\n\nThe patch stops the run path from testing task_list by requring that any\nki_retry that returns -EIOCBRETRY *must* guarantee that kick_iocb() will be\ncalled in the future.  aio_p{read,write}, the only in-tree -EIOCBRETRY\nusers, are updated.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Benjamin LaHaise \u003cbcrl@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\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"
    }
  ]
}
