diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/Makefile linux-2.4.0-my/fs/Makefile
--- linux-2.4.0-PRISTINE-RELEASE/fs/Makefile	Tue Jan  2 01:37:24 2001
+++ linux-2.4.0-my/fs/Makefile	Thu Jan 25 01:17:12 2001
@@ -32,6 +32,7 @@
 subdir-$(CONFIG_CODA_FS)	+= coda
 subdir-$(CONFIG_MINIX_FS)	+= minix
 subdir-$(CONFIG_FAT_FS)		+= fat
+subdir-$(CONFIG_UMSDOS_FS)	+= umsdos
 subdir-$(CONFIG_MSDOS_FS)	+= msdos
 subdir-$(CONFIG_VFAT_FS)	+= vfat
 subdir-$(CONFIG_BFS_FS)		+= bfs
@@ -42,7 +43,6 @@
 subdir-$(CONFIG_NFSD)		+= nfsd
 subdir-$(CONFIG_LOCKD)		+= lockd
 subdir-$(CONFIG_NLS)		+= nls
-subdir-$(CONFIG_UMSDOS_FS)	+= umsdos
 subdir-$(CONFIG_SYSV_FS)	+= sysv
 subdir-$(CONFIG_SMB_FS)		+= smbfs
 subdir-$(CONFIG_NCP_FS)		+= ncpfs
diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/super.c linux-2.4.0-my/fs/super.c
--- linux-2.4.0-PRISTINE-RELEASE/fs/super.c	Tue Jan  2 01:36:47 2001
+++ linux-2.4.0-my/fs/super.c	Thu Jan 25 14:38:56 2001
@@ -1613,6 +1613,19 @@
 		set_fs_pwd(current->fs, vfsmnt, sb->s_root);
 		if (bdev)
 			bdput(bdev); /* sb holds a reference */
+#if 1 /* umsdos kludge */
+	{
+	struct dentry *root;
+	printk ("/mn/ umsdos kludge: try to change root?\n");
+	root = lookup_one("linux", sb->s_root);
+	if (root) {
+		/* check_dentry_path (root, "kludged root"); */
+		set_fs_root (current->fs, vfsmnt, root);
+		set_fs_pwd (current->fs, vfsmnt, root);
+		printk ("kludged!\n");
+	}
+	}
+#endif
 		return;
 	}
 	panic("VFS: add_vfsmnt failed for root fs");
diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/README-WIP.txt linux-2.4.0-my/fs/umsdos/README-WIP.txt
--- linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/README-WIP.txt	Wed Aug  2 18:27:33 2000
+++ linux-2.4.0-my/fs/umsdos/README-WIP.txt	Thu Jan 25 14:40:02 2001
@@ -5,15 +5,11 @@
 There is no warning any more.
 Both read-only and read-write stuff is fixed, both in
 msdos-compatibile mode, and in umsdos EMD mode, and it seems stable.
-There are still few hardlink nuisances, but those are not fatal.
-
-I'd call it pre-release, and ask for as many people as possible to
-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/
+will compile and work on 2.2.x+ kernels and glibc based systems, as well as
+kernel patches and other umsdos related information may be found at
+http://linux.voyager.hr/umsdos/
 
 Also look at the quick-hack "homepage" for umsdos filesystem at 
 http://www.voyager.hr/~mnalis/umsdos
@@ -24,7 +20,7 @@
 Legend: those lines marked with '+' on the beggining of line indicates it
 passed all of my tests, and performed perfect in all of them.
 
-Current status (990202) - UMSDOS 0.85:
+Current status (010125) - UMSDOS 0.86j:
 
 (1) pure MSDOS (no --linux-.--- EMD file):
 
@@ -130,6 +126,4 @@
 I'm unfortunately somewhat out of time to read linux-kernel@vger, but I do
 check for messages having "UMSDOS" in the subject, and read them.  I might
 miss some in all that volume, though.  I should reply to any direct e-mail
-in few days.  If I don't, probably I never got your message.  You can try
-mnalis-umsdos@voyager.hr; however mnalis@jagor.srce.hr is preferable.
-
+in few days.  If I don't, probably I never got your message.
diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/dir.c linux-2.4.0-my/fs/umsdos/dir.c
--- linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/dir.c	Tue Jan  2 01:36:19 2001
+++ linux-2.4.0-my/fs/umsdos/dir.c	Thu Jan 25 01:13:32 2001
@@ -651,7 +651,7 @@
 	old_root = dget(current->fs->root);
 	read_unlock(&current->fs->lock);
 	spin_lock(&dcache_lock);
-	path = __d_path(dentry, NULL, dentry->d_sb->s_root, NULL, buffer, len);
+	path = __d_path(dentry, current->fs->rootmnt, dentry->d_sb->s_root, current->fs->rootmnt, buffer, len); /* FIXME: current->fs->rootmnt */
 	spin_unlock(&dcache_lock);
 
 	if (*path == '/')
diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/emd.c linux-2.4.0-my/fs/umsdos/emd.c
--- linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/emd.c	Tue Jan  2 01:36:19 2001
+++ linux-2.4.0-my/fs/umsdos/emd.c	Fri Jan 19 18:11:51 2001
@@ -137,6 +137,7 @@
 		printk (KERN_WARNING "Ignoring invalid EMD entry with size %d\n", entry->name_len);
 		p->name_len = 0; 
 		ret = -ENAMETOOLONG; /* notify umssync(8) code that something is wrong */
+		/* FIXME: does not work if we did 'ls -l' before 'udosctl uls' ?! */
 	}
 
 	recsize = umsdos_evalrecsize(p->name_len);
diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/inode.c linux-2.4.0-my/fs/umsdos/inode.c
--- linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/inode.c	Sat Nov  4 22:45:55 2000
+++ linux-2.4.0-my/fs/umsdos/inode.c	Thu Jan 25 01:25:22 2001
@@ -316,16 +316,16 @@
 	struct super_block *res;
 	struct dentry *new_root;
 
-	MSDOS_SB(sb)->options.isvfat = 0;
 	/*
 	 * Call msdos-fs to mount the disk.
 	 * Note: this returns res == sb or NULL
 	 */
 	res = msdos_read_super (sb, data, silent);
+
 	if (!res)
 		goto out_fail;
 
-	printk (KERN_INFO "UMSDOS 0.86i "
+	printk (KERN_INFO "UMSDOS 0.86j "
 		"(compatibility level %d.%d, fast msdos)\n", 
 		UMSDOS_VERSION, UMSDOS_RELEASE);
 
@@ -333,21 +333,25 @@
 	MSDOS_SB(sb)->options.dotsOK = 0;	/* disable hidden==dotfile */
 
 	/* install our dentry operations ... */
-	sb->s_root->d_op = &umsdos_dentry_operations;
+	sb->s_root->d_op = &umsdos_dentry_operations;	/* FIXME! what about msdos_dentry_operations ? */
+
 	umsdos_patch_dentry_inode(sb->s_root, 0);
 
+printk( "/mn/ check_pseudo_root?\n");
+
 	/* Check whether to change to the /linux root */
 	new_root = check_pseudo_root(sb);
 
+printk( "/mn/ is_new_root?\n"); 
+
 	if (new_root) {
+printk( "/mn/. OK. we have new_root\n");
 		/* sanity check */
 		if (new_root->d_op != &umsdos_dentry_operations)
 			printk("umsdos_read_super: pseudo-root wrong ops!\n");
 
 		pseudo_root = new_root->d_inode;
-
 		saved_root = sb->s_root;
-		sb->s_root = new_root;
 		printk(KERN_INFO "UMSDOS: changed to alternate root\n");
 	}
 	return sb;
@@ -379,8 +383,14 @@
 	 */
 	printk(KERN_INFO "check_pseudo_root: mounted as root\n");
 	root = lookup_one(UMSDOS_PSDROOT_NAME, sb->s_root); 
+printk ("/mn/ after lookup_one\n");
 	if (IS_ERR(root))
 		goto out_noroot;
+		
+printk ("/mn/ Found c:\\linux\n");
+	if (!root->d_inode)
+		goto out_dput;
+printk ("/mn/ c:\\linux has inode\n");		
 	if (!root->d_inode || !S_ISDIR(root->d_inode->i_mode))
 		goto out_dput;
 
@@ -390,11 +400,14 @@
 	sbin = lookup_one("sbin", root);
 	if (IS_ERR(sbin))
 		goto out_dput;
+printk ("/mn/ has /sbin\n");		
 	if (!sbin->d_inode || !S_ISDIR(sbin->d_inode->i_mode))
 		goto out_dput_sbin;
+printk ("/mn/ /sbin has inode\n");		
 	init = lookup_one("init", sbin);
 	if (IS_ERR(init))
 		goto out_dput_sbin;
+printk ("/mn/ has /sbin/init\n");		
 	if (!init->d_inode)
 		goto out_dput_init;
 	printk(KERN_INFO "check_pseudo_root: found %s/%s, enabling pseudo-root\n", init->d_parent->d_name.name, init->d_name.name);
@@ -410,6 +423,7 @@
 out_dput:
 	dput(root);
 out_noroot:
+printk ("/mn/ out_noroot\n");
 	return NULL;
 }
 
diff -ur linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/namei.c linux-2.4.0-my/fs/umsdos/namei.c
--- linux-2.4.0-PRISTINE-RELEASE/fs/umsdos/namei.c	Sun Aug 27 11:38:59 2000
+++ linux-2.4.0-my/fs/umsdos/namei.c	Sun Nov  5 02:09:13 2000
@@ -491,7 +491,7 @@
 		goto out;
 	}
 
-	len = strlen (symname);
+	len = strlen (symname)+1;
 	ret = block_symlink(dentry->d_inode, symname, len);
 	if (ret < 0)
 		goto out_unlink;
