diff -urN -X dontdiff linux/Documentation/Configure.help 2325-bfs/Documentation/Configure.help
--- linux/Documentation/Configure.help	Fri Oct 29 21:19:49 1999
+++ 2325-bfs/Documentation/Configure.help	Wed Nov  3 12:05:45 1999
@@ -7970,14 +7970,16 @@
   compiled as a module, and so this could be dangerous. Most everyone
   wants to say Y here.
 
-SCO UnixWare BFS Support
+SCO UnixWare BFS Support (EXPERIMENTAL)
 CONFIG_BFS_FS
   Boot Filesystem (BFS) is a filesystem used under SCO UnixWare to
   allow bootloader access the kernel image and other important files
   during the boot process. It is usually mounted under /stand and
   corresponds to the slice marked as "STAND" in the UnixWare
   partition. This is useful if you want to access files on your /stand
-  slice from Linux. If you don't know what it is, say N.
+  slice from Linux. More information on this filesystem can be found in
+  Documentation/filesystems/bfs.txt file. If you do not know what it is, 
+  say N.
 
   If you want to compile this as a module ( = code which can be
   inserted in and removed from the running kernel whenever you want),
diff -urN -X dontdiff linux/Documentation/filesystems/bfs.txt 2325-bfs/Documentation/filesystems/bfs.txt
--- linux/Documentation/filesystems/bfs.txt	Thu Oct 28 22:45:16 1999
+++ 2325-bfs/Documentation/filesystems/bfs.txt	Wed Nov  3 12:09:54 1999
@@ -1,8 +1,13 @@
 The BFS filesystem is used on SCO UnixWare machines for /stand slice.
-There are no special mount options supported by bfs at this time. 
-You can mount it only read-only at this stage. Even if you attempt to
-mount it read-write it will be automatically mounted read-only, unless
-you have enabled "BFS write support" when configuring the kernel.
+By default, if you attempt to mount it read-write it will be automatically
+mounted read-only. If you want to enable (limited) write support, you need
+to select "BFS write support" when configuring the kernel. The write support
+at this stage is limited to the blocks preallocated for a given inode.
+This means that writes beyond the value of inode->iu_eblock will fail with EIO.
+In particular, this means you can create empty files but not write data to them
+or you can write data to the existing files and increase their size but not the
+number of blocks allocated to them. I am currently working on removing this
+limitation, i.e. ability to migrate inodes within BFS filesystem.
 
 In order to access /stand partition under Linux you obviously need to
 know the partition number and the kernel must support UnixWare disk slices
diff -urN -X dontdiff linux/fs/Config.in 2325-bfs/fs/Config.in
--- linux/fs/Config.in	Thu Oct 28 22:45:16 1999
+++ 2325-bfs/fs/Config.in	Tue Nov  2 15:49:20 1999
@@ -14,6 +14,12 @@
 tristate 'Amiga FFS filesystem support' CONFIG_AFFS_FS
 tristate 'Apple Macintosh filesystem support (EXPERIMENTAL)' CONFIG_HFS_FS
 # msdos filesystems
+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+   tristate 'BFS filesystem (read only) support (EXPERIMENTAL)' CONFIG_BFS_FS
+   if [ "$CONFIG_BFS_FS" != "n" ]; then
+      bool '  BFS filesystem write support (DANGEROUS)' CONFIG_BFS_FS_WRITE
+   fi
+fi
 tristate 'DOS FAT fs support' CONFIG_FAT_FS
 dep_tristate '  MSDOS fs support' CONFIG_MSDOS_FS $CONFIG_FAT_FS
 dep_tristate '  UMSDOS: Unix-like filesystem on top of standard MSDOS filesystem' CONFIG_UMSDOS_FS $CONFIG_MSDOS_FS
@@ -58,12 +64,6 @@
 fi
 tristate 'ROM filesystem support' CONFIG_ROMFS_FS
 tristate 'Second extended fs support' CONFIG_EXT2_FS
