)]}'
{
  "commit": "d50bdd5aa55127635fd8a5c74bd2abb256bd34e3",
  "tree": "3dbe0f5d06502e144c0398c71e8fe479a855d6f4",
  "parents": [
    "dd68314ccf3fb918c1fb6471817edbc60ece4b52"
  ],
  "author": {
    "name": "Curt Wohlgemuth",
    "email": "curtw@google.com",
    "time": "Mon Feb 07 12:46:14 2011 -0500"
  },
  "committer": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Mon Feb 07 12:46:14 2011 -0500"
  },
  "message": "ext4: Fix data corruption with multi-block writepages support\n\nThis fixes a corruption problem with the multi-block\nwritepages submittal change for ext4, from commit\nbd2d0210cf22f2bd0cef72eb97cf94fc7d31d8cc (\"ext4: use bio\nlayer instead of buffer layer in mpage_da_submit_io\").\n\n(Note that this corruption is not present in 2.6.37 on\next4, because the corruption was detected after the\nfeature was merged in 2.6.37-rc1, and so it was turned\noff by adding a non-default mount option,\nmblk_io_submit.  With this commit, which hopefully\nfixes the last of the bugs with this feature, we\u0027ll be\nable to turn on this performance feature by default in\n2.6.38, and remove the mblk_io_submit option.)\n\nThe ext4 code path to bundle multiple pages for\nwriteback in ext4_bio_write_page() had a bug: we should\nbe clearing buffer head dirty flags *before* we submit\nthe bio, not in the completion routine.\n\nThe patch below was tested on 2.6.37 under KVM with the\npostgresql script which was submitted by Jon Nelson as\ndocumented in commit 1449032be1.\n\nWithout the patch, I\u0027d hit the corruption problem about\n50-70% of the time.  With the patch, I executed the\nscript \u003e 100 times with no corruption seen.\n\nI also fixed a bug to make sure ext4_end_bio() doesn\u0027t\ndereference the bio after the bio_put() call.\n\nReported-by: Jon Nelson \u003cjnelson@jamponi.net\u003e\nReported-by: Matthias Bayer \u003cjackdachef@gmail.com\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7270dcfca92a028d86f7e1cd6ca6bfe0e9d167ec",
      "old_mode": 33188,
      "old_path": "fs/ext4/page-io.c",
      "new_id": "4e9b0a242f4c8a53ce7f5d1c6817e74eebf35afc",
      "new_mode": 33188,
      "new_path": "fs/ext4/page-io.c"
    }
  ]
}
