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 */