summaryrefslogtreecommitdiffstats
path: root/fs/isofs/symlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/isofs/symlink.c')
-rw-r--r--fs/isofs/symlink.c67
1 files changed, 3 insertions, 64 deletions
diff --git a/fs/isofs/symlink.c b/fs/isofs/symlink.c
index e5a7a2c72..219a4b9ac 100644
--- a/fs/isofs/symlink.c
+++ b/fs/isofs/symlink.c
@@ -17,72 +17,11 @@
#include <linux/stat.h>
#include <linux/malloc.h>
-#include <asm/uaccess.h>
-
-static int isofs_readlink(struct dentry *, char *, int);
-static struct dentry * isofs_follow_link(struct dentry *, struct dentry *, unsigned int);
-
/*
* symlinks can't do much...
*/
struct inode_operations isofs_symlink_inode_operations = {
- NULL, /* no file-operations */
- NULL, /* create */
- NULL, /* lookup */
- NULL, /* link */
- NULL, /* unlink */
- NULL, /* symlink */
- NULL, /* mkdir */
- NULL, /* rmdir */
- NULL, /* mknod */
- NULL, /* rename */
- isofs_readlink, /* readlink */
- isofs_follow_link, /* follow_link */
- NULL, /* get_block */
- NULL, /* readpage */
- NULL, /* writepage */
- NULL, /* flushpage */
- NULL, /* truncate */
- NULL, /* permission */
- NULL, /* smap */
- NULL /* revalidate */
+ readlink: page_readlink,
+ follow_link: page_follow_link,
+ readpage: rock_ridge_symlink_readpage
};
-
-static int isofs_readlink(struct dentry * dentry, char * buffer, int buflen)
-{
- char * pnt;
- int i;
-
- if (buflen > 1023)
- buflen = 1023;
- pnt = get_rock_ridge_symlink(dentry->d_inode);
-
- if (!pnt)
- return 0;
-
- i = strlen(pnt);
- if (i > buflen)
- i = buflen;
- if (copy_to_user(buffer, pnt, i))
- i = -EFAULT;
- kfree(pnt);
- return i;
-}
-
-static struct dentry * isofs_follow_link(struct dentry * dentry,
- struct dentry *base,
- unsigned int follow)
-{
- char * pnt;
-
- pnt = get_rock_ridge_symlink(dentry->d_inode);
- if(!pnt) {
- dput(base);
- return ERR_PTR(-ELOOP);
- }
-
- base = lookup_dentry(pnt, base, follow);
-
- kfree(pnt);
- return base;
-}