Skip to contentSkip to conversation

UBI/UBIFS: debugging help

DISCUSSION Renaud Barbier 2 participants 4 messages Mar 13, 2015 – Mar 17, 2015 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

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.

#1 lore raw
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_locate fails resulting in the function read_block to return -ENOENT.

Quoted 6 lines

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.

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
#2 lore raw

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_locate fails resulting in the function read_block to return -ENOENT.

Quoted 6 lines

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.

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

#3 lore raw
In reply to Renaud Barbier

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_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.

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/