)]}'
{
  "commit": "ad8d6f0a783ffa2ff9b0cf09910b889715772201",
  "tree": "0af4adf5026a9f8d7d3bf4abf9a3d0563a4b03db",
  "parents": [
    "059a8f3734a66cb2c41731083b0cbf836721485b"
  ],
  "author": {
    "name": "Jens Axboe",
    "email": "axboe@suse.de",
    "time": "Sun Apr 02 23:10:32 2006 +0200"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "axboe@suse.de",
    "time": "Sun Apr 02 23:10:32 2006 +0200"
  },
  "message": "[PATCH] splice: page stealing needs to wait_on_page_writeback()\n\nThanks to Andrew for the good explanation of why this is so. akpm writes:\n\nIf a page is under writeback and we remove it from pagecache, it\u0027s still\ngoing to get written to disk.  But the VFS no longer knows about that page,\nnor that this page is about to modify disk blocks.\n\nSo there might be scenarios in which those\nblocks-which-are-about-to-be-written-to get reused for something else.\nWhen writeback completes, it\u0027ll scribble on those blocks.\n\nThis won\u0027t happen in ext2/ext3-style filesystems in normal mode because the\npage has buffers and try_to_release_page() will fail.\n\nBut ext2 in nobh mode doesn\u0027t attach buffers at all - it just sticks the\npage in a BIO, finds some new blocks, points the BIO at those blocks and\nlets it rip.\n\nWhile that write IO\u0027s in flight, someone could truncate the file.  Truncate\nwon\u0027t block on the writeout because the page isn\u0027t in pagecache any more.\nSo truncate will the free the blocks from the file under the page\u0027s feet.\nThen something else can reallocate those blocks.  Then write data to them.\n\nNow, the original write completes, corrupting the filesystem.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c2abd4504d702fea0fe514abe6bcbcfdbf0adbf",
      "old_mode": 33188,
      "old_path": "fs/splice.c",
      "new_id": "b5fb2f3e3ac6c3525c6567f56288ea4553e2568d",
      "new_mode": 33188,
      "new_path": "fs/splice.c"
    }
  ]
}
