2005-04-17 02:20:36 +04:00
/*
* linux / fs / ext2 / symlink . c
*
* Only fast symlinks left here - the rest is done by generic code . AV , 1999
*
* Copyright ( C ) 1992 , 1993 , 1994 , 1995
* Remy Card ( card @ masi . ibp . fr )
* Laboratoire MASI - Institut Blaise Pascal
* Universite Pierre et Marie Curie ( Paris VI )
*
* from
*
* linux / fs / minix / symlink . c
*
* Copyright ( C ) 1991 , 1992 Linus Torvalds
*
* ext2 symlink handling code
*/
# include "ext2.h"
# include "xattr.h"
# include <linux/namei.h>
2005-08-20 05:02:56 +04:00
static void * ext2_follow_link ( struct dentry * dentry , struct nameidata * nd )
2005-04-17 02:20:36 +04:00
{
struct ext2_inode_info * ei = EXT2_I ( dentry - > d_inode ) ;
nd_set_link ( nd , ( char * ) ei - > i_data ) ;
2005-08-20 05:02:56 +04:00
return NULL ;
2005-04-17 02:20:36 +04:00
}
2007-02-12 11:55:38 +03:00
const struct inode_operations ext2_symlink_inode_operations = {
2005-04-17 02:20:36 +04:00
. readlink = generic_readlink ,
. follow_link = page_follow_link_light ,
. put_link = page_put_link ,
2010-03-26 19:29:54 +03:00
. setattr = ext2_setattr ,
2005-04-17 02:20:36 +04:00
# ifdef CONFIG_EXT2_FS_XATTR
. setxattr = generic_setxattr ,
. getxattr = generic_getxattr ,
. listxattr = ext2_listxattr ,
. removexattr = generic_removexattr ,
# endif
} ;
2007-02-12 11:55:38 +03:00
const struct inode_operations ext2_fast_symlink_inode_operations = {
2005-04-17 02:20:36 +04:00
. readlink = generic_readlink ,
. follow_link = ext2_follow_link ,
2010-03-26 19:29:54 +03:00
. setattr = ext2_setattr ,
2005-04-17 02:20:36 +04:00
# ifdef CONFIG_EXT2_FS_XATTR
. setxattr = generic_setxattr ,
. getxattr = generic_getxattr ,
. listxattr = ext2_listxattr ,
. removexattr = generic_removexattr ,
# endif
} ;