Line data Source code
1 : /*
2 : * linux/fs/ext2/symlink.c
3 : *
4 : * Only fast symlinks left here - the rest is done by generic code. AV, 1999
5 : *
6 : * Copyright (C) 1992, 1993, 1994, 1995
7 : * Remy Card (card@masi.ibp.fr)
8 : * Laboratoire MASI - Institut Blaise Pascal
9 : * Universite Pierre et Marie Curie (Paris VI)
10 : *
11 : * from
12 : *
13 : * linux/fs/minix/symlink.c
14 : *
15 : * Copyright (C) 1991, 1992 Linus Torvalds
16 : *
17 : * ext2 symlink handling code
18 : */
19 :
20 : #include "ext2.h"
21 : #include "xattr.h"
22 : #include <linux/namei.h>
23 :
24 : static void *ext2_follow_link(struct dentry *dentry, struct nameidata *nd)
25 : {
26 12 : struct ext2_inode_info *ei = EXT2_I(dentry->d_inode);
27 9 : nd_set_link(nd, (char *)ei->i_data);
28 3 : return NULL;
29 : }
30 :
31 1 : const struct inode_operations ext2_symlink_inode_operations = {
32 : .readlink = generic_readlink,
33 : .follow_link = page_follow_link_light,
34 : .put_link = page_put_link,
35 : #ifdef CONFIG_EXT2_FS_XATTR
36 : .setxattr = generic_setxattr,
37 : .getxattr = generic_getxattr,
38 : .listxattr = ext2_listxattr,
39 : .removexattr = generic_removexattr,
40 : #endif
41 : };
42 :
43 1 : const struct inode_operations ext2_fast_symlink_inode_operations = {
44 : .readlink = generic_readlink,
45 : .follow_link = ext2_follow_link,
46 : #ifdef CONFIG_EXT2_FS_XATTR
47 : .setxattr = generic_setxattr,
48 : .getxattr = generic_getxattr,
49 : .listxattr = ext2_listxattr,
50 : .removexattr = generic_removexattr,
51 : #endif
52 : };
|