diff -Narup mtd2/fs/jffs2/build.c mtd/fs/jffs2/build.c --- mtd2/fs/jffs2/build.c 2005-07-30 17:29:27.000000000 +0200 +++ mtd/fs/jffs2/build.c 2005-08-30 11:34:22.000000000 +0200 @@ -318,7 +318,7 @@ int jffs2_do_mount_fs(struct jffs2_sb_in c->free_size = c->flash_size; c->nr_blocks = c->flash_size / c->sector_size; #ifndef __ECOS - if (c->mtd->flags & MTD_NO_VIRTBLOCKS) + if (JFFS2_BLOCKS_USE_VMALLOC(c)) c->blocks = vmalloc(sizeof(struct jffs2_eraseblock) * c->nr_blocks); else #endif @@ -356,7 +356,7 @@ int jffs2_do_mount_fs(struct jffs2_sb_in jffs2_free_ino_caches(c); jffs2_free_raw_node_refs(c); #ifndef __ECOS - if (c->mtd->flags & MTD_NO_VIRTBLOCKS) + if (JFFS2_BLOCKS_USE_VMALLOC(c)) vfree(c->blocks); else #endif diff -Narup mtd2/fs/jffs2/fs.c mtd/fs/jffs2/fs.c --- mtd2/fs/jffs2/fs.c 2005-08-06 06:51:30.000000000 +0200 +++ mtd/fs/jffs2/fs.c 2005-08-30 11:42:18.000000000 +0200 @@ -457,19 +457,8 @@ int jffs2_do_fill_super(struct super_blo #endif c->flash_size = c->mtd->size; - - /* - * Check, if we have to concatenate physical blocks to larger virtual blocks - * to reduce the memorysize for c->blocks. (kmalloc allows max. 128K allocation) - */ c->sector_size = c->mtd->erasesize; blocks = c->flash_size / c->sector_size; - if (!(c->mtd->flags & MTD_NO_VIRTBLOCKS)) { - while ((blocks * sizeof (struct jffs2_eraseblock)) > (128 * 1024)) { - blocks >>= 1; - c->sector_size <<= 1; - } - } /* * Size alignment check diff -Narup mtd2/fs/jffs2/os-linux.h mtd/fs/jffs2/os-linux.h --- mtd2/fs/jffs2/os-linux.h 2005-08-06 06:51:30.000000000 +0200 +++ mtd/fs/jffs2/os-linux.h 2005-08-30 11:32:31.000000000 +0200 @@ -41,6 +41,8 @@ struct kvec; #define JFFS2_F_I_MTIME(f) (OFNI_EDONI_2SFFJ(f)->i_mtime.tv_sec) #define JFFS2_F_I_ATIME(f) (OFNI_EDONI_2SFFJ(f)->i_atime.tv_sec) +#define JFFS2_BLOCKS_USE_VMALLOC(c) ((c->flash_size / c->sector_size * sizeof (struct jffs2_eraseblock)) > (128 * 1024)) + #define sleep_on_spinunlock(wq, s) \ do { \ DECLARE_WAITQUEUE(__wait, current); \ diff -Narup mtd2/fs/jffs2/super.c mtd/fs/jffs2/super.c --- mtd2/fs/jffs2/super.c 2005-07-12 18:37:08.000000000 +0200 +++ mtd/fs/jffs2/super.c 2005-08-30 11:34:01.000000000 +0200 @@ -284,7 +284,7 @@ static void jffs2_put_super (struct supe up(&c->alloc_sem); jffs2_free_ino_caches(c); jffs2_free_raw_node_refs(c); - if (c->mtd->flags & MTD_NO_VIRTBLOCKS) + if (JFFS2_BLOCKS_USE_VMALLOC(c)) vfree(c->blocks); else kfree(c->blocks); diff -Narup mtd2/fs/jffs2/super-v24.c mtd/fs/jffs2/super-v24.c --- mtd2/fs/jffs2/super-v24.c 2005-07-20 16:21:40.000000000 +0200 +++ mtd/fs/jffs2/super-v24.c 2005-08-30 11:34:06.000000000 +0200 @@ -99,7 +99,7 @@ static void jffs2_put_super (struct supe up(&c->alloc_sem); jffs2_free_ino_caches(c); jffs2_free_raw_node_refs(c); - if (c->mtd->flags & MTD_NO_VIRTBLOCKS) + if (JFFS2_BLOCKS_USE_VMALLOC(c)) vfree(c->blocks); else kfree(c->blocks);