[PATCH 1/2] UBI: Fix error path in scan_pool()
Richard Genoud
richard.genoud at gmail.com
Fri Sep 27 07:12:36 EDT 2013
2013/9/27 Richard Weinberger <richard at nod.at>:
> Am 26.09.2013 11:25, schrieb Richard Genoud:
>> I added some traces and I found that : (dumping ec_header after
>> "ubi_io_read_ec_hdr(ubi, pnum, ech, 0); " in ubi_scan_fastmap())
>> [ 0.812500] UBI: default fastmap pool size: 95
>> [ 0.820312] UBI: default fastmap WL pool size: 25
>> [ 0.828125] UBI: attaching mtd2 to ubi0
>> [ 0.851562] ubi_scan_fastmap:
>> [ 0.859375] Erase counter header dump:
>> [ 0.859375] magic 0x55424923
>> [ 0.867187] version 1
>> [ 0.867187] ec 1
>> [ 0.867187] vid_hdr_offset 2048
>> [ 0.875000] data_offset 4096
>> [ 0.875000] image_seq 891983656 <- image seq is good.
>> [ 0.875000] hdr_crc 0x13cc9a78
>> [ 0.882812] erase counter header hexdump:
>> [ 0.882812] 00000000: 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00
>> 01 00 00 08 00 00 00 10 00 35 2a 97
>> 28 00 00 00 00 UBI#....................5*.(....
>> [ 0.890625] 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> 00 00 00 00 00 00 00 00 00 00 00 00
>> 00 13 cc 9a 78 ...............................x
>> [ 0.960937] UBI error: scan_pool: bad image seq: 0x0, expected: 0x352a9728
>
> BTW: Do you really print the same PEB as scan_pool() complains about?
No, those debug traces were dumb, sorry...
I understand fastmap code better now :)
> Do you know how many PEBs for one fastmap are needed on your target?
Actually, I just found the problem.
U-boot has an old UBI implementation that was not aware of image_seq.
So when I write the ubifs volume, some PEB got erased by UBI(in uboot)
and written with a image_seq==0.
and fastmap doesn't pay attention to this use case.
I'll have to test a patch I made and I'll send it in a while.
Richard.
More information about the linux-mtd
mailing list