diff -ur linux.orig/drivers/char/acquirewdt.c linux/drivers/char/acquirewdt.c
--- linux.orig/drivers/char/acquirewdt.c	Thu Oct 30 21:07:56 1997
+++ linux/drivers/char/acquirewdt.c	Thu Oct 30 20:37:44 1997
@@ -62,7 +62,7 @@
 	inb_p(WDT_START);
 }
 
-static long acq_write(struct inode *inode, struct file *file, const char *buf, unsigned long count)
+static ssize_t acq_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
 {
 	if(count)
 	{
@@ -72,7 +72,7 @@
 	return 0;
 }
 
-static long acq_read(struct inode *inode, struct file *file, char *buf, unsigned long count)
+static size_t acq_read(struct file *file, char *buf, size_t count, loff_t *ppos)
 {
 	return -EINVAL;
 }
diff -ur linux.orig/drivers/char/ftape/kernel-interface.c linux/drivers/char/ftape/kernel-interface.c
--- linux.orig/drivers/char/ftape/kernel-interface.c	Thu Oct 30 21:07:51 1997
+++ linux/drivers/char/ftape/kernel-interface.c	Thu Oct 30 20:38:34 1997
@@ -61,11 +61,11 @@
 static int ftape_open(struct inode *ino, struct file *filep);
 static int ftape_close(struct inode *ino, struct file *filep);
 static int ftape_ioctl(struct inode *ino, struct file *filep,
-		       unsigned int command, unsigned long arg);
-static long ftape_read(struct inode *ino, struct file *fp,
-		       char *buff, unsigned long req_len);
-static long ftape_write(struct inode *ino, struct file *fp,
-			const char *buff, unsigned long req_len);
+			unsigned int command, unsigned long arg);
+static ssize_t ftape_read(struct file *fp, char *buff,
+			size_t req_len, loff_t *ppos);
+static ssize_t ftape_write(struct file *fp, const char *buff,
+			size_t req_len, loff_t *ppos);
 
 static struct file_operations ftape_cdev =
 {
@@ -311,12 +311,13 @@
 
 /*      Read from tape device
  */
-static long ftape_read(struct inode *ino, struct file *fp,
-	char *buff, unsigned long req_len)
+static ssize_t ftape_read(struct file *fp, char *buff,
+			size_t req_len, loff_t *ppos)
 {
 	TRACE_FUN(5, "ftape_read");
 	int result = -EIO;
 	int old_sigmask;
+	struct inode * ino = fp->f_dentry->d_inode;
 
 	TRACEi(5, "called with count:", (int) req_len);
 	if (!busy_flag || MINOR(ino->i_rdev) != ftape_unit || ftape_failure) {
@@ -335,12 +336,13 @@
 
 /*      Write to tape device
  */
-static long ftape_write(struct inode *ino, struct file *fp,
-	const char *buff, unsigned long req_len)
+static ssize_t ftape_write(struct file *fp, const char *buff,
+			size_t req_len, loff_t *ppos)
 {
 	TRACE_FUN(8, "ftape_write");
 	int result = -EIO;
 	int old_sigmask;
+	struct inode * ino = fp->f_dentry->d_inode;
 
 	TRACEi(5, "called with count:", (int) req_len);
 	if (!busy_flag || MINOR(ino->i_rdev) != ftape_unit || ftape_failure) {
diff -ur linux.orig/drivers/char/nvram.c linux/drivers/char/nvram.c
--- linux.orig/drivers/char/nvram.c	Thu Oct 30 21:07:56 1997
+++ linux/drivers/char/nvram.c	Thu Oct 30 20:34:40 1997
@@ -211,7 +211,7 @@
  * The are the file operation function for user access to /dev/nvram
  */
 
-static long long nvram_llseek(struct file *file,loff_t offset, int origin )
+static long long nvram_llseek(struct file * file, loff_t offset, int origin)
 {
 	switch( origin ) {
 	  case 0:
@@ -227,8 +227,8 @@
 	return( (offset >= 0) ? (file->f_pos = offset) : -EINVAL );
 }
 
-static long nvram_read( struct inode * inode, struct file * file,
-						char * buf, unsigned long count )
+static ssize_t nvram_read(struct file * file, char * buf, size_t count,
+				loff_t * ppos)
 {
 	unsigned long flags;
 	unsigned i = file->f_pos;
@@ -250,8 +250,8 @@
 	return( tmp - buf );
 }
 
-static long nvram_write( struct inode * inode, struct file * file,
-						 const char * buf, unsigned long count )
+static ssize_t nvram_write(struct file * file, const char *buf,
+				size_t count, loff_t *ppos)
 {
 	unsigned long flags;
 	unsigned i = file->f_pos;
@@ -278,7 +278,7 @@
 }
 
 static int nvram_ioctl( struct inode *inode, struct file *file,
-						unsigned int cmd, unsigned long arg )
+			unsigned int cmd, unsigned long arg )
 {
 	unsigned long flags;
 	int i;
diff -ur linux.orig/drivers/char/softdog.c linux/drivers/char/softdog.c
--- linux.orig/drivers/char/softdog.c	Thu Oct 30 21:07:50 1997
+++ linux/drivers/char/softdog.c	Thu Oct 30 20:34:40 1997
@@ -113,7 +113,8 @@
 	return;
 }
 
-static long softdog_write(struct inode *inode, struct file *file, const char *data, unsigned long len)
+static ssize_t softdog_write(struct file *file, const char *buf,
+	size_t len, loff_t * ppos)
 {
 	/*
 	 *	Refresh the timer.
diff -ur linux.orig/drivers/char/wdt.c linux/drivers/char/wdt.c
--- linux.orig/drivers/char/wdt.c	Thu Oct 30 21:07:46 1997
+++ linux/drivers/char/wdt.c	Thu Oct 30 20:34:40 1997
@@ -169,7 +169,8 @@
 	outb_p(0, WDT_DC);
 }
 
-static long wdt_write(struct inode *inode, struct file *file, const char *buf, unsigned long count)
+static ssize_t wdt_write(struct file * file, const char * buf,
+		size_t count, loff_t * ppos)
 {
 	if(count)
 	{
@@ -183,11 +184,13 @@
  *	Read reports the temperature in farenheit
  */
  
-static long wdt_read(struct inode *inode, struct file *file, char *buf, unsigned long count)
+static ssize_t wdt_read(struct file * file, char * buf,
+			size_t count, loff_t * ppos)
 {
 	unsigned short c=inb_p(WDT_RT);
 	unsigned char cp;
 	int err;
+	struct inode * inode = file->f_dentry->d_inode;
 	
 	switch(MINOR(inode->i_rdev))
 	{
diff -ur linux.orig/drivers/scsi/README.ncr53c8xx linux/drivers/scsi/README.ncr53c8xx
--- linux.orig/drivers/scsi/README.ncr53c8xx	Thu Oct 30 21:08:01 1997
+++ linux/drivers/scsi/README.ncr53c8xx	Thu Oct 30 20:39:13 1997
@@ -4,7 +4,7 @@
 21 Rue Carnot
 95170 DEUIL LA BARRE - FRANCE
 
-23 August 1997
+4 October 1997
 ===============================================================================
 
 1.  Introduction
@@ -1216,8 +1216,14 @@
 controller set up
 
 00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00
-                   |     |                 |
-                   |     |                  -- host ID
+                   |     |           |     |
+                   |     |           |      -- host ID
+                   |     |           |
+                   |     |            --Removable Media Support
+                   |     |               0x00 = none
+                   |     |               0x01 = Bootable Device
+                   |     |               0x02 = All with Media
+                   |     |
                    |      --flag bits 2
                    |        0x00000001= scan order hi->low
                    |            (default 0x00 - scan low->hi)
@@ -1230,6 +1236,7 @@
 current set up for any of the controllers.
 
 default set up is identical for 53c810a and 53c875 NVRAM
+(Removable Media added Symbios BIOS version 4.09)
 -----------------------------------------------------------
 boot configuration
 
diff -ur linux.orig/drivers/scsi/ncr53c8xx.c linux/drivers/scsi/ncr53c8xx.c
--- linux.orig/drivers/scsi/ncr53c8xx.c	Thu Oct 30 21:08:00 1997
+++ linux/drivers/scsi/ncr53c8xx.c	Thu Oct 30 20:39:13 1997
@@ -67,7 +67,7 @@
 */
 
 /*
-**	20 September 1997, version 2.5c
+**	4 October 1997, version 2.5d
 **
 **	Supported SCSI-II features:
 **	    Synchronous negotiation
@@ -578,7 +578,8 @@
 	u_short	flags1;
 #define SYMBIOS_SCAN_HI_LO	(1)
 	u_short	word10;		/* 0x00 */
-	u_short	word12;		/* 0x00 */
+	u_short	flags3;		/* 0x00 */
+#define SYMBIOS_REMOVABLE_FLAGS	(3)		/* 0=none, 1=bootable, 2=all */
 	u_char	host_id;
 	u_char	byte15;		/* 0x04 */
 	u_short	word16;		/* 0x0410 */
@@ -5618,10 +5619,12 @@
 	**	Check the status.
 	*/
 	if (   (cp->host_status == HS_COMPLETE)
-		&& (cp->scsi_status == S_GOOD)) {
-
+		&& (cp->scsi_status == S_GOOD ||
+		    cp->scsi_status == S_COND_MET)) {
 		/*
-		**	All went well.
+		**	All went well (GOOD status).
+		**	CONDITION MET status is returned on 
+		**	`Pre-Fetch' or `Search data' success.
 		*/
 		cmd->result = ScsiResult(DID_OK, cp->scsi_status);
 
@@ -5716,7 +5719,8 @@
 		}
 
 	} else if ((cp->host_status == HS_COMPLETE)
-		&& (cp->scsi_status == S_BUSY)) {
+		&& (cp->scsi_status == S_BUSY ||
+		    cp->scsi_status == S_CONFLICT)) {
 
 		/*
 		**   Target is busy.
@@ -9281,10 +9285,10 @@
 		command |= PCI_COMMAND_MASTER|PCI_COMMAND_IO|PCI_COMMAND_MEMORY;
 		pcibios_write_config_word(bus, device_fn, PCI_COMMAND, command);
 	}
-       if (io_port >= 0x10000000) {
+	if (io_port >= 0x10000000) {
 		io_port = (io_port & 0x00FFFFFF) | 0x01000000;
 		pcibios_write_config_dword(bus, device_fn, PCI_BASE_ADDRESS_0, io_port);
-       }
+	}
 	if (base >= 0x10000000) {
 		base = (base & 0x00FFFFFF) | 0x01000000;
 		pcibios_write_config_dword(bus, device_fn, PCI_BASE_ADDRESS_1, base);
diff -ur linux.orig/drivers/scsi/ncr53c8xx.h linux/drivers/scsi/ncr53c8xx.h
--- linux.orig/drivers/scsi/ncr53c8xx.h	Thu Oct 30 21:08:00 1997
+++ linux/drivers/scsi/ncr53c8xx.h	Thu Oct 30 20:39:13 1997
@@ -45,7 +45,7 @@
 /*
 **	Name and revision of the driver
 */
-#define SCSI_NCR_DRIVER_NAME		"ncr53c8xx - revision 2.5c"
+#define SCSI_NCR_DRIVER_NAME		"ncr53c8xx - revision 2.5d"
 
 /*
 **	Check supported Linux versions
diff -ur linux.orig/fs/dcache.c linux/fs/dcache.c
--- linux.orig/fs/dcache.c	Thu Oct 30 21:07:04 1997
+++ linux/fs/dcache.c	Thu Oct 30 20:44:12 1997
@@ -19,7 +19,7 @@
 #include <linux/malloc.h>
 #include <linux/init.h>
 
-#define DCACHE_PARANOIA 1
+/* #define DCACHE_PARANOIA 1 */
 /* #define DCACHE_DEBUG 1 */
 
 /* For managing the dcache */
diff -ur linux.orig/fs/filesystems.c linux/fs/filesystems.c
--- linux.orig/fs/filesystems.c	Thu Oct 30 21:07:03 1997
+++ linux/fs/filesystems.c	Thu Oct 30 20:40:23 1997
@@ -16,6 +16,7 @@
 #include <linux/proc_fs.h>
 #include <linux/nfs_fs.h>
 #include <linux/iso_fs.h>
+#include <linux/nls.h>
 #include <linux/sysv_fs.h>
 #include <linux/hpfs_fs.h>
 #include <linux/smb_fs.h>
diff -ur linux.orig/fs/nfs/file.c linux/fs/nfs/file.c
--- linux.orig/fs/nfs/file.c	Thu Oct 30 21:07:03 1997
+++ linux/fs/nfs/file.c	Thu Oct 30 20:43:26 1997
@@ -103,8 +103,9 @@
 	int	status;
 
 	dfprintk(VFS, "nfs: read(%x/%ld, %lu@%lu)\n",
-			inode->i_dev, inode->i_ino, count,
-			(unsigned long) *ppos);
+			inode->i_dev, inode->i_ino,
+			(long unsigned) count,
+			(long unsigned) *ppos);
 
 	if ((status = nfs_revalidate_inode(NFS_SERVER(inode), inode)) < 0)
 		return status;
@@ -143,7 +144,8 @@
 
 	dfprintk(VFS, "nfs: write(%x/%ld (%d), %lu@%lu)\n",
 			inode->i_dev, inode->i_ino, inode->i_count,
-			count, (unsigned long) *ppos);
+			(long unsigned) count,
+			(long unsigned) *ppos);
 
 	if (!inode) {
 		printk("nfs_file_write: inode = NULL\n");
diff -ur linux.orig/fs/sysv/dir.c linux/fs/sysv/dir.c
--- linux.orig/fs/sysv/dir.c	Thu Oct 30 21:07:04 1997
+++ linux/fs/sysv/dir.c	Thu Oct 30 20:46:11 1997
@@ -47,22 +47,23 @@
  */
 struct inode_operations sysv_dir_inode_operations = {
 	&sysv_dir_operations,	/* default directory file-ops */
-	sysv_create,		/* create */
-	sysv_lookup,		/* lookup */
-	sysv_link,		/* link */
-	sysv_unlink,		/* unlink */
-	sysv_symlink,		/* symlink */
-	sysv_mkdir,		/* mkdir */
-	sysv_rmdir,		/* rmdir */
-	sysv_mknod,		/* mknod */
-	sysv_rename,		/* rename */
+	NULL,			/* create */
+	NULL,			/* lookup */
+	NULL,			/* link */
+	NULL,			/* unlink */
+	NULL,			/* symlink */
+	NULL,			/* mkdir */
+	NULL,			/* rmdir */
+	NULL,			/* mknod */
+	NULL,			/* rename */
 	NULL,			/* readlink */
 	NULL,			/* follow_link */
 	NULL,			/* readpage */
 	NULL,			/* writepage */
 	NULL,			/* bmap */
 	sysv_truncate,		/* truncate */
-	NULL			/* permission */
+	NULL,			/* permission */
+	NULL			/* smap */
 };
 
 static int sysv_readdir(struct file * filp, void * dirent, filldir_t filldir)
diff -ur linux.orig/net/netlink.c linux/net/netlink.c
--- linux.orig/net/netlink.c	Thu Oct 30 21:07:29 1997
+++ linux/net/netlink.c	Thu Oct 30 21:34:59 1997
@@ -80,11 +80,12 @@
 /*
  *	Write a message to the kernel side of a communication link
  */
- 
-static long netlink_write(struct inode * inode, struct file * file,
-			  const char * buf, unsigned long count)
+
+static ssize_t netlink_write(struct file * file, const char * buf,
+                             size_t count, loff_t *ppos) 
 {
-	int err; 
+	int err;
+	struct inode * inode = file->f_dentry->d_inode;
 	unsigned int minor = MINOR(inode->i_rdev);
 	struct sk_buff *skb;
 	skb=alloc_skb(count, GFP_KERNEL);
@@ -96,10 +97,11 @@
  *	Read a message from the kernel side of the communication link
  */
 
-static long netlink_read(struct inode * inode, struct file * file, char * buf,
-			 unsigned long count)
+static ssize_t netlink_read(struct file * file, char * buf,
+                            size_t count, loff_t *ppos)
 {
-	int err; 
+	int err;
+	struct inode * inode = file->f_dentry->d_inode;
 	unsigned int minor = MINOR(inode->i_rdev);
 	struct sk_buff *skb;
 	cli();
