)]}'
{
  "commit": "8e9d78edea3ce5c0036f85b93091483f2f15443a",
  "tree": "898c98daca2602f0df70558211f30ff1bd2bcf6c",
  "parents": [
    "4dfd79e7b42bff334128907e28c3b41f1ef1cec8"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Aug 21 17:40:08 2009 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Aug 21 17:40:08 2009 -0700"
  },
  "message": "Re-introduce page mapping check in mark_buffer_dirty()\n\nIn commit a8e7d49aa7be728c4ae241a75a2a124cdcabc0c5 (\"Fix race in\ncreate_empty_buffers() vs __set_page_dirty_buffers()\"), I removed a test\nfor a NULL page mapping unintentionally when some of the code inside\n__set_page_dirty() was moved to the callers.\n\nThat removal generally didn\u0027t matter, since a filesystem would serialize\ntruncation (which clears the page mapping) against writing (which marks\nthe buffer dirty), so locking at a higher level (either per-page or an\ninode at a time) should mean that the buffer page would be stable.  And\nindeed, nothing bad seemed to happen.\n\nExcept it turns out that apparently reiserfs does something odd when\nunder load and writing out the journal, and we have a number of bugzilla\nentries that look similar:\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d13556\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d13756\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d13876\n\nand it looks like reiserfs depended on that check (the common theme\nseems to be \"data\u003djournal\", and a journal writeback during a truncate).\n\nI suspect reiserfs should have some additional locking, but in the\nmeantime this should get us back to the pre-2.6.29 behavior.\n\nPattern-pointed-out-by: Roland Kletzing \u003cdevzero@web.de\u003e\nCc: stable@kernel.org (2.6.29 and 2.6.30)\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a3ef091a45bd4664e5ba5e683f9329bda3d1d3df",
      "old_mode": 33188,
      "old_path": "fs/buffer.c",
      "new_id": "28f320fac4d4261ec8626d0cfe221be83778c20e",
      "new_mode": 33188,
      "new_path": "fs/buffer.c"
    }
  ]
}
