)]}'
{
  "log": [
    {
      "commit": "212d6d2237f60bc28c1518f8abf9d3ed6c17574a",
      "tree": "693ac9cdb0693acb0f935d4b61a34e6a12056add",
      "parents": [
        "ca2f3daf779f5e89d14e9783fcfd7920842df9e9"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Thu Aug 25 12:47:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 26 16:38:47 2005 -0700"
      },
      "message": "[PATCH] completely disable cpu_exclusive sched domain\n\nAt the suggestion of Nick Piggin and Dinakar, totally disable\nthe facility to allow cpu_exclusive cpusets to define dynamic\nsched domains in Linux 2.6.13, in order to avoid problems\nfirst reported by John Hawkes (corrupt sched data structures\nand kernel oops).\n\nThis has been built for ppc64, i386, ia64, x86_64, sparc, alpha.\nIt has been built, booted and tested for cpuset functionality\non an SN2 (ia64).\n\nDinakar or Nick - could you verify that it for sure does avoid\nthe problems Hawkes reported.  Hawkes is out of town, and I don\u0027t\nhave the recipe to reproduce what he found.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ca2f3daf779f5e89d14e9783fcfd7920842df9e9",
      "tree": "07ce4cc60957d842dac1cb3d44dd5441071cf90f",
      "parents": [
        "13142341ac867bb67e88204cbfcb8d90f9a861b7"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Thu Aug 25 12:47:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 26 16:38:46 2005 -0700"
      },
      "message": "[PATCH] undo partial cpu_exclusive sched domain disabling\n\nThe partial disabling of Dinakar\u0027s new facility to allow\ncpu_exclusive cpusets to define dynamic sched domains\ndoesn\u0027t go far enough.  At the suggestion of Nick Piggin\nand Dinakar, let us instead totally disable this facility\nfor 2.6.13, in order to avoid problems first reported\nby John Hawkes (corrupt sched data structures and kernel oops).\n\nThis patch removes the partial disabling code in 2.6.13-rc7,\nin anticipation of the next patch, which will totally disable\nit instead.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3725822f7c7134249addcd4549aff086950c8090",
      "tree": "d7db18d3d5f75fe4309ddc7aa373f3213f845b41",
      "parents": [
        "40bb0c3ef52d872de348e10000eb5432a43a147d"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Aug 24 04:15:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 24 09:40:45 2005 -0700"
      },
      "message": "[PATCH] cpu_exclusive sched domains build fix\n\nAs reported by Paul Mackerras \u003cpaulus@samba.org\u003e, the previous patch\n\"cpu_exclusive sched domains fix\" broke the ppc64 build with\nCONFIC_CPUSET, yielding error messages:\n\nkernel/cpuset.c: In function \u0027update_cpu_domains\u0027:\nkernel/cpuset.c:648: error: invalid lvalue in unary \u0027\u0026\u0027\nkernel/cpuset.c:648: error: invalid lvalue in unary \u0027\u0026\u0027\n\nOn some arch\u0027s, the node_to_cpumask() is a function, returning\na cpumask_t.  But the for_each_cpu_mask() requires an lvalue mask.\n\nThe following patch fixes this build failure by making a copy\nof the cpumask_t on the stack.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d10689b68aff7b48e3de1a3f7fcd6567bd2905af",
      "tree": "c81c261274011d301dfbcfd1a3e13480b93c167e",
      "parents": [
        "ae75784bc576a1af70509c2f3ba2b70bb65a0c58"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Tue Aug 23 01:04:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 23 20:02:52 2005 -0700"
      },
      "message": "[PATCH] cpu_exclusive sched domains on partial nodes temp fix\n\nThis keeps the kernel/cpuset.c routine update_cpu_domains() from\ninvoking the sched.c routine partition_sched_domains() if the cpuset in\nquestion doesn\u0027t fall on node boundaries.\n\nI have boot tested this on an SN2, and with the help of a couple of ad\nhoc printk\u0027s, determined that it does indeed avoid calling the\npartition_sched_domains() routine on partial nodes.\n\nI did not directly verify that this avoids setting up bogus sched\ndomains or avoids the oops that Hawkes saw.\n\nThis patch imposes a silent artificial constraint on which cpusets can\nbe used to define dynamic sched domains.\n\nThis patch should allow proceeding with this new feature in 2.6.13 for\nthe configurations in which it is useful (node alligned sched domains)\nwhile avoiding trying to setup sched domains in the less useful cases\nthat can cause the kernel corruption and oops.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nAcked-by: John Hawkes \u003chawkes@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3077a260e9f316b611436b1506eec9cc5c4f8aa6",
      "tree": "43b7d5faa5f204904c713c463015792d9ff56b01",
      "parents": [
        "a242b44da6feb604c4c659b78f63dedb69b2d4a3"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Tue Aug 09 10:07:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 09 12:08:22 2005 -0700"
      },
      "message": "[PATCH] cpuset release ABBA deadlock fix\n\nFix possible cpuset_sem ABBA deadlock if \u0027notify_on_release\u0027 set.\n\nFor a particular usage pattern, creating and destroying cpusets fairly\nfrequently using notify_on_release, on a very large system, this deadlock\ncan be seen every few days.  If you are not using the cpuset\nnotify_on_release feature, you will never see this deadlock.\n\nThe existing code, on task exit (or cpuset deletion) did:\n\n  get cpuset_sem\n  if cpuset marked notify_on_release and is ready to release:\n    compute cpuset path relative to /dev/cpuset mount point\n    call_usermodehelper() forks /sbin/cpuset_release_agent with path\n  drop cpuset_sem\n\nUnfortunately, the fork in call_usermodehelper can allocate memory, and\nallocating memory can require cpuset_sem, if the mems_generation values\nchanged in the interim.  This results in an ABBA deadlock, trying to obtain\ncpuset_sem when it is already held by the current task.\n\nTo fix this, I put the cpuset path (which must be computed while holding\ncpuset_sem) in a temporary buffer, to be used in the call_usermodehelper\ncall of /sbin/cpuset_release_agent only _after_ dropping cpuset_sem.\n\nSo the new logic is:\n\n  get cpuset_sem\n  if cpuset marked notify_on_release and is ready to release:\n    compute cpuset path relative to /dev/cpuset mount point\n    stash path in kmalloc\u0027d buffer\n  drop cpuset_sem\n  call_usermodehelper() forks /sbin/cpuset_release_agent with path\n  free path\n\nThe sharp eyed reader might notice that this patch does not contain any\ncalls to kmalloc.  The existing code in the check_for_release() routine was\nalready kmalloc\u0027ing a buffer to hold the cpuset path.  In the old code, it\njust held the buffer for a few lines, over the cpuset_release_agent() call\nthat in turn invoked call_usermodehelper().  In the new code, with the\napplication of this patch, it returns that buffer via the new char\n**ppathbuf parameter, for later use and freeing in cpuset_release_agent(),\nwhich is called after cpuset_sem is dropped.  Whereas the old code has just\none call to cpuset_release_agent(), right in the check_for_release()\nroutine, the new code has three calls to cpuset_release_agent(), from the\nvarious places that a cpuset can be released.\n\nThis patch has been build and booted on SN2, and passed a stress test that\npreviously hit the deadlock within a few seconds.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d9fd8a6d443b509147280f058d4e59f0b796a323",
      "tree": "427385e403fc0d4282be19732a00ddfd224c1461",
      "parents": [
        "207a7ba8dc000e1b13acac97f3736810dd86e8e2"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jul 27 11:45:11 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:26:06 2005 -0700"
      },
      "message": "[PATCH] kernel/cpuset.c: add kerneldoc, fix typos\n\nAdd kerneldoc to kernel/cpuset.c\n\nFix cpuset typos in init/Kconfig\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "85d7b94981e2e919697bc235aad7367b33c3864b",
      "tree": "79d7705a897abde11b5f2f967bf24487aaeea354",
      "parents": [
        "1a20ff27ef75d866730ee796acd811a925af762f"
      ],
      "author": {
        "name": "Dinakar Guniguntala",
        "email": "dino@in.ibm.com",
        "time": "Sat Jun 25 14:57:34 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:45 2005 -0700"
      },
      "message": "[PATCH] Dynamic sched domains: cpuset changes\n\nAdds the core update_cpu_domains code and updated cpusets documentation\n\nSigned-off-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5f45f1a78fbac3cc859ec10c5366e97d20d40fa2",
      "tree": "bafacf11adbfb4eebf2d2d80d92e1fe2d9c02b18",
      "parents": [
        "ac20427ef6aa63da663bdc88b71d16f7394f5e23"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 00:09:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:20 2005 -0700"
      },
      "message": "[PATCH] remove duplicate get_dentry functions in various places\n\nVarious filesystem drivers have grown a get_dentry() function that\u0027s a\nduplicate of lookup_one_len, except that it doesn\u0027t take a maximum length\nargument and doesn\u0027t check for \\0 or / in the passed in filename.\n\nSwitch all these places to use lookup_one_len.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2efe86b809d97debaaf9fcc13b041aedf15bd3d2",
      "tree": "87e039397918f4c5b0a21d798589a8ce517bfa2d",
      "parents": [
        "88c1834633341bbb94e315433067496338bff4ad"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri May 27 02:02:43 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri May 27 08:07:26 2005 -0700"
      },
      "message": "[PATCH] cpuset exit NULL dereference fix\n\nThere is a race in the kernel cpuset code, between the code\nto handle notify_on_release, and the code to remove a cpuset.\nThe notify_on_release code can end up trying to access a\ncpuset that has been removed.  In the most common case, this\ncauses a NULL pointer dereference from the routine cpuset_path.\nHowever all manner of bad things are possible, in theory at least.\n\nThe existing code decrements the cpuset use count, and if the\ncount goes to zero, processes the notify_on_release request,\nif appropriate.  However, once the count goes to zero, unless we\nare holding the global cpuset_sem semaphore, there is nothing to\nstop another task from immediately removing the cpuset entirely,\nand recycling its memory.\n\nThe obvious fix would be to always hold the cpuset_sem\nsemaphore while decrementing the use count and dealing with\nnotify_on_release.  However we don\u0027t want to force a global\nsemaphore into the mainline task exit path, as that might create\na scaling problem.\n\nThe actual fix is almost as easy - since this is only an issue\nfor cpusets using notify_on_release, which the top level big\ncpusets don\u0027t normally need to use, only take the cpuset_sem\nfor cpusets using notify_on_release.\n\nThis code has been run for hours without a hiccup, while running\na cpuset create/destroy stress test that could crash the existing\nkernel in seconds.  This patch applies to the current -linus\ngit kernel.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Simon Derr \u003csimon.derr@bull.net\u003e\nAcked-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9a8488965dc4c42a4a1f84cab907c7d6c5cf1563",
      "tree": "58581a02cc06bb1a2991209c9e4d559353cbec6f",
      "parents": [
        "b52402c783d8c16b11f146a244bb21086a94bf84"
      ],
      "author": {
        "name": "Benoit Boissinot",
        "email": "benoit.boissinot@ens-lyon.org",
        "time": "Sat Apr 16 15:25:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:25:59 2005 -0700"
      },
      "message": "[PATCH] cpuset: remove function attribute const\n\ngcc-4 warns with\ninclude/linux/cpuset.h:21: warning: type qualifiers ignored on function\nreturn type\n\ncpuset_cpus_allowed is declared with const\nextern const cpumask_t cpuset_cpus_allowed(const struct task_struct *p);\n\nFirst const should be __attribute__((const)), but the gcc manual\nexplains that:\n\n\"Note that a function that has pointer arguments and examines the data\npointed to must not be declared const. Likewise, a function that calls a\nnon-const function usually must not be const. It does not make sense for\na const function to return void.\"\n\nThe following patch remove const from the function declaration.\n\nSigned-off-by: Benoit Boissinot \u003cbenoit.boissinot@ens-lyon.org\u003e\nAcked-by: Paul Jackson \u003cpj@sgi.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"
    }
  ]
}
