summaryrefslogtreecommitdiffstats
path: root/fs/isofs
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-23 00:40:54 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-23 00:40:54 +0000
commit529c593ece216e4aaffd36bd940cb94f1fa63129 (patch)
tree78f1c0b805f5656aa7b0417a043c5346f700a2cf /fs/isofs
parent0bd079751d25808d1972baee5c4eaa1db2227257 (diff)
Merge with 2.3.43. I did ignore all modifications to the qlogicisp.c
driver due to the Origin A64 hacks.
Diffstat (limited to 'fs/isofs')
-rw-r--r--fs/isofs/Makefile2
-rw-r--r--fs/isofs/dir.c26
-rw-r--r--fs/isofs/file.c30
-rw-r--r--fs/isofs/inode.c25
-rw-r--r--fs/isofs/rock.c6
-rw-r--r--fs/isofs/symlink.c27
6 files changed, 29 insertions, 87 deletions
diff --git a/fs/isofs/Makefile b/fs/isofs/Makefile
index 11c340284..2b2af2ade 100644
--- a/fs/isofs/Makefile
+++ b/fs/isofs/Makefile
@@ -8,7 +8,7 @@
# Note 2! The CFLAGS definitions are now in the main makefile.
O_TARGET := isofs.o
-O_OBJS := namei.o inode.o file.o dir.o util.o rock.o symlink.o
+O_OBJS := namei.o inode.o file.o dir.o util.o rock.o
ifdef CONFIG_JOLIET
O_OBJS += joliet.o
diff --git a/fs/isofs/dir.c b/fs/isofs/dir.c
index fb60d3a55..35f37a1bf 100644
--- a/fs/isofs/dir.c
+++ b/fs/isofs/dir.c
@@ -28,16 +28,7 @@ static int isofs_readdir(struct file *, void *, filldir_t);
static struct file_operations isofs_dir_operations =
{
- NULL, /* lseek - default */
- NULL, /* read */
- NULL, /* write - bad */
- isofs_readdir, /* readdir */
- NULL, /* poll - default */
- NULL, /* ioctl - default */
- NULL, /* no special open code */
- NULL, /* flush */
- NULL, /* no special release code */
- NULL /* fsync */
+ readdir: isofs_readdir,
};
/*
@@ -48,21 +39,6 @@ struct inode_operations isofs_dir_inode_operations =
&isofs_dir_operations, /* default directory file-ops */
NULL, /* create */
isofs_lookup, /* lookup */
- NULL, /* link */
- NULL, /* unlink */
- NULL, /* symlink */
- NULL, /* mkdir */
- NULL, /* rmdir */
- NULL, /* mknod */
- NULL, /* rename */
- NULL, /* readlink */
- NULL, /* follow_link */
- NULL, /* get_block */
- NULL, /* readpage */
- NULL, /* writepage */
- NULL, /* truncate */
- NULL, /* permission */
- NULL /* revalidate */
};
static int isofs_name_translate(char * old, int len, char * new)
diff --git a/fs/isofs/file.c b/fs/isofs/file.c
index b15b6c5dc..9de31e024 100644
--- a/fs/isofs/file.c
+++ b/fs/isofs/file.c
@@ -22,36 +22,10 @@
* the isofs filesystem.
*/
static struct file_operations isofs_file_operations = {
- NULL, /* lseek - default */
- generic_file_read, /* read */
- NULL, /* write */
- NULL, /* readdir - bad */
- NULL, /* poll - default */
- NULL, /* ioctl - default */
- generic_file_mmap, /* mmap */
- NULL, /* no special open is needed */
- NULL, /* flush */
- NULL, /* release */
- NULL /* fsync */
+ read: generic_file_read,
+ mmap: generic_file_mmap,
};
struct inode_operations isofs_file_inode_operations = {
&isofs_file_operations, /* default file operations */
- NULL, /* create */
- NULL, /* lookup */
- NULL, /* link */
- NULL, /* unlink */
- NULL, /* symlink */
- NULL, /* mkdir */
- NULL, /* rmdir */
- NULL, /* mknod */
- NULL, /* rename */
- NULL, /* readlink */
- NULL, /* follow_link */
- isofs_get_block, /* get_block */
- block_read_full_page, /* readpage */
- NULL, /* writepage */
- NULL, /* truncate */
- NULL, /* permission */
- NULL /* revalidate */
};
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index d14c18071..2c67d9e5a 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -1006,6 +1006,19 @@ int isofs_bmap(struct inode *inode, int block)
return 0;
}
+static int isofs_readpage(struct dentry *dentry, struct page *page)
+{
+ return block_read_full_page(page,isofs_get_block);
+}
+static int _isofs_bmap(struct address_space *mapping, long block)
+{
+ return generic_block_bmap(mapping,block,isofs_get_block);
+}
+static struct address_space_operations isofs_aops = {
+ readpage: isofs_readpage,
+ bmap: _isofs_bmap
+};
+
static void test_and_set_uid(uid_t *p, uid_t value)
{
if(value) {
@@ -1254,13 +1267,15 @@ static void isofs_read_inode(struct inode * inode)
} else
#endif IGNORE_WRONG_MULTI_VOLUME_SPECS
{
- if (S_ISREG(inode->i_mode))
+ if (S_ISREG(inode->i_mode)) {
inode->i_op = &isofs_file_inode_operations;
- else if (S_ISDIR(inode->i_mode))
+ inode->i_data.a_ops = &isofs_aops;
+ } else if (S_ISDIR(inode->i_mode))
inode->i_op = &isofs_dir_inode_operations;
- else if (S_ISLNK(inode->i_mode))
- inode->i_op = &isofs_symlink_inode_operations;
- else
+ else if (S_ISLNK(inode->i_mode)) {
+ inode->i_op = &page_symlink_inode_operations;
+ inode->i_data.a_ops = &isofs_symlink_aops;
+ } else
/* XXX - parse_rock_ridge_inode() had already set i_rdev. */
init_special_inode(inode, inode->i_mode, kdev_t_to_nr(inode->i_rdev));
}
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
index 814d90b3c..71be5edd1 100644
--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -445,7 +445,7 @@ static char *get_symlink_chunk(char *rpnt, struct rock_ridge *rr)
/* readpage() for symlinks: reads symlink contents into the page and either
makes it uptodate and returns 0 or returns error (-EIO) */
-int rock_ridge_symlink_readpage(struct dentry *dentry, struct page *page)
+static int rock_ridge_symlink_readpage(struct dentry *dentry, struct page *page)
{
struct inode *inode = dentry->d_inode;
char *link = (char*)kmap(page);
@@ -540,3 +540,7 @@ int rock_ridge_symlink_readpage(struct dentry *dentry, struct page *page)
UnlockPage(page);
return -EIO;
}
+
+struct address_space_operations isofs_symlink_aops = {
+ readpage: rock_ridge_symlink_readpage
+};
diff --git a/fs/isofs/symlink.c b/fs/isofs/symlink.c
deleted file mode 100644
index 219a4b9ac..000000000
--- a/fs/isofs/symlink.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * linux/fs/isofs/symlink.c
- *
- * (C) 1992 Eric Youngdale Modified for ISO 9660 filesystem.
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- *
- * isofs symlink handling code. This is only used with the Rock Ridge
- * extensions to iso9660
- */
-
-#include <linux/string.h>
-#include <linux/errno.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/iso_fs.h>
-#include <linux/stat.h>
-#include <linux/malloc.h>
-
-/*
- * symlinks can't do much...
- */
-struct inode_operations isofs_symlink_inode_operations = {
- readlink: page_readlink,
- follow_link: page_follow_link,
- readpage: rock_ridge_symlink_readpage
-};