UBI 1MiB size partition

Artem Bityutskiy dedekind1 at gmail.com
Fri Nov 28 01:39:55 PST 2014


On Mon, 2014-11-24 at 10:01 +0100, Angelo Dureghello wrote:
> Dear all,
> 
> i read UBI faq and surfed the net, but can't find still a clear answer
> to this:
> 
> 
> I have a 1MiB partition on a nand flash o would like to format as UBI.
> I already have the rootfs atrtached as UBI0 / UBI0_0, so i am going
> to attach this partition as UBI1.
> 
> But with the available ubi commands i am not able. Is this a limitiation
> due to the small partition size ?
> 
> [root at barix ~]# flash_erase /dev/mtd5 0 8
> Erasing 128 Kibyte @ e0000 -- 100 % complete
> 
> [root at barix ~]# ubiattach -m 5
> UBI: attaching mtd5 to ubi1
> UBI: scanning is finished
> UBI: empty MTD device detected
> UBI warning: print_rsvd_warning: cannot reserve enough PEBs for bad PEB 
> handling, reserved 4, need 20
> UBI: attached mtd5 (name "config", size 1 MiB) to ubi1
> UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
> UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
> UBI: VID header offset: 2048 (aligned 2048), data offset: 4096
> UBI: good PEBs: 8, bad PEBs: 0, corrupted PEBs: 0
> UBI: user volume: 0, internal volumes: 1, max. volumes count: 128
> UBI: max/mean erase counter: 0/0, WL threshold: 4096, image sequence 
> number: 193419012
> UBI: available PEBs: 0, total reserved PEBs: 8, PEBs reserved for bad 
> PEB handling: 4
> UBI: background thread "ubi_bgt1d" started, PID 2686
> UBI device number 1, total 8 LEBs (1015808 bytes, 992.0 KiB), available 
> 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
> [root at barix ~]#
> 
> [root at barix ~]# ubimkvol /dev/ubi1 -N config -m
> ubimkvol: error!: UBI device does not have free logical eraseblocks
> 
> As you see, i can't create a volume so i cannot mount.
>  From the tools help, seems i cannot set bad PEB handling count.

UBI is a volume manager which is designed to manage the entire flash
chip. Sometimes system designers have one or two small partitions at the
beginning of the chip, and give the rest to UBI.

You are using NAND flash, and UBI tries to reserve some amount of
eraseblocks for bad block handling. And the count of eraseblocks to
reserve is calculated from the entire chip size. So UBI says it wants
20, but reserved only 4 - all the available blocks you have. So you do
not have any more blocks left, so you have no space.

You really should re-think your design. 1MiB partition is too small,
there are too few eraseblocks. What if one or two of them become bad?






More information about the linux-mtd mailing list