On Sun, 2012-05-20 at 21:27 +0200, Joel Reardon wrote: > This patch modifies ubi_wl_flush to force the erasure of > particular volume id / logical eraseblock number pairs. Previous functionality > is preserved when passing UBI_UNKNOWN for both values. The locations where ubi_wl_flush > were called are appropriately changed: ubi_leb_erase only flushes for the > erased LEB, and ubi_create_volume forces only flushing for its volume id. > External code can call this new feature via the new function ubi_flush() added > to kapi.c, which simply passes through to ubi_wl_flush(). > > This was tested by disabling the call to do_work in ubi thread, which results > in the work queue remaining unless explicitly called to remove. UBIFS was > changed to call ubifs_leb_change 50 times for four different LEBs. Then the > new function was called to clear the queue: passing wrong volume ids / lnum, > correct ones, and finally UBI_UNKNOWN for both to ensure it was finally all > cleard. The work queue was dumped each time and the selective removal > of the particular LEB numbers was observed. Extra checks were enabled and > ubifs's integck was also run. Finally, the drive was repeatedly filled and emptied to > ensure that the queue was cleared normally. I've amended this patch to use UBI_ALL instead, and pushed to linux-ubi.git tree, and in your branch as well. I'll send it to Linus this merge window as well. Thanks! -- Best Regards, Artem Bityutskiy