Implement scatter-gather lists support in UBI and UBIFS

Jump to: navigation, search
Implement scatter-gather lists support in UBI and UBIFS
Ezequiel García <>
Not selected in 2013 to be sponsored by the CE Workgroup


Currently UBI and UBIFS seem to allocate a lot vmalloced LEB-sized buffers on mount time. The reason for this is to "reserve" such memory and prevent the big allocations from failing at a later point.

This heavily affects the memory footprint in systems using UBIFS.

A possible solution is to implement scatter-gather lists support in UBI and UBIFS and replace the big (LEB-sized) vmallocations by smaller allocations.

While this is a big effort and will only benefit UBIFS, it is expected that it will help reduce the memory usage in such systems.

In addition, it has the added benefit of addressing another problem. Some ARM platforms don't support DMA on vmalloc'ed buffers; using scatter-gather lists the allocated will be quite smaller -O(page)-, and it will be possible to allocate them on physically contiguous memory (DMA capable).

These are recurrent issues [1, 2, 3] in the UBI mailing list, and it's UBI maintainer's suggested proposal [4].

Related work

As Linus Walleij pointed out [5] the MMC subsystem already implements something along this lines, and so this work might start by looking at that.



Contractor Candidates

None yet.


Reasons for CEWG not selecting this project

Most CE companies are moving away from raw NAND towards eMMC for CE products. So UBIFS-related projects were not favored.

Also, we had no bids for these projects. In the case of the scatter-gather list proposal, the main feature seemed to be to reduce memory utilization of UBIFS. No member companies seemed to have that problem. There was no indication whether scatter-gather lists might affect performance (it should improve with less data copies, but there was no data indicating any change).