Commit ad476fed authored by Al Viro's avatar Al Viro

jfs: switch to simple_follow_link()

Reviewed-by: default avatarJan Kara <jack@suse.cz>
Acked-by: default avatarDave Kleikamp <dave.kleikamp@oracle.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2e03f3ea
...@@ -63,11 +63,12 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino) ...@@ -63,11 +63,12 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
inode->i_mapping->a_ops = &jfs_aops; inode->i_mapping->a_ops = &jfs_aops;
} else { } else {
inode->i_op = &jfs_fast_symlink_inode_operations; inode->i_op = &jfs_fast_symlink_inode_operations;
inode->i_link = JFS_IP(inode)->i_inline;
/* /*
* The inline data should be null-terminated, but * The inline data should be null-terminated, but
* don't let on-disk corruption crash the kernel * don't let on-disk corruption crash the kernel
*/ */
JFS_IP(inode)->i_inline[inode->i_size] = '\0'; inode->i_link[inode->i_size] = '\0';
} }
} else { } else {
inode->i_op = &jfs_file_inode_operations; inode->i_op = &jfs_file_inode_operations;
......
...@@ -880,7 +880,6 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, ...@@ -880,7 +880,6 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
int ssize; /* source pathname size */ int ssize; /* source pathname size */
struct btstack btstack; struct btstack btstack;
struct inode *ip = d_inode(dentry); struct inode *ip = d_inode(dentry);
unchar *i_fastsymlink;
s64 xlen = 0; s64 xlen = 0;
int bmask = 0, xsize; int bmask = 0, xsize;
s64 xaddr; s64 xaddr;
...@@ -946,8 +945,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, ...@@ -946,8 +945,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
if (ssize <= IDATASIZE) { if (ssize <= IDATASIZE) {
ip->i_op = &jfs_fast_symlink_inode_operations; ip->i_op = &jfs_fast_symlink_inode_operations;
i_fastsymlink = JFS_IP(ip)->i_inline; ip->i_link = JFS_IP(ip)->i_inline;
memcpy(i_fastsymlink, name, ssize); memcpy(ip->i_link, name, ssize);
ip->i_size = ssize - 1; ip->i_size = ssize - 1;
/* /*
......
...@@ -17,21 +17,13 @@ ...@@ -17,21 +17,13 @@
*/ */
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/namei.h>
#include "jfs_incore.h" #include "jfs_incore.h"
#include "jfs_inode.h" #include "jfs_inode.h"
#include "jfs_xattr.h" #include "jfs_xattr.h"
static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
{
char *s = JFS_IP(d_inode(dentry))->i_inline;
nd_set_link(nd, s);
return NULL;
}
const struct inode_operations jfs_fast_symlink_inode_operations = { const struct inode_operations jfs_fast_symlink_inode_operations = {
.readlink = generic_readlink, .readlink = generic_readlink,
.follow_link = jfs_follow_link, .follow_link = simple_follow_link,
.setattr = jfs_setattr, .setattr = jfs_setattr,
.setxattr = jfs_setxattr, .setxattr = jfs_setxattr,
.getxattr = jfs_getxattr, .getxattr = jfs_getxattr,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment