*
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: build.c,v 1.76 2005/07/30 15:29:27 lunn Exp $
+ * $Id: build.c,v 1.77 2005/08/31 13:51:00 havasi Exp $
  *
  */
 
        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
                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
 
  *
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: fs.c,v 1.62 2005/08/06 04:51:30 nico Exp $
+ * $Id: fs.c,v 1.64 2005/09/01 08:42:31 havasi Exp $
  *
  */
 
 #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
                        c->flash_size / 1024);
        }
 
-       if (c->sector_size != c->mtd->erasesize)
-               printk(KERN_INFO "jffs2: Erase block size too small (%dKiB). Using virtual blocks size (%dKiB) instead\n", 
-                       c->mtd->erasesize / 1024, c->sector_size / 1024);
-
        if (c->flash_size < 5*c->sector_size) {
                printk(KERN_ERR "jffs2: Too few erase blocks (%d)\n", c->flash_size / c->sector_size);
                return -EINVAL;
        iput(root_i);
        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);
 
  *
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: nodelist.h,v 1.138 2005/08/17 13:46:23 dedekind Exp $
+ * $Id: nodelist.h,v 1.139 2005/08/31 13:51:00 havasi Exp $
  *
  */
 
        struct jffs2_raw_node_ref *gc_node;     /* Next node to be garbage collected */
 };
 
+static inline int jffs2_blocks_use_vmalloc(struct jffs2_sb_info *c)
+{
+       return ((c->flash_size / c->sector_size) * sizeof (struct jffs2_eraseblock)) > (128 * 1024);
+}
+
 /* Calculate totlen from surrounding nodes or eraseblock */
 static inline uint32_t __ref_totlen(struct jffs2_sb_info *c,
                                    struct jffs2_eraseblock *jeb,
 
  *
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: super.c,v 1.107 2005/07/12 16:37:08 dedekind Exp $
+ * $Id: super.c,v 1.108 2005/08/31 13:51:00 havasi Exp $
  *
  */
 
        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);