Am Thu, 02 Aug 2012 19:17:47 +0300 schrieb Artem Bityutskiy <artem.bityuts...@linux.intel.com>:
> On Thu, 2012-08-02 at 16:51 +0200, Richard Weinberger wrote: > > Every time fastmap writes a new fastmap to the flash it tries to > > get a new PEB and returns the old one (used for the old fastmap) > > back to the WL sub-system. > > OK. > > > If no free PEBs are available (E.g Volume is full or the erase > > worker is too slow) ubi_wl_get_fm_peb() returns NULL and fastmap > > reuses the currently used PEB. > > This should not happen. Fastmap should _reserve_ enough of PEBs for it > to operate. It should always find the PEB to write. What is the benefit? IOW what is wrong with the current approach? > Just like if you create a volume maximum possible size, we guarantee > that you can fill it with data, and UBI will find enough PEBs for > that. > > Just like we always have enough PEBs for the volume table. > > The above things are UBI's liabilities. > > In the situation when a lot of PEBs became bad, UBI will switch to R/O > mode with a scary message if it notices that it does not have enough > PEBs to satisfy all the liabilities. > > And this is why we reserve 2% of PEBs for bad PEBs handling. Of course fastmap could also do something like that, but I don't really see a benefit in this. > > In this situation ubi_wl_get_fm_peb() may trigger such an error > > message. If think we should get rid of the message as this is not > > an error condition. It's a well known execution path. > > Unless I am confused, this should lead to switching to R/O mode > instead, just like we do when we write to an LEB and do not find a > PEB to map to. Why? If everything goes wrong, fastmap makes sure that no fastmap is on flash. In case of a powercut we fall back to scanning mode. R/O mode is overkill IMHO. Thanks, //richard -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/