diff -urN -X dontdiff linux/fs/bfs/bfs_defs.h linux-2.3.25-pre1-bfs/fs/bfs/bfs_defs.h
--- linux/fs/bfs/bfs_defs.h     Fri Oct 29 11:26:27 1999
+++ linux-2.3.25-pre1-bfs/fs/bfs/bfs_defs.h     Fri Oct 29 12:23:29 1999
@@ -5,7 +5,6 @@
#define su_lf_ioff     u.bfs_sb.si_lf_ioff
#define su_lf_sblk     u.bfs_sb.si_lf_sblk
#define su_lf_eblk     u.bfs_sb.si_lf_eblk
-#define su_imap_len    u.bfs_sb.si_imap_len
#define su_imap                u.bfs_sb.si_imap
#define su_sbh         u.bfs_sb.si_sbh
#define su_bfs_sb      u.bfs_sb.si_bfs_sb
diff -urN -X dontdiff linux/fs/bfs/dir.c linux-2.3.25-pre1-bfs/fs/bfs/dir.c
--- linux/fs/bfs/dir.c  Fri Oct 29 11:26:27 1999
+++ linux-2.3.25-pre1-bfs/fs/bfs/dir.c  Fri Oct 29 13:36:52 1999
@@ -106,8 +106,8 @@
       if (!inode)
               return -ENOSPC;
       inode->i_sb = s;
-       ino = find_first_zero_bit(s->su_imap, s->su_imap_len);
-       if (ino >= s->su_lasti) {
+       ino = find_first_zero_bit(s->su_imap, s->su_lasti);
+       if (ino > s->su_lasti) {
               iput(inode);
               return -ENOSPC;
       }
diff -urN -X dontdiff linux/fs/bfs/inode.c linux-2.3.25-pre1-bfs/fs/bfs/inode.c
--- linux/fs/bfs/inode.c        Fri Oct 29 11:26:27 1999
+++ linux-2.3.25-pre1-bfs/fs/bfs/inode.c        Fri Oct 29 13:46:00 1999
@@ -7,7 +7,8 @@

#include <linux/config.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/mm.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/locks.h>
#include <linux/bfs_fs.h>
@@ -237,19 +238,21 @@
void dump_imap(const char *prefix, struct super_block * s)
{
#if 0
-       int i, hibit = 8 * (s->su_imap_len) - 1;
-       char tmpbuf[400];
+       int i;
+       char *tmpbuf = (char *)get_free_page(GFP_KERNEL);

+       if (!tmpbuf)
+               return;
       memset(tmpbuf, 0, 400);
-       for (i=hibit; i>=0; i--) {
-               if (i>390) break;
+       for (i=s->su_lasti; i>=0; i--) {
+               if (i>PAGE_SIZE-100) break;
               if (test_bit(i, s->su_imap))
                       strcat(tmpbuf, "1");
               else
                       strcat(tmpbuf, "0");
       }
-       printk(KERN_ERR "BFS-fs: %s: lasti=%d <%s> (%d*8 bits)\n",
-               prefix, s->su_lasti, tmpbuf, s->su_imap_len);
+       printk(KERN_ERR "BFS-fs: %s: lasti=%d <%s>\n", prefix, s->su_lasti, tmpbuf);
+       free_page((unsigned long)tmpbuf);
#endif
}

@@ -260,7 +263,7 @@
       struct buffer_head * bh;
       struct bfs_super_block * bfs_sb;
       struct inode * inode;
-       unsigned long i;
+       int i, imap_len;

       MOD_INC_USE_COUNT;
       lock_super(s);
@@ -292,11 +295,11 @@
       s->su_lasti = (bfs_sb->s_start - BFS_BSIZE)/sizeof(struct bfs_inode)
                       + BFS_ROOT_INO - 1;

-       s->su_imap_len = s->su_lasti/8 + 1; /* 1 byte is 8 bit */
-       s->su_imap = kmalloc(s->su_imap_len, GFP_KERNEL);
+       imap_len = s->su_lasti/8 + 1;
+       s->su_imap = kmalloc(imap_len, GFP_KERNEL);
       if (!s->su_imap)
               goto out;
-       memset(s->su_imap, 0, s->su_imap_len);
+       memset(s->su_imap, 0, imap_len);
       for (i=0; i<BFS_ROOT_INO; i++)
               set_bit(i, s->su_imap);

diff -urN -X dontdiff linux/include/linux/bfs_fs_sb.h linux-2.3.25-pre1-bfs/include/linux/bfs_fs_sb.h
--- linux/include/linux/bfs_fs_sb.h     Fri Oct 29 11:26:28 1999
+++ linux-2.3.25-pre1-bfs/include/linux/bfs_fs_sb.h     Fri Oct 29 12:23:21 1999
@@ -17,7 +17,6 @@
       __u32 si_lf_sblk;
       __u32 si_lf_eblk;
       __u32 si_lasti;
-       __u32 si_imap_len;
       __u8 *si_imap;
       struct buffer_head * si_sbh;            /* buffer header w/superblock */
       struct bfs_super_block * si_bfs_sb;     /* superblock in si_sbh->b_data */