Re: [PATCH 1/1] ubifs: Try to recover from missing znode

From: Richard Weinberger
Date: Wed Oct 09 2024 - 02:09:57 EST


----- Ursprüngliche Mail -----
> Von: "chengzhihao1" <chengzhihao1@xxxxxxxxxx>
> An: "Benedikt Spranger" <b.spranger@xxxxxxxxxxxxx>, "linux-kernel" <linux-kernel@xxxxxxxxxxxxxxx>
> CC: "linux-mtd" <linux-mtd@xxxxxxxxxxxxxxxxxxx>, "richard" <richard@xxxxxx>
> Gesendet: Mittwoch, 9. Oktober 2024 04:23:02
> Betreff: Re: [PATCH 1/1] ubifs: Try to recover from missing znode

> 在 2024/10/8 21:33, Benedikt Spranger 写道:
>> After powercut on a system using ubifs mounting failed:
>>
>> 2024-09-30T12:38:26.880487+02:00 sonja kernel: UBIFS error (ubi0:0 pid 2178):
>> ubifs_read_node [ubifs]: bad node type (255 but expected 9)
>> 2024-09-30T12:38:26.880506+02:00 sonja kernel: UBIFS error (ubi0:0 pid 2178):
>> ubifs_read_node [ubifs]: bad node at LEB 103:46920, LEB mapping status 0
>> 2024-09-30T12:38:26.880509+02:00 sonja kernel: Not a node, first 24 bytes:
>> 2024-09-30T12:38:26.880510+02:00 sonja kernel: 00000000: ff ff ff ff ff ff ff ff
>> ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> ........................
>>
>> While traversing over zbranches during the journal replay one zbranch
>> points to a znode, which was not written to the flash and therefore the
>> flash is empty.
>
> UBIFS guarantees two things for znodes:
> 1) all index nodes(in commit seq N) are written on flash before master
> nodes(for commit seq N) are written.
> 2) all index nodes(in commit seq N) won't be erased from flash before
> master nodes(for commit seq N+1) are written.
> So, I don't understand that why znodes not exist during journal replaying?

In addition to that, is just one znode missing or are larger parts of the flash
empty?

Thanks,
//richard