2006-10-11 12:20:50 +04:00
/*
2006-10-11 12:20:53 +04:00
* linux / fs / ext4 / symlink . c
2006-10-11 12:20:50 +04:00
*
* 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
*
2006-10-11 12:20:53 +04:00
* ext4 symlink handling code
2006-10-11 12:20:50 +04:00
*/
# include <linux/fs.h>
2006-10-11 12:21:01 +04:00
# include <linux/jbd2.h>
2006-10-11 12:20:50 +04:00
# include <linux/namei.h>
2008-04-30 02:13:32 +04:00
# include "ext4.h"
2006-10-11 12:20:50 +04:00
# include "xattr.h"
2006-10-11 12:20:53 +04:00
static void * ext4_follow_link ( struct dentry * dentry , struct nameidata * nd )
2006-10-11 12:20:50 +04:00
{
2006-10-11 12:20:53 +04:00
struct ext4_inode_info * ei = EXT4_I ( dentry - > d_inode ) ;
2006-10-11 12:20:50 +04:00
nd_set_link ( nd , ( char * ) ei - > i_data ) ;
return NULL ;
}
2007-02-12 11:55:38 +03:00
const struct inode_operations ext4_symlink_inode_operations = {
2006-10-11 12:20:50 +04:00
. readlink = generic_readlink ,
. follow_link = page_follow_link_light ,
. put_link = page_put_link ,
2006-10-11 12:20:53 +04:00
# ifdef CONFIG_EXT4DEV_FS_XATTR
2006-10-11 12:20:50 +04:00
. setxattr = generic_setxattr ,
. getxattr = generic_getxattr ,
2006-10-11 12:20:53 +04:00
. listxattr = ext4_listxattr ,
2006-10-11 12:20:50 +04:00
. removexattr = generic_removexattr ,
# endif
} ;
2007-02-12 11:55:38 +03:00
const struct inode_operations ext4_fast_symlink_inode_operations = {
2006-10-11 12:20:50 +04:00
. readlink = generic_readlink ,
2006-10-11 12:20:53 +04:00
. follow_link = ext4_follow_link ,
# ifdef CONFIG_EXT4DEV_FS_XATTR
2006-10-11 12:20:50 +04:00
. setxattr = generic_setxattr ,
. getxattr = generic_getxattr ,
2006-10-11 12:20:53 +04:00
. listxattr = ext4_listxattr ,
2006-10-11 12:20:50 +04:00
. removexattr = generic_removexattr ,
# endif
} ;