Skip to contentSkip to conversation

UBI 1MiB size partition

DISCUSSION Angelo Dureghello 4 participants 7 messages Nov 24, 2014 – Nov 28, 2014 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

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@barix ~]# flash_erase /dev/mtd5 0 8
Erasing 128 Kibyte @ e0000 -- 100 % complete

[root@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@barix ~]#

[root@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.

Every help is very appreciated.
Thanks
angelo

#1 lore raw
Quoted 37 lines · Angelo Dureghello

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@barix ~]# flash_erase /dev/mtd5 0 8
Erasing 128 Kibyte @ e0000 -- 100 % complete

[root@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@barix ~]#

Quoted 5 lines

[root@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.

The number depends on CONFIG_MTD_UBI_BEB_LIMIT. What is your use case for UBI on such a small MTD partition?

Signature · 2 lines
Thanks,
//richard
#2 lore raw

Hi Richard,

Quoted 3 lines

The number depends on CONFIG_MTD_UBI_BEB_LIMIT. What is your use case for UBI on such a small MTD partition?

My company uses UBI as rootfs, and jffs2 for a small partition to keep some system configurations.I would like to use UBI here as well.

CONFIG_MTD_UBI_BEB_LIMIT is system wide i guess. So changing it, it impacts also the main rootfs.ubi, right ?

Quoted 1 line

Thanks,
angelo

#3 lore raw

Am 24.11.2014 um 11:18 schrieb Angelo Dureghello:

Quoted 7 lines

Hi Richard,

Quoted 3 lines

The number depends on CONFIG_MTD_UBI_BEB_LIMIT. What is your use case for UBI on such a small MTD partition?

My company uses UBI as rootfs, and jffs2 for a small partition to keep some system configurations.I would like to use UBI here as well.

This does not make sense.
Create one UBI for the whole MTD and then create multiple UBI volumes on it...

Quoted 2 lines

CONFIG_MTD_UBI_BEB_LIMIT is system wide i guess. So changing it, it impacts also the main rootfs.ubi, right ?

Yes.

Thanks,
//richard

#4 lore raw
In reply to Angelo Dureghello
Quoted 37 lines · Angelo Dureghello

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@barix ~]# flash_erase /dev/mtd5 0 8
Erasing 128 Kibyte @ e0000 -- 100 % complete

[root@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@barix ~]#

Quoted 5 lines

[root@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?

#5 lore raw

Dear Artem,

thanks for your reply.

Quoted 4 lines

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.

Quoted 9 lines

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?

Yes, i realized this. A redesign of the partition scheme is needed at this stage.
I cannot actually change the partition scheme for some reasons connected to the production process, but at least things are more clear now.

Regards,
Angelo

#6 lore raw
Quoted 14 lines · Angelo Dureghello

Dear Artem,

thanks for your reply.

Quoted 10 lines

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.

Quoted 7 lines
Quoted 3 lines

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?

Yes, i realized this. A redesign of the partition scheme is needed at this stage.
I cannot actually change the partition scheme for some reasons connected to the production process, but at least things are more clear now.

Not that I recommend this for your design, but if you want to play with your 1MiB partition, you may try the max_beb_per1024 UBI parameter, or the CONFIG_MTD_UBI_BEB_LIMIT option. I did not try, but hopefully it allows you to specify 0?