Commit a2126997 authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] symlink 4/9: simple filesystems

cases that can simply reuse ext2 helpers (page_follow_link_light() and
page_put_link()).
parent ffc9a3c3
...@@ -78,7 +78,8 @@ struct address_space_operations affs_symlink_aops = { ...@@ -78,7 +78,8 @@ struct address_space_operations affs_symlink_aops = {
}; };
struct inode_operations affs_symlink_inode_operations = { struct inode_operations affs_symlink_inode_operations = {
.readlink = page_readlink, .readlink = generic_readlink,
.follow_link = page_follow_link, .follow_link = page_follow_link_light,
.put_link = page_put_link,
.setattr = affs_notify_change, .setattr = affs_notify_change,
}; };
...@@ -17,8 +17,9 @@ inline int coda_fideq(struct CodaFid *fid1, struct CodaFid *fid2) ...@@ -17,8 +17,9 @@ inline int coda_fideq(struct CodaFid *fid1, struct CodaFid *fid2)
} }
static struct inode_operations coda_symlink_inode_operations = { static struct inode_operations coda_symlink_inode_operations = {
.readlink = page_readlink, .readlink = generic_readlink,
.follow_link = page_follow_link, .follow_link = page_follow_link_light,
.put_link = page_put_link,
.setattr = coda_setattr, .setattr = coda_setattr,
}; };
......
...@@ -20,24 +20,20 @@ ...@@ -20,24 +20,20 @@
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/jbd.h> #include <linux/jbd.h>
#include <linux/ext3_fs.h> #include <linux/ext3_fs.h>
#include <linux/namei.h>
#include "xattr.h" #include "xattr.h"
static int
ext3_readlink(struct dentry *dentry, char __user *buffer, int buflen)
{
struct ext3_inode_info *ei = EXT3_I(dentry->d_inode);
return vfs_readlink(dentry, buffer, buflen, (char*)ei->i_data);
}
static int ext3_follow_link(struct dentry *dentry, struct nameidata *nd) static int ext3_follow_link(struct dentry *dentry, struct nameidata *nd)
{ {
struct ext3_inode_info *ei = EXT3_I(dentry->d_inode); struct ext3_inode_info *ei = EXT3_I(dentry->d_inode);
return vfs_follow_link(nd, (char*)ei->i_data); nd_set_link(nd, (char*)ei->i_data);
return 0;
} }
struct inode_operations ext3_symlink_inode_operations = { struct inode_operations ext3_symlink_inode_operations = {
.readlink = page_readlink, .readlink = generic_readlink,
.follow_link = page_follow_link, .follow_link = page_follow_link_light,
.put_link = page_put_link,
.setxattr = ext3_setxattr, .setxattr = ext3_setxattr,
.getxattr = ext3_getxattr, .getxattr = ext3_getxattr,
.listxattr = ext3_listxattr, .listxattr = ext3_listxattr,
...@@ -45,8 +41,8 @@ struct inode_operations ext3_symlink_inode_operations = { ...@@ -45,8 +41,8 @@ struct inode_operations ext3_symlink_inode_operations = {
}; };
struct inode_operations ext3_fast_symlink_inode_operations = { struct inode_operations ext3_fast_symlink_inode_operations = {
.readlink = ext3_readlink, /* BKL not held. Don't need */ .readlink = generic_readlink,
.follow_link = ext3_follow_link, /* BKL not held. Don't need */ .follow_link = ext3_follow_link,
.setxattr = ext3_setxattr, .setxattr = ext3_setxattr,
.getxattr = ext3_getxattr, .getxattr = ext3_getxattr,
.listxattr = ext3_listxattr, .listxattr = ext3_listxattr,
......
...@@ -343,8 +343,9 @@ static struct address_space_operations minix_aops = { ...@@ -343,8 +343,9 @@ static struct address_space_operations minix_aops = {
}; };
static struct inode_operations minix_symlink_inode_operations = { static struct inode_operations minix_symlink_inode_operations = {
.readlink = page_readlink, .readlink = generic_readlink,
.follow_link = page_follow_link, .follow_link = page_follow_link_light,
.put_link = page_put_link,
.getattr = minix_getattr, .getattr = minix_getattr,
}; };
......
...@@ -1389,8 +1389,9 @@ struct inode_operations reiserfs_dir_inode_operations = { ...@@ -1389,8 +1389,9 @@ struct inode_operations reiserfs_dir_inode_operations = {
* stuff added * stuff added
*/ */
struct inode_operations reiserfs_symlink_inode_operations = { struct inode_operations reiserfs_symlink_inode_operations = {
.readlink = page_readlink, .readlink = generic_readlink,
.follow_link = page_follow_link, .follow_link = page_follow_link_light,
.put_link = page_put_link,
.setattr = reiserfs_setattr, .setattr = reiserfs_setattr,
.setxattr = reiserfs_setxattr, .setxattr = reiserfs_setxattr,
.getxattr = reiserfs_getxattr, .getxattr = reiserfs_getxattr,
......
...@@ -142,8 +142,9 @@ static inline void write3byte(struct sysv_sb_info *sbi, ...@@ -142,8 +142,9 @@ static inline void write3byte(struct sysv_sb_info *sbi,
} }
static struct inode_operations sysv_symlink_inode_operations = { static struct inode_operations sysv_symlink_inode_operations = {
.readlink = page_readlink, .readlink = generic_readlink,
.follow_link = page_follow_link, .follow_link = page_follow_link_light,
.put_link = page_put_link,
.getattr = sysv_getattr, .getattr = sysv_getattr,
}; };
......
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