summaryrefslogtreecommitdiffstats
path: root/fs/bad_inode.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-03-17 22:05:47 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-03-17 22:05:47 +0000
commit27cfca1ec98e91261b1a5355d10a8996464b63af (patch)
tree8e895a53e372fa682b4c0a585b9377d67ed70d0e /fs/bad_inode.c
parent6a76fb7214c477ccf6582bd79c5b4ccc4f9c41b1 (diff)
Look Ma' what I found on my harddisk ...
o New faster syscalls for 2.1.x, too o Upgrade to 2.1.89. Don't try to run this. It's flaky as hell. But feel free to debug ...
Diffstat (limited to 'fs/bad_inode.c')
-rw-r--r--fs/bad_inode.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/bad_inode.c b/fs/bad_inode.c
index 4d17002ab..71106655b 100644
--- a/fs/bad_inode.c
+++ b/fs/bad_inode.c
@@ -11,12 +11,14 @@
#include <linux/sched.h>
/*
- * The follow_symlink operation must dput() the base.
+ * The follow_link operation is special: it must behave as a no-op
+ * so that a bad root inode can at least be unmounted. To do this
+ * we must dput() the base and return the dentry with a dget().
*/
-static struct dentry * bad_follow_link(struct inode * ino, struct dentry *base)
+static struct dentry * bad_follow_link(struct dentry *dent, struct dentry *base)
{
dput(base);
- return ERR_PTR(-EIO);
+ return dget(dent);
}
static int return_EIO(void)
@@ -62,7 +64,9 @@ struct inode_operations bad_inode_ops =
EIO_ERROR, /* bmap */
EIO_ERROR, /* truncate */
EIO_ERROR, /* permission */
- EIO_ERROR /* smap */
+ EIO_ERROR, /* smap */
+ EIO_ERROR, /* update_page */
+ EIO_ERROR /* revalidate */
};