)]}'
{
  "commit": "8df9675f8b498d0bfa1f0b5b06f56bf1ff366dd5",
  "tree": "38fd56a82049f50b4d774af47b9d39f116071755",
  "parents": [
    "9ca92389c5312a51e819c15c762f0abdc7f3129b"
  ],
  "author": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Fri May 01 08:50:38 2009 -0400"
  },
  "committer": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Fri May 01 08:50:38 2009 -0400"
  },
  "message": "ext4: Avoid races caused by on-line resizing and SMP memory reordering\n\nExt4\u0027s on-line resizing adds a new block group and then, only at the\nlast step adjusts s_groups_count.  However, it\u0027s possible on SMP\nsystems that another CPU could see the updated the s_group_count and\nnot see the newly initialized data structures for the just-added block\ngroup.  For this reason, it\u0027s important to insert a SMP read barrier\nafter reading s_groups_count and before reading any (for example) the\nnew block group descriptors allowed by the increased value of\ns_groups_count.\n\nUnfortunately, we rather blatently violate this locking protocol\ndocumented in fs/ext4/resize.c.  Fortunately, (1) on-line resizes\nhappen relatively rarely, and (2) it seems rare that the filesystem\ncode will immediately try to use just-added block group before any\nmemory ordering issues resolve themselves.  So apparently problems\nhere are relatively hard to hit, since ext3 has been vulnerable to the\nsame issue for years with no one apparently complaining.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "53c72ad85877314c16c0eef0f19fb3889a6743da",
      "old_mode": 33188,
      "old_path": "fs/ext4/balloc.c",
      "new_id": "a5ba039850c5ed842b40aa40a1bc78f2d97d2239",
      "new_mode": 33188,
      "new_path": "fs/ext4/balloc.c"
    },
    {
      "type": "modify",
      "old_id": "d0f15ef56de1b1b6b325d0a86207e78260b1f40a",
      "old_mode": 33188,
      "old_path": "fs/ext4/ext4.h",
      "new_id": "02ec44bf38e60afa6c5ecbdc542cf7b6b5f3b385",
      "new_mode": 33188,
      "new_path": "fs/ext4/ext4.h"
    },
    {
      "type": "modify",
      "old_id": "f18e0a08a6b5080cf4b788a06c98abc59c8aca34",
      "old_mode": 33188,
      "old_path": "fs/ext4/ialloc.c",
      "new_id": "55ba419ca00bcd4cc3bf03781e3a4e9f23135406",
      "new_mode": 33188,
      "new_path": "fs/ext4/ialloc.c"
    },
    {
      "type": "modify",
      "old_id": "96f3366f59f6ee7c179f4dfc579577c6a58aabc4",
      "old_mode": 33188,
      "old_path": "fs/ext4/inode.c",
      "new_id": "4e7f363e3030a1b3f062b4c9b1068371324e7b6a",
      "new_mode": 33188,
      "new_path": "fs/ext4/inode.c"
    },
    {
      "type": "modify",
      "old_id": "f871677a798499c4327629cf282d4f75b38d44b3",
      "old_mode": 33188,
      "old_path": "fs/ext4/mballoc.c",
      "new_id": "c3af9e6b666833b6a7a66e2ebf1925836d9bf318",
      "new_mode": 33188,
      "new_path": "fs/ext4/mballoc.c"
    },
    {
      "type": "modify",
      "old_id": "68c3a44c4a970e5da4fcdddcc04028b32dac1bed",
      "old_mode": 33188,
      "old_path": "fs/ext4/super.c",
      "new_id": "fcd7b24c6df37a3f0b67a7936cced18a26b652ff",
      "new_mode": 33188,
      "new_path": "fs/ext4/super.c"
    }
  ]
}
