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