)]}'
{
  "log": [
    {
      "commit": "bb231fe3a53b2d34c1aef119613816fcb18864b1",
      "tree": "55e686f0118aebedec1a6ddf52746a8a722b51cc",
      "parents": [
        "f79e2abb9bd452d97295f34376dedbec9686b986"
      ],
      "author": {
        "name": "KaiGai Kohei",
        "email": "kaigai@ak.jp.nec.com",
        "time": "Fri Mar 31 02:30:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:54 2006 -0800"
      },
      "message": "[PATCH] Fix pacct bug in multithreading case.\n\nI noticed a bug on the process accounting facility.  In multi-threading\nprocess, some data would be recorded incorrectly when the group_leader dies\nearlier than one or more threads.  The attached patch fixes this problem.\n\nSee below.  \u0027bugacct\u0027 is a test program that create a worker thread after 4\nseconds sleeping, then the group_leader dies soon.  The worker thread\nconsume CPU/Memory for 6 seconds, then exit.  We can estimate 10 seconds as\netime and 6 seconds as stime + utime.  This is a sample program which the\ngroup_leader dies earlier than other threads.\n\nThe results of same binary execution on different kernel are below.\n-- accounted records --------------------\n         |   btime  | utime | stime | etime | minflt | majflt |   comm  |\noriginal | 13:16:40 |  0.00 |  0.00 |  6.10 |    171 |      0 | bugacct |\n patched | 13:20:21 |  5.83 |  0.18 | 10.03 |  32776 |      0 | bugacct |\n(*) bugacct allocates 128MB memory, thus 128MB / 4KB \u003d 32768 of minflt is\n    appropriate.\n\n-- Test results in original kernel ------\n$ date; time -p ./bugacct\nTue Mar 28 13:16:36 JST 2006  \u003c- But pacct said btime is 13:16:40\nreal 10.11                    \u003c- But pacct said etime is 6.10\nuser 5.96                     \u003c- But pacct said utime is 0.00\nsys 0.14                      \u003c- But pacct said stime is 0.00\n$\n-- Test results in patched kernel -------\n$ date; time -p ./bugacct\nTue Mar 28 13:20:21 JST 2006\nreal 10.04\nuser 5.83\nsys 0.19\n$\n\nIn the original 2.6.16 kernel, pacct records btime, utime, stime, etime and\nminflt incorrectly.  In my opinion, this problem is caused by an assumption\nthat group_leader dies last.\n\nThe following section calculates process running time for etime and btime.\nBut it means running time of the thread that dies last, not process.  The\nstart_time of the first thread in the process (group_leader) should be\nreduced from uptime to calculate etime and btime correctly.\n\n   ---- do_acct_process() in kernel/acct.c:\n   /* calculate run_time in nsec*/\n   do_posix_clock_monotonic_gettime(\u0026uptime);\n   run_time \u003d (u64)uptime.tv_sec*NSEC_PER_SEC + uptime.tv_nsec;\n   run_time -\u003d (u64)current-\u003estart_time.tv_sec*NSEC_PER_SEC\n                                   + current-\u003estart_time.tv_nsec;\n   ----\n\nThe following section calculates stime and utime of the process.\nBut it might count the utime and stime of the group_leader duplicatly\nand ignore the utime and stime of the thread dies last, when one or\nmore threads remain after group_leader dead.\nThe ac_utime should be calculated as the sum of the signal-\u003eutime\nand utime of the thread dies last. The ac_stime should be done also.\n\n   ---- do_acct_process() in kernel/acct.c:\n   jiffies \u003d cputime_to_jiffies(cputime_add(current-\u003egroup_leader-\u003eutime,\n                                            current-\u003esignal-\u003eutime));\n   ac.ac_utime \u003d encode_comp_t(jiffies_to_AHZ(jiffies));\n   jiffies \u003d cputime_to_jiffies(cputime_add(current-\u003egroup_leader-\u003estime,\n                                            current-\u003esignal-\u003estime));\n   ac.ac_stime \u003d encode_comp_t(jiffies_to_AHZ(jiffies));\n   ----\n\nThe part of the minflt/majflt calculation has same problem.\nThis patch solves those problems, I think.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c59ede7b78db329949d9cdcd7064e22d357560ef",
      "tree": "f9dc9d464fdad5bfd464d983e77c1af031389dda",
      "parents": [
        "e16885c5ad624a6efe1b1bf764e075d75f65a788"
      ],
      "author": {
        "name": "Randy.Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jan 11 12:17:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] move capable() to capability.h\n\n- Move capable() from sched.h to capability.h;\n\n- Use \u003clinux/capability.h\u003e where capable() is used\n\t(in include/, block/, ipc/, kernel/, a few drivers/,\n\tmm/, security/, \u0026 sound/;\n\tmany more drivers/ to go)\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "089545f0c71bab6511395c2a060d7f81a99bad58",
      "tree": "461ec36ccfc7350db49ce97d59894a7672ae170f",
      "parents": [
        "088c4ec16aa6b865dcf690051ddac30eb2bf6bcc"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Jan 06 00:19:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:49 2006 -0800"
      },
      "message": "[PATCH] s390: cputime_t fixes\n\nThere are some more places where the use of cputime_t instead of an integer\ntype and the associated macros is necessary for the virtual cputime accounting\non s390.  Affected are the s390 specific appldata code and BSD process\naccounting.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7b7b1ace2d9d06d76bce7481a045c22ed75e35dd",
      "tree": "458f9f16b855ed0347013048c13d3a29031f00ee",
      "parents": [
        "254ce8dc882f8d69e5d49ed4807c94a61976fb15"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Nov 07 17:13:39 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:09 2005 -0800"
      },
      "message": "[PATCH] saner handling of auto_acct_off() and DQUOT_OFF() in umount\n\nThe way we currently deal with quota and process accounting that might\nkeep vfsmount busy at umount time is inherently broken; we try to turn\nthem off just in case (not quite correctly, at that) and\n\n  a) pray umount doesn\u0027t fail (otherwise they\u0027ll stay turned off)\n  b) pray nobody doesn anything funny just as we turn quota off\n\nMoreover, LSM provides hooks for doing the same sort of broken logics.\n\nThe proper way to deal with that is to introduce the second kind of\nreference to vfsmount.  Semantics:\n\n - when the last normal reference is dropped, all special ones are\n   converted to normal ones and if there had been any, cleanup is done.\n - normal reference can be cloned into a special one\n - special reference can be converted to normal one; that\u0027s a no-op if\n   we\u0027d already passed the point of no return (i.e.  mntput() had\n   converted special references to normal and started cleanup).\n\nThe way it works: e.g. starting process accounting converts the vfsmount\nreference pinned by the opened file into special one and turns it back\nto normal when it gets shut down; acct_auto_close() is done when no\nnormal references are left.  That way it does *not* obstruct umount(2)\nand it silently gets turned off when the last normal reference to\nvfsmount is gone.  Which is exactly what we want...\n\nThe same should be done by LSM module that holds some internal\nreferences to vfsmount and wants to shut them down on umount - it should\nmake them special and security_sb_umount_close() will be called exactly\nwhen the last normal reference to vfsmount is gone.\n\nquota handling is even simpler - we don\u0027t use normal file IO anymore, so\nthere\u0027s no need to hold vfsmounts at all.  DQUOT_OFF() is done from\ndeactivate_super(), where it really belongs.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4294621f41a85497019fae64341aa5351a1921b7",
      "tree": "fdeb7eb44384a99d0679ffa6de5019bab0ea2166",
      "parents": [
        "404351e67a9facb475abf1492245374a28d13e90"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: rss \u003d file_rss + anon_rss\n\nI was lazy when we added anon_rss, and chose to change as few places as\npossible.  So currently each anonymous page has to be counted twice, in rss\nand in anon_rss.  Which won\u0027t be so good if those are atomic counts in some\nconfigurations.\n\nChange that around: keep file_rss and anon_rss separately, and add them\ntogether (with get_mm_rss macro) when the total is needed - reading two\natomics is much cheaper than updating two atomics.  And update anon_rss\nupfront, typically in memory.c, not tucked away in page_add_anon_rmap.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "417ef531415c070926b071b75fd1c1ac4b6e2f7e",
      "tree": "e2bceb50c0d7a5e43e8a5596f237cf5b68f57d9f",
      "parents": [
        "621a4d1a823e1ec631fbfbe6e53ad036e2d2abc6"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Sat Sep 10 00:26:39 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:26 2005 -0700"
      },
      "message": "[PATCH] kernel/acct: add kerneldoc\n\nfor kernel/acct.c:\n- fix typos\n- add kerneldoc for non-static functions\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6c9c0b52b8c6b68b05bb06efd7079a8fc5e9ba60",
      "tree": "9b7387c8175cc877d0006a0f1e2905eb5102a0fa",
      "parents": [
        "439c430e3d448b16112de3f3d92bef6ee2639d89"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Tue Sep 06 15:17:35 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:31 2005 -0700"
      },
      "message": "[PATCH] largefile support for accounting\n\nThere is a problem in the accounting subsystem in the kernel can not\ncorrectly handle files larger than 2GB.  The output file containing the\nprocess accounting data can grow very large if the system is large enough\nand active enough.  If the 2GB limit is reached, then the system simply\nstops storing process accounting data.\n\nAnother annoying problem is that once the system reaches this 2GB limit,\nthen every process which exits will receive a signal, SIGXFSZ.  This signal\nis generated because an attempt was made to write beyond the limit for the\nfile descriptor.  This signal makes it look like every process has exited\ndue to a signal, when in fact, they have not.\n\nThe solution is to add the O_LARGEFILE flag to the list of flags used to\nopen the accounting file.  The rest of the accounting support is already\nlargefile safe.\n\nThe changes were tested by constructing a large file (just short of 2GB),\nenabling accounting, and then running enough commands to cause the\naccounting data generated to increase the size of the file to 2GB.  Without\nthe changes, the file grows to 2GB and the last command run in the test\nscript appears to exit due a signal when it has not.  With the changes,\nthings work as expected and quietly.\n\nThere are some user level changes required so that it can deal with\nlargefiles, but those are being handled separately.\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.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"
    }
  ]
}
