11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21868f4aa5a4a72bbe0b7db6c1d4ee666824c3895Dave Kleikamp *   Copyright (C) Christoph Hellwig, 2001-2002
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   This program is free software;  you can redistribute it and/or modify
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   it under the terms of the GNU General Public License as published by
663f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp *   the Free Software Foundation; either version 2 of the License, or
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   (at your option) any later version.
863f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp *
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   This program is distributed in the hope that it will be useful,
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   the GNU General Public License for more details.
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   You should have received a copy of the GNU General Public License
1563f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp *   along with this program;  if not, write to the Free Software
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/fs.h>
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/namei.h>
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "jfs_incore.h"
221868f4aa5a4a72bbe0b7db6c1d4ee666824c3895Dave Kleikamp#include "jfs_inode.h"
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "jfs_xattr.h"
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
25008b150a3c4d971cd65d02d107b8fcc860bc959cAl Virostatic void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char *s = JFS_IP(dentry->d_inode)->i_inline;
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	nd_set_link(nd, s);
29008b150a3c4d971cd65d02d107b8fcc860bc959cAl Viro	return NULL;
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
32c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhovconst struct inode_operations jfs_fast_symlink_inode_operations = {
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.readlink	= generic_readlink,
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.follow_link	= jfs_follow_link,
35c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.setattr	= jfs_setattr,
36c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.setxattr	= jfs_setxattr,
37c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.getxattr	= jfs_getxattr,
38c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.listxattr	= jfs_listxattr,
39c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.removexattr	= jfs_removexattr,
40c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov};
41c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov
42c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhovconst struct inode_operations jfs_symlink_inode_operations = {
43c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.readlink	= generic_readlink,
44c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.follow_link	= page_follow_link_light,
45c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.put_link	= page_put_link,
46c7f2e1f0ac142a657a1de00d404e1c8345b20598Dmitry Monakhov	.setattr	= jfs_setattr,
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.setxattr	= jfs_setxattr,
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.getxattr	= jfs_getxattr,
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.listxattr	= jfs_listxattr,
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.removexattr	= jfs_removexattr,
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
53