[U-Boot] UBIFS fails on SheevaPlug

Andreas Bießmann andreas.devel at googlemail.com
Wed Oct 31 17:50:10 CET 2012


Dear Vikram Narayanan,

On 31.10.2012 17:27, Vikram Narayanan wrote:
> Hello Andreas,
> 
> On 10/30/2012 4:32 AM, Andreas Bießmann wrote:
>> Dear Vikram Narayanan,
>>
>> first of all you are right. u-boot ubifs implementation will never
>> recover the ubifs on media, cause it is mounted read only.
>>
> 
> <snip>
> 
>> calls sget() (line 1043)
>> which in turn calls kzalloc() (line 67)
>> which may return -ENOMEM
> 
> I agree. But in Dimax's case this isn't. Right?

I dunno cause he has an old version which do not print the error code
(patch f75325e1927398f7e18e15f186b1fc52174cc19f is missing).

>> But u-boot will manage to get the data out of the unordered ubifs (if no
>> error like this ENOMEM occur). That is the same process as in kernel if
>> it is mounted read-only (recovery deferred).
> 
> I can't comment on this, unless I know the specifics.

Please read mount_ubifs() in fs/ubifs/super.c:582

Even if it is mounted read only and recovery is needed it will
ubifs_lpt_init(), ubifs_replay_journal(), ubifs_mount_orphans(), ...
If recovery is needed it will ubifs_recover_size() and if it is mounted
read only it will print at last 'recovery deferred' (in the other case
it would be still repaired here cause the steps before do it).
So at least a read only fs which needs recovery can be successfully
mounted (if no other error occurs; the most likely error is a ENOMEM
cause the ubifs does a lot of k(z)alloc).

>> So if the kernel can manage to mount the unordered ubifs u-boot should
>> do so. If it can't (but the kernel can) there is an error that should be
>> fixed.
>>
> 
> But in the kernel, the read-only isn't hardcoded. So, the kernel code
> can try to recover and even update the corrupted data back to the media
> and mount it. (It's my guess. The kernel may/mayn't do this way).

Well bootargs can have 'ro' so the root partition will be mounted read
only, wouldn't it? Wouldn't this 'ro' root partition not mounted by the
kernel then?

> But if the same fails to happen in u-boot code, I'd say the feature is
> missing and it needs to be pulled in from the kernel code.
> 
> Regards,
> Vikram

Best regards

Andreas Bießmann


More information about the U-Boot mailing list