All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Weinberger <richard@sigma-star.at>
To: Lars Persson <lists@bofh.nu>, linux-mtd@lists.infradead.org
Subject: Re: UBIFS file-system corruption (missing inode) after power-cut on 4.14.96
Date: Thu, 04 Apr 2019 23:53:09 +0200	[thread overview]
Message-ID: <1586391.XHllXIAzYb@blindfold> (raw)
In-Reply-To: <CADnJP=so8PSqJ4NgqSyqSk5UEtO2wzSC_LG0Seo0+Yuf45oefA@mail.gmail.com>

Am Freitag, 29. März 2019, 10:43:33 CEST schrieb Lars Persson:
> On Thu, Mar 28, 2019 at 6:31 PM Richard Weinberger
> <richard.weinberger@gmail.com> wrote:
> >
> > Can you please share me your corrupted fs?
> > I'm not so sure what is really the root cause.
> > The thing is, ubifs_delete_orphan() does not need to tigger a commit.
> > Ff something depends on a commit, we have another problem, I fear.
> >
> 
> Thanks. The download link for the file-system was shared to your gmail address.

Can you please run your tests again with this patch applied?
It needs further optimization, but we are on the right track.

diff --git a/fs/ubifs/orphan.c b/fs/ubifs/orphan.c
index 2f1618f300fb..c15e484f73a4 100644
--- a/fs/ubifs/orphan.c
+++ b/fs/ubifs/orphan.c
@@ -691,8 +691,21 @@ static int do_kill_orphans(struct ubifs_info *c, struct ubifs_scan_leb *sleb,
 		n = (le32_to_cpu(orph->ch.len) - UBIFS_ORPH_NODE_SZ) >> 3;
 		for (i = 0; i < n; i++) {
 			union ubifs_key key1, key2;
+			struct ubifs_ino_node *ino;
+
+			ino = kmalloc(UBIFS_MAX_INO_NODE_SZ, GFP_NOFS);
+			if (!ino)
+				return -ENOMEM;
 
 			inum = le64_to_cpu(orph->inos[i]);
+			ino_key_init(c, &key1, inum);
+			err = ubifs_tnc_lookup(c, &key1, ino);
+			if (!err && ino->nlink) {
+				kfree(ino);
+				continue;
+			}
+			kfree(ino);
+
 			dbg_rcvry("deleting orphaned inode %lu",
 				  (unsigned long)inum);
 
Thanks,
//richard



______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

  parent reply	other threads:[~2019-04-04 21:53 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-21 10:02 UBIFS file-system corruption (missing inode) after power-cut on 4.14.96 Lars Persson
2019-03-25 10:21 ` Lars Persson
2019-03-26  9:21 ` Lars Persson
2019-03-28 11:54   ` Lars Persson
2019-03-28 17:31     ` Richard Weinberger
2019-03-29  9:43       ` Lars Persson
2019-04-04 21:31         ` Richard Weinberger
2019-04-04 21:53         ` Richard Weinberger [this message]
2019-04-05 13:19           ` Lars Persson
2019-04-05 13:23             ` Richard Weinberger
2019-07-10  7:14               ` Lars Persson
2019-07-10  9:02                 ` Richard Weinberger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1586391.XHllXIAzYb@blindfold \
    --to=richard@sigma-star.at \
    --cc=linux-mtd@lists.infradead.org \
    --cc=lists@bofh.nu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.