)]}'
{
  "commit": "dccaf33fa37a1bc5d651baeb3bfeb6becb86597b",
  "tree": "ff41c9c0208589fded8176089380e316dd5c7965",
  "parents": [
    "9dd75f1f1a02d656a11a7b9b9e6c2759b9c1e946"
  ],
  "author": {
    "name": "Jiaying Zhang",
    "email": "jiayingz@google.com",
    "time": "Fri Aug 19 19:13:32 2011 -0400"
  },
  "committer": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Fri Aug 19 19:13:32 2011 -0400"
  },
  "message": "ext4: flush any pending end_io requests before DIO reads w/dioread_nolock\n\nThere is a race between ext4 buffer write and direct_IO read with\ndioread_nolock mount option enabled. The problem is that we clear\nPageWriteback flag during end_io time but will do\nuninitialized-to-initialized extent conversion later with dioread_nolock.\nIf an O_direct read request comes in during this period, ext4 will return\nzero instead of the recently written data.\n\nThis patch checks whether there are any pending uninitialized-to-initialized\nextent conversion requests before doing O_direct read to close the race.\nNote that this is just a bandaid fix. The fundamental issue is that we\nclear PageWriteback flag before we really complete an IO, which is\nproblem-prone. To fix the fundamental issue, we may need to implement an\nextent tree cache that we can use to look up pending to-be-converted extents.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b8602cde5b5af7d11f2fe3e62cc88661b8fc52b9",
      "old_mode": 33188,
      "old_path": "fs/ext4/indirect.c",
      "new_id": "0962642119c0475953fc70da38a5ed9bbea417a2",
      "new_mode": 33188,
      "new_path": "fs/ext4/indirect.c"
    }
  ]
}
