)]}'
{
  "commit": "787d2214c19bcc9b6ac48af0ce098277a801eded",
  "tree": "a040604fdf9620a66dc83a0cde4f2140e2ec25b3",
  "parents": [
    "a1ed3dda0ad181532f1e0f0d548067fb9fdddac4"
  ],
  "author": {
    "name": "Nick Piggin",
    "email": "npiggin@suse.de",
    "time": "Tue Jul 17 04:03:34 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue Jul 17 10:23:02 2007 -0700"
  },
  "message": "fs: introduce some page/buffer invariants\n\nIt is a bug to set a page dirty if it is not uptodate unless it has\nbuffers.  If the page has buffers, then the page may be dirty (some buffers\ndirty) but not uptodate (some buffers not uptodate).  The exception to this\nrule is if the set_page_dirty caller is racing with truncate or invalidate.\n\nA buffer can not be set dirty if it is not uptodate.\n\nIf either of these situations occurs, it indicates there could be some data\nloss problem.  Some of these warnings could be a harmless one where the\npage or buffer is set uptodate immediately after it is dirtied, however we\nshould fix those up, and enforce this ordering.\n\nBring the order of operations for truncate into line with those of\ninvalidate.  This will prevent a page from being able to go !uptodate while\nwe\u0027re holding the tree_lock, which is probably a good thing anyway.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d654a3b6209e30a0fb68d438bee7a40a9bfc54cd",
      "old_mode": 33188,
      "old_path": "fs/buffer.c",
      "new_id": "0f9006714230073ea656aa909de6cd18ed05e903",
      "new_mode": 33188,
      "new_path": "fs/buffer.c"
    },
    {
      "type": "modify",
      "old_id": "ea9da3bed3e908db7ff42dfd5460250d70b2edbf",
      "old_mode": 33188,
      "old_path": "mm/page-writeback.c",
      "new_id": "886ea0d5a1368af3f86548c44562896630d31c6b",
      "new_mode": 33188,
      "new_path": "mm/page-writeback.c"
    },
    {
      "type": "modify",
      "old_id": "7c994f2d614519df007e16eb93f1a8a393589a2e",
      "old_mode": 33188,
      "old_path": "mm/truncate.c",
      "new_id": "f47e46d1be3b1d9f42b1e83057bf696a3469df27",
      "new_mode": 33188,
      "new_path": "mm/truncate.c"
    }
  ]
}
