)]}'
{
  "commit": "2c58d548f5706d085c4b009f6abb945220460632",
  "tree": "b263f432d3ad778b6970ebbb842bd0a577e88cdc",
  "parents": [
    "4c4f7c19b3c721aed418bc97907b411608c5c6a0"
  ],
  "author": {
    "name": "Eric Biggers",
    "email": "ebiggers@google.com",
    "time": "Wed Apr 10 13:21:15 2019 -0700"
  },
  "committer": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Wed Apr 17 12:43:29 2019 -0400"
  },
  "message": "fscrypt: cache decrypted symlink target in -\u003ei_link\n\nPath lookups that traverse encrypted symlink(s) are very slow because\neach encrypted symlink needs to be decrypted each time it\u0027s followed.\nThis also involves dropping out of rcu-walk mode.\n\nMake encrypted symlinks faster by caching the decrypted symlink target\nin -\u003ei_link.  The first call to fscrypt_get_symlink() sets it.  Then,\nthe existing VFS path lookup code uses the non-NULL -\u003ei_link to take the\nfast path where -\u003eget_link() isn\u0027t called, and lookups in rcu-walk mode\nremain in rcu-walk mode.\n\nAlso set -\u003ei_link immediately when a new encrypted symlink is created.\n\nTo safely free the symlink target after an RCU grace period has elapsed,\nintroduce a new function fscrypt_free_inode(), and make the relevant\nfilesystems call it just before actually freeing the inode.\n\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Eric Biggers \u003cebiggers@google.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "042d5b44f4ed9a23e2819adefa17681033fb99b4",
      "old_mode": 33188,
      "old_path": "fs/crypto/hooks.c",
      "new_id": "2dc22549d724d50299a458fbc1becb0247f5acce",
      "new_mode": 33188,
      "new_path": "fs/crypto/hooks.c"
    },
    {
      "type": "modify",
      "old_id": "bf291c10c682fc9df1bda4d00f71cbbe5957943e",
      "old_mode": 33188,
      "old_path": "fs/crypto/keyinfo.c",
      "new_id": "82989098b2fc97adb2783997adc0c7a7de67c0d5",
      "new_mode": 33188,
      "new_path": "fs/crypto/keyinfo.c"
    },
    {
      "type": "modify",
      "old_id": "6ed4eb81e67437dc2dddbbce8ae9f7f2b59681d1",
      "old_mode": 33188,
      "old_path": "fs/ext4/super.c",
      "new_id": "5b92054bf8ea0dd37f324401b37833f6bb6d3956",
      "new_mode": 33188,
      "new_path": "fs/ext4/super.c"
    },
    {
      "type": "modify",
      "old_id": "f2aaa2cc6b3e01e88a7aeea026cfaa97f73ae1de",
      "old_mode": 33188,
      "old_path": "fs/f2fs/super.c",
      "new_id": "11b3a039a18814f19743eb9ee550a7ef026fee34",
      "new_mode": 33188,
      "new_path": "fs/f2fs/super.c"
    },
    {
      "type": "modify",
      "old_id": "12628184772c04b27c975568101a4b5cddf442f8",
      "old_mode": 33188,
      "old_path": "fs/ubifs/super.c",
      "new_id": "19fd2109874577648e224d49a1022bf1cd3eeffa",
      "new_mode": 33188,
      "new_path": "fs/ubifs/super.c"
    },
    {
      "type": "modify",
      "old_id": "abe7081b6b22de38b9915e210bf2d10692486a15",
      "old_mode": 33188,
      "old_path": "include/linux/fscrypt.h",
      "new_id": "28c74e0a72310ea31792911a4c20c212ce0c1be8",
      "new_mode": 33188,
      "new_path": "include/linux/fscrypt.h"
    }
  ]
}
