Running UBI/UBIFS on MLC NAND
summary
Adds MLC (and basic TLC) support to UBI/UBIFS by exposing NAND pairing info in the kernel, using SLC-mode low-page writes for new data, and merging two half-filled logical erase blocks via LEB consolidation to reclaim free space. Implements a user-space ubi-healthd read counters daemon to trigger scrubs before ECC limits are hit. Prototype works and preserves data safety, but consolidation is slow, causes noticeable performance and space-reservation complexity, and relies on stronger ECC and vendor pairing details to avoid read/write disturbance.
AI-written summary · about
chapters (22)
- 0:00Introduction
- 1:15Constraints
- 2:42Reduced Life Time
- 3:03SLC vs MLC
- 3:46ReadWrite Disturbance
- 5:39Perfidious Problem
- 7:02Third Pages
- 10:21Open Block Issue
- 12:33Main constraints
- 13:02UBI Basics
- 21:54Data Retention Issues
- 28:35Patching Upper Layers
- 30:45UBA Implementation
- 32:15Life Cycle
- 35:19LEP
- 36:07Consolidation
- 38:56Challenges
- 42:02Common Case
- 45:02Conclusion
- 45:38UBI Image
- 47:12Heatmap
- 50:20More info
related talks
37mFlash Subsystems Status Update
32mUsing Linux Block Integrity in Building and Testing Storage Systems
47mHost Performance Booster (HPB): Introduction and Current Mainline Support Status
34mublk virtual block devices in user space
28mNVDIMM & Bcache: Support Non-Volatile Memory for Linux Block Layer...
36mDrive your NAND within Linux
42mOverview of Universal Flash Storage Subsystem
18mSPI Memory Support in Linux and U-Boot
