Re: [PATCH 1/1] ubifs: Try to recover from missing znode
From: Benedikt Spranger
Date: Wed Oct 09 2024 - 08:52:42 EST
On Wed, 9 Oct 2024 18:46:43 +0800
Zhihao Cheng <chengzhihao1@xxxxxxxxxx> wrote:
> 在 2024/10/9 14:03, Richard Weinberger 写道:
> > ----- 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?
Some background:
The system producing the broken image runs on an older kernel version
(4.9.286-rt189). Attaching UBI performs without any error. It seems,
that there is only one znode missing. There are empty parts on the
flash, but as far as I can see all PEBs have UBI header Information.
The missing znode is somewhere in th middle of an PEB and other znodes
are in that PEB.
> After reviewing the TNC related code, I cannot find out any illegal
> behaviors to make znode lost or valid index LEB erased.
OK. Is it possible, that this behaviour is caused by a already fixed
bug? This happend on a system running 4.9.286-rt189.
> Hi Benedikt, could you provide a corrupted UBIFS image? Let me try
> getting more information.
I need to clarify this.
Regards
Benedikt Spranger