)]}'
{
  "commit": "ca572727dbb945e443564029a495157fd2e72995",
  "tree": "10486033a428e9389e32cbc78c0da34c644640a1",
  "parents": [
    "b4d878e23c7f574490ee4d6fd59ebd6819781dd1"
  ],
  "author": {
    "name": "jan Blunck",
    "email": "jblunck@suse.de",
    "time": "Wed May 26 14:44:53 2010 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu May 27 09:12:56 2010 -0700"
  },
  "message": "fs/: do not fallback to default_llseek() when readdir() uses BKL\n\nDo not use the fallback default_llseek() if the readdir operation of the\nfilesystem still uses the big kernel lock.\n\nSince llseek() modifies\nfile-\u003ef_pos of the directory directly it may need locking to not confuse\nreaddir which usually uses file-\u003ef_pos directly as well\n\nSince the special characteristics of the BKL (unlocked on schedule) are\nnot necessary in this case, the inode mutex can be used for locking as\nprovided by generic_file_llseek().  This is only possible since all\nfilesystems, except reiserfs, either use a directory as a flat file or\nwith disk address offsets.  Reiserfs on the other hand uses a 32bit hash\noff the filename as the offset so generic_file_llseek() can get used as\nwell since the hash is always smaller than sb-\u003es_maxbytes (\u003d (512 \u003c\u003c 32) -\nblocksize).\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Anders Larsen \u003cal@alarsen.net\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\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": "8713c7cfbc799efe1fa604df04dcbebe3966f225",
      "old_mode": 33188,
      "old_path": "fs/autofs/root.c",
      "new_id": "9a0520b50663b52f9508eb962bd3fbd92f55baa4",
      "new_mode": 33188,
      "new_path": "fs/autofs/root.c"
    },
    {
      "type": "modify",
      "old_id": "aee049cb9f84782640d365a90156f423d2a37b46",
      "old_mode": 33188,
      "old_path": "fs/freevxfs/vxfs_lookup.c",
      "new_id": "0ec7bb2c95c6afd035a9484b0a39347f9f8f61c1",
      "new_mode": 33188,
      "new_path": "fs/freevxfs/vxfs_lookup.c"
    },
    {
      "type": "modify",
      "old_id": "b9ab69b3a482ce86bcbefd9f7703d0079f516bce",
      "old_mode": 33188,
      "old_path": "fs/isofs/dir.c",
      "new_id": "e0aca9a0ac68b9f5a75764a570df2c3d0bd81a72",
      "new_mode": 33188,
      "new_path": "fs/isofs/dir.c"
    },
    {
      "type": "modify",
      "old_id": "92dde6f8d893b51a254e258dfd8942039a95ada6",
      "old_mode": 33188,
      "old_path": "fs/ncpfs/dir.c",
      "new_id": "9578cbe0cd589ad00ce590d60172c2433d16688e",
      "new_mode": 33188,
      "new_path": "fs/ncpfs/dir.c"
    },
    {
      "type": "modify",
      "old_id": "6f30c3d5bcbfbfe5923f3cccc3223c9c4d3bba68",
      "old_mode": 33188,
      "old_path": "fs/qnx4/dir.c",
      "new_id": "3d3fd46921336e7f6b2c73ffc93b64480d24167f",
      "new_mode": 33188,
      "new_path": "fs/qnx4/dir.c"
    },
    {
      "type": "modify",
      "old_id": "07930449a9583ebee29e5781c3e4dbf9f609aa6f",
      "old_mode": 33188,
      "old_path": "fs/reiserfs/dir.c",
      "new_id": "4455fbe269a31ae341d395b187b3ae5e1f462d10",
      "new_mode": 33188,
      "new_path": "fs/reiserfs/dir.c"
    },
    {
      "type": "modify",
      "old_id": "6c978428892d4de01c406a8abf3d7cc914fe8f5e",
      "old_mode": 33188,
      "old_path": "fs/smbfs/dir.c",
      "new_id": "00a70cab1f36ea7fc7bd96317d4bccdd8486a736",
      "new_mode": 33188,
      "new_path": "fs/smbfs/dir.c"
    },
    {
      "type": "modify",
      "old_id": "3a84455c2a7789ef624d7a03b1154b20dbb89d06",
      "old_mode": 33188,
      "old_path": "fs/udf/dir.c",
      "new_id": "1660c81ffa3d6df6dfc816441656279cdc4bcc32",
      "new_mode": 33188,
      "new_path": "fs/udf/dir.c"
    }
  ]
}
