diff -ur linux-2.2.13-ext3-clean/fs/umsdos/README-WIP.txt linux-2.2.13-my/fs/umsdos/README-WIP.txt
--- linux-2.2.13-ext3-clean/fs/umsdos/README-WIP.txt	Sat Dec 18 09:13:51 1999
+++ linux-2.2.13-my/fs/umsdos/README-WIP.txt	Fri Aug 27 02:22:29 1999
@@ -11,6 +11,10 @@
 come and test it! See notes below for some more information, or if
 you are trying to use UMSDOS as root partition.
 
+Userland NOTE: new umsdos_progs (umssync, umssetup, udosctl & friends) that
+will compile and work on 2.2.x kernels and glibc based systems may be found
+at http://cvs.linux.hr/
+
 Legend: those lines marked with '+' on the beggining of line indicates it
 passed all of my tests, and performed perfect in all of them.
 
diff -ur linux-2.2.13-ext3-clean/fs/umsdos/inode.c linux-2.2.13-my/fs/umsdos/inode.c
--- linux-2.2.13-ext3-clean/fs/umsdos/inode.c	Sat Dec 18 09:13:51 1999
+++ linux-2.2.13-my/fs/umsdos/inode.c	Sat Dec 18 08:41:32 1999
@@ -168,7 +168,14 @@
 	} else if (S_ISBLK (inode->i_mode)) {
 		inode->i_op = &blkdev_inode_operations;
 	} else if (S_ISFIFO (inode->i_mode)) {
-		init_fifo (inode);
+	/* if someone is using FIFO, we must not reinitialize it, because
+	   we will destroy its locks, and sleep_on in fifo_open() will
+	   hardlock/oops our kernel! this started happening with
+	   patch-2.2.7. Why did it not happen before ? Maybe we were
+	   never called with i_count > 1 ?
+	*/
+		if (inode->i_count < 2)	
+			init_fifo (inode);
 	}
 }
 
@@ -349,7 +356,7 @@
 	if (!res)
 		goto out_fail;
 
-	printk (KERN_INFO "UMSDOS 0.85 "
+	printk (KERN_INFO "UMSDOS 0.85b "
 		"(compatibility level %d.%d, fast msdos)\n", 
 		UMSDOS_VERSION, UMSDOS_RELEASE);
 
diff -ur linux-2.2.13-ext3-clean/fs/umsdos/ioctl.c linux-2.2.13-my/fs/umsdos/ioctl.c
--- linux-2.2.13-ext3-clean/fs/umsdos/ioctl.c	Sat Sep 26 01:30:07 1998
+++ linux-2.2.13-my/fs/umsdos/ioctl.c	Mon Nov 22 21:17:22 1999
@@ -280,6 +280,8 @@
 old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
 new_dentry->d_parent->d_name.name, new_dentry->d_name.name);
 			ret = msdos_rename (dir, old_dentry, dir, new_dentry);
+			d_drop(new_dentry);
+			d_drop(old_dentry);
 			dput(new_dentry);
 		}
 		dput(old_dentry);
