summaryrefslogtreecommitdiffstats
path: root/fs/coda
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
commit59223edaa18759982db0a8aced0e77457d10c68e (patch)
tree89354903b01fa0a447bffeefe00df3044495db2e /fs/coda
parentdb7d4daea91e105e3859cf461d7e53b9b77454b2 (diff)
Merge with Linux 2.3.6. Sorry, this isn't tested on silicon, I don't
have a MIPS box at hand.
Diffstat (limited to 'fs/coda')
-rw-r--r--fs/coda/cnode.c18
-rw-r--r--fs/coda/inode.c4
-rw-r--r--fs/coda/psdev.c3
-rw-r--r--fs/coda/upcall.c4
4 files changed, 9 insertions, 20 deletions
diff --git a/fs/coda/cnode.c b/fs/coda/cnode.c
index 2a099d865..dd1e03f5f 100644
--- a/fs/coda/cnode.c
+++ b/fs/coda/cnode.c
@@ -3,6 +3,7 @@
*/
#include <linux/types.h>
+#include <linux/string.h>
#include <linux/time.h>
#include <linux/coda.h>
@@ -29,21 +30,8 @@ static void coda_fill_inode(struct inode *inode, struct coda_vattr *attr)
inode->i_op = &coda_dir_inode_operations;
else if (S_ISLNK(inode->i_mode))
inode->i_op = &coda_symlink_inode_operations;
- else if (S_ISCHR(inode->i_mode)) {
- inode->i_op = &chrdev_inode_operations;
- inode->i_rdev = to_kdev_t(attr->va_rdev);
- } else if (S_ISBLK(inode->i_mode)) {
- inode->i_op = &blkdev_inode_operations;
- inode->i_rdev = to_kdev_t(attr->va_rdev);
- } else if (S_ISFIFO(inode->i_mode))
- init_fifo(inode);
- else if (S_ISSOCK(inode->i_mode))
- inode->i_op = NULL;
- else {
- printk ("coda_fill_inode: what's this? i_mode = %o\n",
- inode->i_mode);
- inode->i_op = NULL;
- }
+ else
+ init_special_inode(inode, inode->i_mode, attr->va_rdev);
}
/* this is effectively coda_iget:
diff --git a/fs/coda/inode.c b/fs/coda/inode.c
index 55eed097a..49359f260 100644
--- a/fs/coda/inode.c
+++ b/fs/coda/inode.c
@@ -115,7 +115,7 @@ static struct super_block * coda_read_super(struct super_block *sb,
printk("coda_read_super: rootinode is %ld dev %d\n",
root->i_ino, root->i_dev);
sbi->sbi_root = root;
- sb->s_root = d_alloc_root(root, NULL);
+ sb->s_root = d_alloc_root(root);
unlock_super(sb);
EXIT;
return sb;
@@ -145,7 +145,7 @@ static void coda_put_super(struct super_block *sb)
sb->s_dev = 0;
coda_cache_clear_all(sb);
sb_info = coda_sbp(sb);
- sb_info->sbi_vcomm->vc_inuse = 0;
+/* sb_info->sbi_vcomm->vc_inuse = 0; You can not do this: psdev_release would see usagecount == 0 and would refuse to decrease MOD_USE_COUNT --pavel */
coda_super_info.sbi_sb = NULL;
printk("Coda: Bye bye.\n");
memset(sb_info, 0, sizeof(* sb_info));
diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c
index a252cb46b..abef74563 100644
--- a/fs/coda/psdev.c
+++ b/fs/coda/psdev.c
@@ -2,7 +2,7 @@
* An implementation of a loadable kernel mode driver providing
* multiple kernel/user space bidirectional communications links.
*
- * Author: Alan Cox <alan@cymru.net>
+ * Author: Alan Cox <alan@redhat.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -361,6 +361,7 @@ int init_coda_psdev(void)
}
memset(&coda_upc_comm, 0, sizeof(coda_upc_comm));
memset(&coda_super_info, 0, sizeof(coda_super_info));
+ init_waitqueue_head(&coda_upc_comm.vc_waitq);
coda_sysctl_init();
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c
index d3f0161a3..a0c1092b2 100644
--- a/fs/coda/upcall.c
+++ b/fs/coda/upcall.c
@@ -587,7 +587,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
static inline unsigned long coda_waitfor_upcall(struct upc_req *vmp)
{
- struct wait_queue wait = { current, NULL };
+ DECLARE_WAITQUEUE(wait, current);
unsigned long posttime;
vmp->uc_posttime = jiffies;
@@ -662,7 +662,7 @@ ENTRY;
req->uc_outSize = *outSize ? *outSize : inSize;
req->uc_opcode = ((union inputArgs *)buffer)->ih.opcode;
req->uc_unique = ++vcommp->vc_seq;
- req->uc_sleep = NULL;
+ init_waitqueue_head(&req->uc_sleep);
/* Fill in the common input args. */
((union inputArgs *)buffer)->ih.unique = req->uc_unique;