[U-Boot] UBIFS mount bug when mounting from multiple MTD partitions
Schrempf Frieder
frieder.schrempf at kontron.de
Wed Apr 10 10:49:07 UTC 2019
Hi,
I have a customer who has a NAND device with two MTD partitions and each
of the partitions contains one UBI volume with a UBIFS filesystem.
Now U-Boot can mount the UBIFS from the first partition just fine, but
if the UBIFS from the second partition is mounted afterwards this fails
in some cases.
I can reproduce the error and tracked it down to uboot_ubifs_mount() in
fs/ubifs/super.c. If this function is run for the second mount, the
struct ubifs_fs_type is reused and it contains a list fs_supers, that
still holds one entry for the first mount.
I guess, that if the second mount would happen on a volume that is on
the same MTD partition as the first volume, than this will work. The
second entry is added to ubifs_fs_type.fs_supers.
In my case however, the second entry being added to
ubifs_fs_type.fs_supers is invalid and causes the mount error.
Reinitializing the list in uboot_ubifs_mount() before each mount, solves
the problem, but I guess that it will cause failures in other setups,
where there are actually multiple volumes on one MTD device.
So how can I solve this properly? Do we need one instance of struct
ubifs_fs_type for each MTD device?
I tested this on an old version (2017.03), but looking at the current
code, it looks like the same problem applies to current mainline.
Thanks for any help and suggestions!
Frieder
More information about the U-Boot
mailing list