From: Mikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
To: Richard Weinberger <richard.weinberger@gmail.com>
Cc: linux-mtd@lists.infradead.org, Artem Bityutskiy <dedekind1@gmail.com>
Subject: Re: [PATCH] mtd/ubi: fix initialization order of ubi subsystems
Date: Fri, 21 Jun 2019 21:39:14 +0300 [thread overview]
Message-ID: <20190621213914.5b0023fd@laska.lan> (raw)
In-Reply-To: <CAFLxGvyvFL6iHOgQzw2wqpTYOTY8eW57ORuVQnkjn+Gmub=cbQ@mail.gmail.com>
On Fri, 21 Jun 2019 19:26:37 +0200
Richard Weinberger <richard.weinberger@gmail.com> wrote:
> On Thu, Jun 20, 2019 at 3:28 PM Mikhail Kshevetskiy
> <mikhail.kshevetskiy@gmail.com> wrote:
> >
> > during ubi initialization we have a following calling sequence
> >
> > 1) ubi_attach()
> >
> > ----------------------------------------------------------------
> > err = ubi_wl_init(ubi, ai);
> > if (err) goto out_vtbl;
> >
> > err = ubi_eba_init(ubi, ai);
> > if (err) goto out_wl;
> > ----------------------------------------------------------------
> >
> > As we can see "eba" subsytem is NOT initialized at the moment of
> > initializing of "wl" subsystem
> >
> > 2) ubi_wl_init()
> >
> > it call ensure_wear_leveling() at some moment
> >
> > 3) ensure_wear_leveling()
> >
> > ---------------------------------------------------------------
> > e1 = rb_entry(rb_first(&ubi->used), struct ubi_wl_entry, u.rb);
> > e2 = find_wl_entry(ubi, &ubi->free, WL_FREE_MAX_DIFF);
> > if (!(e2->ec - e1->ec >= UBI_WL_THRESHOLD)) goto out_unlock;
> > dbg_wl("schedule wear-leveling");
> > ---------------------------------------------------------------
> >
> > so, if no wear-leveling is scheduled than everything is OK
> >
> > and a little bit below
> >
> > ---------------------------------------------------------------
> > wrk->anchor = 0;
> > wrk->func = &wear_leveling_worker;
> > if (nested) __schedule_ubi_work(ubi, wrk);
> > else schedule_ubi_work(ubi, wrk);
> > ---------------------------------------------------------------
> >
> > as result we enter to wear_leveling_worker() function
>
> Well, we schedule work, but don't execute it since the ubi-thread
> is still disabled.
>
> Can you please share a little more about the problem you are facing?
> Also produce_free_peb() should not get called at this point.
> So before we flip the order of initialization I'd like to understand the
> problem better.
We faced a cycle rebooting in u-boot during ubi initialization. The problem
appears approximately once per week on a random router from our test farm.
We never trigger this problem in linux (only in u-boot).
From the other side ubi code in u-boot is almost the same as ubi code in linux
kernel (it backported from linux periodically), so it make sense to fix it in
linux as well to help with future porting.
PS we send the same patch to u-boot.
Mikhail
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2019-06-21 18:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-20 13:27 [PATCH] mtd/ubi: fix initialization order of ubi subsystems Mikhail Kshevetskiy
2019-06-21 16:04 ` Artem Bityutskiy
2019-06-21 17:26 ` Richard Weinberger
2019-06-21 18:39 ` Mikhail Kshevetskiy [this message]
2019-06-21 18:47 ` Richard Weinberger
2019-06-21 19:16 ` Mikhail Kshevetskiy
2019-06-21 19:33 ` Richard Weinberger
2019-06-21 19:41 ` Mikhail Kshevetskiy
2019-06-21 19:16 ` Mikhail Kshevetskiy
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=20190621213914.5b0023fd@laska.lan \
--to=mikhail.kshevetskiy@gmail.com \
--cc=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
--cc=richard.weinberger@gmail.com \
/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.