-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-   tristate 'BFS filesystem (read only) support (EXPERIMENTAL)' CONFIG_BFS_FS
-   if [ "$CONFIG_BFS_FS" != "n" ]; then
-      bool '  BFS filesystem write support (DANGEROUS)' CONFIG_BFS_FS_WRITE
-   fi
-fi
 tristate 'System V and Coherent filesystem support' CONFIG_SYSV_FS
 if [ "$CONFIG_SYSV_FS" != "n" -a "$CONFIG_EXPERIMENTAL" = "y" ]; then
    bool '  SYSV filesystem write support (DANGEROUS)' CONFIG_SYSV_FS_WRITE
diff -urN -X dontdiff linux/fs/bfs/dir.c 2325-bfs/fs/bfs/dir.c
--- linux/fs/bfs/dir.c	Fri Oct 29 19:05:08 1999
+++ 2325-bfs/fs/bfs/dir.c	Tue Nov  2 15:48:25 1999
@@ -51,7 +51,7 @@
 
 	while (f->f_pos < dir->i_size) {
 		offset = f->f_pos & (BFS_BSIZE-1);
-		block = dir->iu_sblock + f->f_pos/BFS_BSIZE;
+		block = dir->iu_sblock + (f->f_pos >> BFS_BSIZE_BITS);
 		bh = bread(dev, block, BFS_BSIZE);
 		if (!bh) {
 			f->f_pos += BFS_BSIZE - offset;
diff -urN -X dontdiff linux/fs/bfs/file.c 2325-bfs/fs/bfs/file.c
--- linux/fs/bfs/file.c	Thu Oct 28 22:45:16 1999
+++ 2325-bfs/fs/bfs/file.c	Wed Nov  3 13:43:43 1999
@@ -41,14 +41,14 @@
 static int bfs_get_block(struct inode * inode, long block, 
 	struct buffer_head * bh_result, int create)
 {
-	if (!create) {
+	long phys = inode->iu_sblock + block;
+	if (!create || phys <= inode->iu_eblock) {
 		bh_result->b_dev = inode->i_dev;
-		bh_result->b_blocknr = inode->iu_sblock + block;
+		bh_result->b_blocknr = phys;
 		bh_result->b_state |= (1UL << BH_Mapped);
 		return 0;
-	} else 
-		DBG(KERN_ERR "BFS-fs: %s(create=%d) impossible!\n", 
-			__FUNCTION__, create);
+	} 
+	/* no support for file migration, working on it */
 	return -EIO;
 }
 
diff -urN -X dontdiff linux/fs/bfs/inode.c 2325-bfs/fs/bfs/inode.c
--- linux/fs/bfs/inode.c	Fri Oct 29 19:05:08 1999
+++ 2325-bfs/fs/bfs/inode.c	Tue Nov  2 15:49:29 1999
@@ -243,7 +243,6 @@
 
 	if (!tmpbuf)
 		return;
-	memset(tmpbuf, 0, 400);
 	for (i=s->su_lasti; i>=0; i--) {
 		if (i>PAGE_SIZE-100) break;
 		if (test_bit(i, s->su_imap))
diff -urN -X dontdiff linux/include/linux/bfs_fs.h 2325-bfs/include/linux/bfs_fs.h
--- linux/include/linux/bfs_fs.h	Thu Oct 28 22:45:16 1999
+++ 2325-bfs/include/linux/bfs_fs.h	Wed Nov  3 10:15:25 1999
@@ -32,7 +32,7 @@
 	__u32 i_atime;
 	__u32 i_mtime;
 	__u32 i_ctime;
-	__u8  i_padding[16];
+	__u32 i_padding[4];
 };
 
 #define BFS_NAMELEN		14	
@@ -55,7 +55,7 @@
 	__s32 s_bto;
 	char  s_fsname[6];
 	char  s_volume[6];
-	__u8  s_padding[472];
+	__u32 s_padding[118];
 };
 
 #define BFS_NZFILESIZE(ip) \
