[JFFS2] Preallocate raw_node_refs in a couple of missing places in scan
authorDavid Woodhouse <dwmw2@infradead.org>
Sun, 28 May 2006 23:41:11 +0000 (00:41 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Sun, 28 May 2006 23:41:11 +0000 (00:41 +0100)
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
fs/jffs2/scan.c

index 3fb0e7e82cf2718107a17825f4262d4454192629..42c1ff21d3521acfa4ec35e668a5df7f2d9047c0 100644 (file)
@@ -67,8 +67,11 @@ static inline uint32_t EMPTY_SCAN_SIZE(uint32_t sector_size) {
 
 static int file_dirty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
 {
-       int ret = jffs2_scan_dirty_space(c, jeb, jeb->free_size);
-       if (ret)
+       int ret;
+
+       if ((ret = jffs2_prealloc_raw_node_refs(c, jeb, 1)))
+               return ret;
+       if ((ret = jffs2_scan_dirty_space(c, jeb, jeb->free_size)))
                return ret;
        /* Turned wasted size into dirty, since we apparently 
           think it's recoverable now. */
@@ -559,6 +562,8 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo
        if (ofs) {
                D1(printk(KERN_DEBUG "Free space at %08x ends at %08x\n", jeb->offset,
                          jeb->offset + ofs));
+               if ((err = jffs2_prealloc_raw_node_refs(c, jeb, 1)))
+                       return err;
                if ((err = jffs2_scan_dirty_space(c, jeb, ofs)))
                        return err;
        }