> When you read from a region that was TRIMed the result is either undefined or all-zeros, whereas when you read from a region that was mtd_erase()d, the result is all-ones.
> So it wouldn't really be useful to make mtd_erase() to TRIM. They do seem similar but they have quite different semantics.
What about combining your catch-erased-sections-and-return-0xFF with TRIMing the underlying storage (if it supports TRIMing)?