All of lore.kernel.org
 help / color / mirror / Atom feed
* UBIFS: recovery of master node
@ 2015-07-16 13:22 Andrea Scian
  2015-07-16 15:29 ` Richard Weinberger
  0 siblings, 1 reply; 10+ messages in thread
From: Andrea Scian @ 2015-07-16 13:22 UTC (permalink / raw)
  To: mtd_mailinglist


Dear all,

I'm trying to understand how UBIFS recovers master node from a corrupted 
flash (e.g. after power cut during one of the two of master node or due 
flash corruption itself).

IIUC (please correct me if I'm wrong) UBIFS store two copies of master 
node, in LEB1 and LEB2 (LEB0 is reserved for superblock), ref. 
http://www.linux-mtd.infradead.org/doc/ubifs_whitepaper.pdf.
Inside ubifs_recover_master_node() try to read first LEB1 and, only in 
case of get_master_node() does NOT return an error, it tries to read 
LEB2 (ref. fs/ubifs/recovery.c)
I'm working with a 3.10 class kernel, but I've found nearly the same 
code on mainline.

On my test-bed, the recovery fails because get_master_node(LEB1) fails 
(exactly here 
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/fs/ubifs/recovery.c#n184)
I'm hacking around the code to see what's really happening under the 
wood, but I'm a UBIFS newbie I would like to ask:

1) why if get_master_node(LEB1) fails we don't ALWAYS look at 
get_master_node(LEB2)? I think we should try to read LEB2 even if 
something really bad happens to LEB1.. or not?

2) if I bypass the get_master_node(LEB1) return value, I found that 
get_master_node(LEB2) fails too, for the same reason of LEB1 (see 
above). IIUC we check about empty space because master node pages get 
written without being erased every time, but I'm still studying this 
topic ;-)

If I bypass that check too, I can mount UBIFS and everything inside the 
FS is there but, of course, I'm sure I'm doing something that may be wrong..

WDYT?

Thanks in advance and kind regards,

-- 

Andrea SCIAN

DAVE Embedded Systems

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-07-17 11:44 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-16 13:22 UBIFS: recovery of master node Andrea Scian
2015-07-16 15:29 ` Richard Weinberger
2015-07-16 15:50   ` Andrea Scian
2015-07-17  6:58   ` Andrea Scian
2015-07-17  7:24     ` Richard Weinberger
2015-07-17  8:04       ` Andrea Scian
2015-07-17  8:10         ` Richard Weinberger
2015-07-17  8:59           ` Richard Genoud
2015-07-17 11:38       ` Artem Bityutskiy
2015-07-17 11:43         ` Richard Weinberger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.