jfs: switch to simple_follow_link()
Reviewed-by: Jan Kara <jack@suse.cz> Acked-by: Dave Kleikamp <dave.kleikamp@oracle.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
2e03f3ea7a
commit
ad476fedc7
|
@ -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,
|
||||||
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,
|
||||||
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 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#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,
|
||||||
|
|
Loading…
Reference in New Issue