diff options
author | David Woodhouse <dwmw2@infradead.org> | 2006-05-29 01:41:11 +0200 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2006-05-29 01:41:11 +0200 |
commit | a6a8bef722875a95bb73e6de7da924a8d417b52c (patch) | |
tree | 4bdb7461ad785b8e24e5bb65f4bde9448e4fae25 /fs/jffs2/scan.c | |
parent | [JFFS2] Fix oops when marking space dirty in scan, but no previous node exists. (diff) | |
download | linux-a6a8bef722875a95bb73e6de7da924a8d417b52c.tar.xz linux-a6a8bef722875a95bb73e6de7da924a8d417b52c.zip |
[JFFS2] Preallocate raw_node_refs in a couple of missing places in scan
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'fs/jffs2/scan.c')
-rw-r--r-- | fs/jffs2/scan.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index 3fb0e7e82cf2..42c1ff21d352 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c @@ -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; } |