diff options
Diffstat (limited to 'fs/exofs/symlink.c')
| -rw-r--r-- | fs/exofs/symlink.c | 57 | 
1 files changed, 57 insertions, 0 deletions
diff --git a/fs/exofs/symlink.c b/fs/exofs/symlink.c new file mode 100644 index 000000000000..36e2d7bc7f7b --- /dev/null +++ b/fs/exofs/symlink.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2005, 2006 + * Avishay Traeger (avishay@gmail.com) (avishay@il.ibm.com) + * Copyright (C) 2005, 2006 + * International Business Machines + * Copyright (C) 2008, 2009 + * Boaz Harrosh <bharrosh@panasas.com> + * + * Copyrights for code taken from ext2: + *     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/inode.c + *     Copyright (C) 1991, 1992  Linus Torvalds + * + * This file is part of exofs. + * + * exofs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation.  Since it is based on ext2, and the only + * valid version of GPL for the Linux kernel is version 2, the only valid + * version of GPL for exofs is version 2. + * + * exofs is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with exofs; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA + */ + +#include <linux/namei.h> + +#include "exofs.h" + +static void *exofs_follow_link(struct dentry *dentry, struct nameidata *nd) +{ +	struct exofs_i_info *oi = exofs_i(dentry->d_inode); + +	nd_set_link(nd, (char *)oi->i_data); +	return NULL; +} + +const struct inode_operations exofs_symlink_inode_operations = { +	.readlink	= generic_readlink, +	.follow_link	= page_follow_link_light, +	.put_link	= page_put_link, +}; + +const struct inode_operations exofs_fast_symlink_inode_operations = { +	.readlink	= generic_readlink, +	.follow_link	= exofs_follow_link, +};  |