SquashFS is a block filesystem, but since it is read-only, it
can be also used on a /dev/mtdblock<x> device, because it will never
attempt to write on any block. The same applies to other block
filesystems, provided they are mounted in read-only mode.

The problem is that /dev/mtdblock<x>, the block interface to
MTD device <x>, is not bad-block aware, and therefore can't be used
reliably to mount read-only block filesystems. It will only work
if you are lucky to have a board with no bad MTD blocks,
as we were when we first benchmarked SquashFS on MTD.

The goals of this project are to make it possible to use read-only
filesystems in a reliable way on top of MTD flash storage.

This could be achieved in multiple ways:

By implementing a bad-block aware block device of top of MTD, perhaps not a generic one, but limited to the needs of read-only filesystems.

By implementing a generic block device on top of UBI, for systems which use UBI to implement global wear leveling (without UBI, wear leveling can only be implemented locally, by each filesystem).

If SquashFS is identified as a priority, another idea would be to implement SquashFS back-ends for MTD and UBI. The solution wouldn't benefit other filesystems though.

The expected benefits are:

Ability to use Squashfs on MTD flash: tiny mount time, good compression, good read performance.