mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
[JFFS2] Don't advance c->wbuf_ofs to next eraseblock after wbuf flush
After flushing the last page of an eraseblock, don't leave the wbuf 'offset' field pointing at the start of the next physical eraseblock. This was causing a BUG() on NOR-ECC (Sibley) flash, where we start writing a little further in, after the cleanmarker. Debugged by Alexander Belyakov <abelyako@googlemail.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
parent
693ef66d89
commit
3fddb6c985
1 changed files with 4 additions and 1 deletions
|
@ -637,7 +637,10 @@ static int __jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad)
|
||||||
|
|
||||||
memset(c->wbuf,0xff,c->wbuf_pagesize);
|
memset(c->wbuf,0xff,c->wbuf_pagesize);
|
||||||
/* adjust write buffer offset, else we get a non contiguous write bug */
|
/* adjust write buffer offset, else we get a non contiguous write bug */
|
||||||
c->wbuf_ofs += c->wbuf_pagesize;
|
if (SECTOR_ADDR(c->wbuf_ofs) == SECTOR_ADDR(c->wbuf_ofs+c->wbuf_pagesize))
|
||||||
|
c->wbuf_ofs += c->wbuf_pagesize;
|
||||||
|
else
|
||||||
|
c->wbuf_ofs = 0xffffffff;
|
||||||
c->wbuf_len = 0;
|
c->wbuf_len = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue