diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-06-17 13:25:08 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-06-17 13:25:08 +0000 |
commit | 59223edaa18759982db0a8aced0e77457d10c68e (patch) | |
tree | 89354903b01fa0a447bffeefe00df3044495db2e /fs/coda | |
parent | db7d4daea91e105e3859cf461d7e53b9b77454b2 (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.c | 18 | ||||
-rw-r--r-- | fs/coda/inode.c | 4 | ||||
-rw-r--r-- | fs/coda/psdev.c | 3 | ||||
-rw-r--r-- | fs/coda/upcall.c | 4 |
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; |