
On 08/21/2015 03:56 AM, Hans de Goede wrote:
Hi,
On 20-08-15 21:53, Stephen Warren wrote:
On 20-08-15 18:04, Hans de Goede wrote:
ubifs does not go though the generic block layer because mtd devices are special, so the "any" filesystem option to sysboot does not work, this adds support for a "ubifs" filesystem to the sysboot command which makes it possible to boot from ubifs using an extlinux.conf file.
Why are they special? Surely ubifs support can be integrated into the filesystem layer, thus removing the need for patches 1 and 3 in this
series?
I looked into that before going that root, the problem is that the filesystem layer assumes that files sit on top of block devices, and all the filesystem layer code operates on block_dev_desc_t devices.
But ubifs operates on ubi volumes which in turn operate on raw nand, this has vastly different characteristics then regular block devices.
ubifs deals with erase-blocks, finding or creating a free erase block when it needs to write stuff, then erasing an entire block and writing part of it a page-size at a time where erase-block-size != page-size, and both are typically of values much larger then disk sector-sizes. There is no notion of erase blocks in the fs / block layer.
Can't the filesystem layer simply be taught how to look up block devices for most filesystems, but look up volumes for other filesystems? I still see no fundamental reason we can't abstract this so higher level SW doesn't have to have special cases.