autoresize causes insufficient reservation of PEBs for bad PEB handling
Egli, Samuel
samuel.egli at siemens.com
Mon Jul 6 04:04:21 PDT 2015
Hi all,
I have difficulties to understand why I get the following warning message
at linux start up:
...
[ 4.777488] UBI warning: print_rsvd_warning: cannot reserve enough PEBs \
for bad PEB handling, reserved 40, need 80
...
My assumption is that if I don't specify the size of one volume
UBI will choose the right size for the volume and reserve the
right amount of PEBs for bad block handling. With 20/1024 set,vi I
expect indeed to have 80 blocks reserved. But somehow this
does not work. I observed that I get this warning when vol_flags
is set to autoresize. In this case only 40 blocks get reserved.
Using for all volumes the vol_size parameter and omitting
autoresize, I can avoid this situation and I get my 80 blocks reserved.
However, I don't understand why and it seems odd to me that
autoresize would work this way.
Can somebody confirm this observations or explain why this
works like this. Maybe I'm also doing something wrong.
See below how I generate the ubi image.
General setup
=============
flash size: 4096 PEBs
mtd partition size: 4065 PEBs
number of volumes: 3
Linux version:
Linux dxr2 3.14.36-r2 #1 PREEMPT Tue Jun 30 10:26:05 CEST 2015 armv7l GNU/Linux
Config 1
========
2 volumes with fixed size
1 volume has vol_flags=autoresize and vol_size not defined
mkfs.ubifs -r ../rootfs/path -o rootfs.ubifs -F -m 2048 -e 126976 -c 4065
mkfs.ubifs -r ../conf/path -o conf.ubifs -F -m 2048 -e 126976 -c 4065
ubinize -o rootfs.ubi -m 2048 -p 131072 -O 2048 ubinize.cfg
ubinize.cfg:
[rootfs_a]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_type=dynamic
vol_name=rootfs_a
vol_size=140MiB
[rootfs_b]
mode=ubi
vol_id=1
vol_type=dynamic
vol_name=rootfs_b
vol_size=140MiB
[configuration]
mode=ubi
image=configuration.ubifs
vol_id=2
vol_type=dynamic
vol_name=configuration
vol_flags=autoresize
--> only 40 blocks get reserved vor bad PEB handling
Config 2
========
All 3 volumes with fixed size
mkfs.ubifs -r ../rootfs/path -o rootfs.ubifs -F -m 2048 -e 126976 -c 4065
mkfs.ubifs -r ../conf/path -o conf.ubifs -F -m 2048 -e 126976 -c 4065
ubinize.cfg:
[rootfs_a]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_type=dynamic
vol_name=rootfs_a
vol_size=140MiB
[rootfs_b]
mode=ubi
vol_id=1
vol_type=dynamic
vol_name=rootfs_b
vol_size=140MiB
[configuration]
mode=ubi
image=configuration.ubifs
vol_id=2
vol_type=dynamic
vol_name=configuration
vol_size=341MiB
--> ok, 80 blocks reserved but cannot use autoresize
Kind ragards
Sam
More information about the linux-mtd
mailing list