UBI/UBIFS: debugging help
My platform is based on a ARM Cortex-A9 and boots barebox from a spi-nor.
I have tested UBI/UBIFS from Linux on this platform with no issue after disabling 4KB support for the spi nor I am using.
However, I got problem on the boot loader side. UBI/UBIFS has been ported by the barebox community from Linux and I used it successfully on a previous project on a PPC platform.
On the ARM platform I can ubiattach, mount the mtd partition and copy a small file (~65KB spanning two sectors). The issue comes when I copy out a larger file (512KB) out. It fails to copy the whole file.
At the point of failure, ubifs_tnc_locate fails resulting in the function read_block to return -ENOENT.
Debugging shows that in the function ubifs_search_zbranch no keys match is found prior to the failure.
I know this list is called linux-mtd but I was hoping that somebody could give me a pointer on where to look next. I am currently going through git logs and mailing list.
I am pretty confident the boot loader spi driver is working properly as raw write-read-compare have not failed.
cheers.
Quoted 16 lines · Renaud Barbier
My platform is based on a ARM Cortex-A9 and boots barebox from a spi-nor.
I have tested UBI/UBIFS from Linux on this platform with no issue after disabling 4KB support for the spi nor I am using.
However, I got problem on the boot loader side. UBI/UBIFS has been ported by the barebox community from Linux and I used it successfully on a previous project on a PPC platform.
On the ARM platform I can ubiattach, mount the mtd partition and copy a small file (~65KB spanning two sectors). The issue comes when I copy out a larger file (512KB) out. It fails to copy the whole file.
At the point of failure,
ubifs_tnc_locatefails resulting in the functionread_blockto return-ENOENT.
Quoted 6 lines
Debugging shows that in the function
ubifs_search_zbranchno keys match is found prior to the failure.I know this list is called linux-mtd but I was hoping that somebody could give me a pointer on where to look next. I am currently going through git logs and mailing list.
In such situations I start with testing all layers bottom up.
1. Does the MTD driver work (I mean really work)
2. Does UBI work correctly? (ubi tests, etc...)
3. Same for UBIFS
HTH,
//richard
Signature · 2 lines
Thanks, //richard
Thanks.
I just found that after moving the files out and copying them back under Linux, then copying out the files works under barebox. I will see how Linux handles the same PEBs read, maybe that will give me a clue.
Quoted 32 lines · Richard Weinberger
Quoted 16 lines · Renaud Barbier
My platform is based on a ARM Cortex-A9 and boots barebox from a spi-nor.
I have tested UBI/UBIFS from Linux on this platform with no issue after disabling 4KB support for the spi nor I am using.
However, I got problem on the boot loader side. UBI/UBIFS has been ported by the barebox community from Linux and I used it successfully on a previous project on a PPC platform.
On the ARM platform I can ubiattach, mount the mtd partition and copy a small file (~65KB spanning two sectors). The issue comes when I copy out a larger file (512KB) out. It fails to copy the whole file.
At the point of failure,
ubifs_tnc_locatefails resulting in the functionread_blockto return-ENOENT.Quoted 6 lines
Debugging shows that in the function
ubifs_search_zbranchno keys match is found prior to the failure.I know this list is called linux-mtd but I was hoping that somebody could give me a pointer on where to look next. I am currently going through git logs and mailing list.
In such situations I start with testing all layers bottom up.
1. Does the MTD driver work (I mean really work)
2. Does UBI work correctly? (ubi tests, etc...)
3. Same for UBIFSHTH,
//richard
I have added debug messages in the Linux UBIFS driver (I am using Linux
3.14) and noticed as well that read_block returns -ENOENT several times toward the end of the copy of a file (512KB). Though, the Linux system is able to read the whole file correctly (checksum is correct).
The boot loader however bails out on error.
The read_block issue disappears if I delete, copy it back and remount the UBIFS file system.
Below is the way I create the UBI image before formatting the SPI-nor:
# mkfs.ubifs -vv -F -d boot -m 1 -e 65408 -c 380 -U -x lzo -o boot.img # ubinize -v -o test3_nor.img -p 64KiB -m 1 ubinize.cfg
with ubinize.cfg:
# Section header
[boot]
mode=ubi
# Source image
image=boot.img
# Volume ID in UBI image
vol_id=0
# Volume size
vol_size=25MiB
# Allow for static resize
vol_type=dynamic
# Volume name
vol_name=boot
So in summary, if I ubiformat the partition from Linux with a ubi image, the Linux UBIFS driver function read_block returns ENOENT during file copy and it completes.
However, if I copy a file to the UBIFS partition and read back after re-mounting there is no issue.
Would somebody know whether the parameters to mkfs.ubifs and ubinize have anything to do with read_block failing?
I created UBI images before for a flash with 128KB sectors and not seen this problem.
Cheers.
Quoted 40 lines · Renaud Barbier
My platform is based on a ARM Cortex-A9 and boots barebox from a spi-nor.
I have tested UBI/UBIFS from Linux on this platform with no issue after disabling 4KB support for the spi nor I am using.
However, I got problem on the boot loader side. UBI/UBIFS has been ported by the barebox community from Linux and I used it successfully on a previous project on a PPC platform.
On the ARM platform I can ubiattach, mount the mtd partition and copy a small file (~65KB spanning two sectors). The issue comes when I copy out a larger file (512KB) out. It fails to copy the whole file.
At the point of failure,
ubifs_tnc_locatefails resulting in the functionread_blockto return-ENOENT.Debugging shows that in the function
ubifs_search_zbranchno keys match is found prior to the failure.I know this list is called linux-mtd but I was hoping that somebody could give me a pointer on where to look next. I am currently going through git logs and mailing list.
I am pretty confident the boot loader spi driver is working properly as raw write-read-compare have not failed.
cheers.
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/