On Wed, Apr 10, 2019 at 01:21:15PM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > Path lookups that traverse encrypted symlink(s) are very slow because > each encrypted symlink needs to be decrypted each time it's followed. > This also involves dropping out of rcu-walk mode. > > Make encrypted symlinks faster by caching the decrypted symlink target > in ->i_link. The first call to fscrypt_get_symlink() sets it. Then, > the existing VFS path lookup code uses the non-NULL ->i_link to take the > fast path where ->get_link() isn't called, and lookups in rcu-walk mode > remain in rcu-walk mode. > > Also set ->i_link immediately when a new encrypted symlink is created. > > To safely free the symlink target after an RCU grace period has elapsed, > introduce a new function fscrypt_free_inode(), and make the relevant > filesystems call it just before actually freeing the inode. > > Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> Looks good, applied. - Ted