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 #include -#include +#include +#include #include #include #include @@ -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; isu_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 */ .