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