diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-05-02 09:54:06 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-05-10 22:18:20 -0400 |
commit | 61ba64fc0768879a300599b011c176203bdf27d9 (patch) | |
tree | d04c61005dabd79e05edca9ed87c88c0a04905da /fs/libfs.c | |
parent | a7a67e8a089e25ef48ab01dd34ce82678ef70f11 (diff) | |
download | lwn-61ba64fc0768879a300599b011c176203bdf27d9.tar.gz lwn-61ba64fc0768879a300599b011c176203bdf27d9.zip |
libfs: simple_follow_link()
let "fast" symlinks store the pointer to the body into ->i_link and
use simple_follow_link for ->follow_link()
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/libfs.c')
-rw-r--r-- | fs/libfs.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/libfs.c b/fs/libfs.c index cb1fb4b9b637..72e4e015455f 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -1093,3 +1093,16 @@ simple_nosetlease(struct file *filp, long arg, struct file_lock **flp, return -EINVAL; } EXPORT_SYMBOL(simple_nosetlease); + +void *simple_follow_link(struct dentry *dentry, struct nameidata *nd) +{ + nd_set_link(nd, d_inode(dentry)->i_link); + return NULL; +} +EXPORT_SYMBOL(simple_follow_link); + +const struct inode_operations simple_symlink_inode_operations = { + .follow_link = simple_follow_link, + .readlink = generic_readlink +}; +EXPORT_SYMBOL(simple_symlink_inode_operations); |