)]}'
{
  "log": [
    {
      "commit": "c64610ba585fabb36be78782868277f3d9741a2e",
      "tree": "e731ee73950ecb6969bb0d7739c03d16373c44c0",
      "parents": [
        "3c0547ba8b3bbd8b26ae35e33ac17ff51f67f78c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon May 16 21:53:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue May 17 07:59:20 2005 -0700"
      },
      "message": "[PATCH] block_read_full_page() get_block() error handling fix\n\nIf block_read_full_page() detects an error when running get_block() it will\nrun SetPageError(), then it will zero out the block in pagecache and will mark\nthe buffer_head uptodate.\n\nSo at the end of readahead we end up with a non-uptodate pagecache page which\nis marked PageError.  But it has uptodate buffers.\n\nThe pagefault code will run ClearPageError, will launch readpage a second time\nand block_read_full_page() will notice the uptodate buffers and will mark the\npage uptodate as well.  We end up with an uptodate, !PageError page full of\nzeros and the error is lost.\n\n(It seems a little odd that filemap_nopage() runs ClearPageError().  I guess\nall of this adds up to meaning that for each attempted access to the page, the\npagefault handler will retry the I/O.  Which is good and bad.  If the app is\nignoring SIGBUS for some reason we could get a lot of back-to-back I/O\nerrors.)\n\nFix it by not marking the pagecache buffer_head as uptodate if the attempt to\nmap that buffer to a disk block failed.\n\nCredit-to: Qu Fuping \u003cfs@ercist.iscas.ac.cn\u003e\n\n  For reporting the bug and identifying its source.\n\nSigned-off-by: Qu Fuping \u003cfs@ercist.iscas.ac.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "75c96f85845a6707b0f9916cb263cb3584f7d48f",
      "tree": "45a64d1c9bb71d7093db3a11e0f21465c2e3dec6",
      "parents": [
        "5e198d94dd0c3ec7f6138229e2e412c2c6268c38"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu May 05 16:16:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:47 2005 -0700"
      },
      "message": "[PATCH] make some things static\n\nThis patch makes some needlessly global identifiers static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Arjan van de Ven \u003carjanv@infradead.org\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f0fbd5fc09b20f7ba7bc8c80be33e39925bb38e1",
      "tree": "01216cf5771d1b49dfc2e0ba15ac1a288fb5d58c",
      "parents": [
        "05937baae9fc27b64bcd4378da7d2b14edf7931c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu May 05 16:15:48 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:41 2005 -0700"
      },
      "message": "[PATCH] __block_write_full_page() simplification\n\nThe `last_bh\u0027 logic probably isn\u0027t worth much.  In those situations where only\nthe front part of the page is being written out we will save some looping but\nin the vastly more common case of an all-page writeout if just adds more code.\n\nNick Piggin \u003cnickpiggin@yahoo.com.au\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "05937baae9fc27b64bcd4378da7d2b14edf7931c",
      "tree": "415bec7602a12a94ae4bc9b1aa512a1d55bb957d",
      "parents": [
        "ad576e63e0c8b274a8558b8e05a6d0526e804dc0"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu May 05 16:15:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:41 2005 -0700"
      },
      "message": "[PATCH] __block_write_full_page speedup\n\nRemove all those get_bh()\u0027s and put_bh()\u0027s by extending lock_page() to cover\nthe troublesome regions.\n\n(get_bh() and put_bh() happen every time whereas contention on a page\u0027s lock\nin there happens basically never).\n\nCc: 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": "ad576e63e0c8b274a8558b8e05a6d0526e804dc0",
      "tree": "a7c44175df405cf2851f45a486ff96037d1a43e6",
      "parents": [
        "f3ddbdc6267c32223035ea9bb8456a2d86f65ba1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Thu May 05 16:15:46 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:40 2005 -0700"
      },
      "message": "[PATCH] __block_write_full_page race fix\n\nWhen running\n\tfsstress -v -d $DIR/tmp -n 1000 -p 1000 -l 2\non an ext2 filesystem with 1024 byte block size, on SMP i386 with 4096 byte\npage size over loopback to an image file on a tmpfs filesystem, I would\nvery quickly hit\n\tBUG_ON(!buffer_async_write(bh));\nin fs/buffer.c:end_buffer_async_write\n\nIt seems that more than one request would be submitted for a given bh\nat a time.\n\nWhat would happen is the following:\n2 threads doing __mpage_writepages on the same page.\nThread 1 - lock the page first, and enter __block_write_full_page.\nThread 1 - (eg.) mark_buffer_async_write on the first 2 buffers.\nThread 1 - set page writeback, unlock page.\nThread 2 - lock page, wait on page writeback\nThread 1 - submit_bh on the first 2 buffers.\n\u003d\u003e both requests complete, none of the page buffers are async_write,\n   end_page_writeback is called.\nThread 2 - wakes up. enters __block_write_full_page.\nThread 2 - mark_buffer_async_write on (eg.) the last buffer\nThread 1 - finds the last buffer has async_write set, submit_bh on that.\nThread 2 - submit_bh on the last buffer.\n\u003d\u003e oops.\n\nSo change __block_write_full_page to explicitly keep track of the last bh\nwe need to issue, so we don\u0027t touch anything after issuing the last\nrequest.\n\nSigned-off-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": "f3ddbdc6267c32223035ea9bb8456a2d86f65ba1",
      "tree": "bc11ca9a8bc1f1ebdc70e59bb28e8e328346f7bb",
      "parents": [
        "3c8fad1829cc33e903500b41d989fa50ab196378"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Thu May 05 16:15:45 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:40 2005 -0700"
      },
      "message": "[PATCH] fix race in __block_prepare_write\n\nFix a race where __block_prepare_write can leak out an in-flight read\nagainst a bh if get_block returns an error.  This can lead to the page\nbecoming unlocked while the buffer is locked and the read still in flight.\n__mpage_writepage BUGs on this condition.\n\nBUG sighted on a 2-way Itanium2 system with 16K PAGE_SIZE running\n\n\tfsstress -v -d $DIR/tmp -n 1000 -p 1000 -l 2\n\nwhere $DIR is a new ext2 filesystem with 4K blocks that is quite\nsmall (causing get_block to fail often with -ENOSPC).\n\nSigned-off-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": "e422fd2c965ad1b0e4eadaabd0adb77e8a93e74e",
      "tree": "a29a10773141fb0da142abb45ac618f2913f981d",
      "parents": [
        "f48d9663f19afb88ac0e45b825da523180f1f9c0"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Thu May 05 16:15:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:30 2005 -0700"
      },
      "message": "[PATCH] avoid -ENOMEM due reclaimable slab caches\n\nThis makes sure that reclaimable buffer headers and reclaimable inodes\nare accounted properly during the overcommit checks.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67be2dd1bace0ec7ce2dbc1bba3f8df3d7be597e",
      "tree": "317d114a0288d3b19ef9902f94b536a5a8731dbd",
      "parents": [
        "6013d5445f9a6d0b28090027868f455c5012d1cc"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "message": "[PATCH] DocBook: fix some descriptions\n\nSome KernelDoc descriptions are updated to match the current code.\nNo code changes.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cd7619d6bf36564cf54ff7218ef54e558a741913",
      "tree": "c11674169b6d8f0b498e7ebe8a85d624cca82502",
      "parents": [
        "c8538a7aa5527d02c7191ac5da124efadf6a2827"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Sun May 01 08:59:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:01 2005 -0700"
      },
      "message": "[PATCH] Exterminate PAGE_BUG\n\nRemove PAGE_BUG - repalce it with BUG and BUG_ON.\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d59dd4620fb8d6422555a9e2b82a707718e68327",
      "tree": "78205657d24efcaa3f8314064951ac3814ed95a7",
      "parents": [
        "0d8d4d42f2d00eb65262b49f4edd4cf7ef4eb6fc"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:47 2005 -0700"
      },
      "message": "[PATCH] use smp_mb/wmb/rmb where possible\n\nReplace a number of memory barriers with smp_ variants.  This means we won\u0027t\ntake the unnecessary hit on UP machines.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "de7d5a3b6c9ff8429bf046c36b56d3192b75c3da",
      "tree": "b7aae262a2e790bc736fa16534b3b2d7c9e51245",
      "parents": [
        "552fca4cbe552520d85b21e839f289c880fa48d2"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sun May 01 08:58:39 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:39 2005 -0700"
      },
      "message": "[PATCH] drop_buffers() oops fix\n\nIn rare situations, drop_buffers() can be called for a page which has buffers,\nbut no -\u003emapping (it was truncated, but the buffers were left behind because\next3 was still fiddling with them).\n\nBut if there was an I/O error in a buffer_head, drop_buffers() will try to get\nat the address_space and will oops.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "76c3073a888ae7f4790a146784bb5c34fc24b9d2",
      "tree": "553ce5e651b26fae65a2a35e95570c88e2eab46d",
      "parents": [
        "323aca6c0bda611d0f31b3234d9fe291d31a9207"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sat Apr 16 15:24:07 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:24:07 2005 -0700"
      },
      "message": "[PATCH] end_buffer_write_sync() avoid pointless assignments\n\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"
    }
  ]
}
