[PATCH 1/2] jffs2: Move erasing from write_super to GC.

Joakim Tjernlund joakim.tjernlund at transmode.se
Thu Feb 18 07:17:41 EST 2010


Artem Bityutskiy <dedekind1 at gmail.com> wrote on 2010/02/18 12:06:06:
>
> On Wed, 2010-02-17 at 09:16 +0100, Joakim Tjernlund wrote:
> > diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
> > index b47679b..1ca2559 100644
> > --- a/fs/jffs2/erase.c
> > +++ b/fs/jffs2/erase.c
> > @@ -114,6 +114,11 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info
> *c, int count)
> >     while (!list_empty(&c->erase_complete_list) ||
> >            !list_empty(&c->erase_pending_list)) {
> >
> > +      if (signal_pending(current)) {
> > +         spin_unlock(&c->erase_completion_lock);
> > +         mutex_unlock(&c->erase_free_sem);
> > +         goto done;
> > +      }
>
> Err, I thought you would remove signal checking from this function? It
> really does not belong here.

Slight misunderstanding, it needs to be there otherwise my patches won't do any good.
Removing signal from this function basically means that we should remove count
and only erase one block per invocation. Basically the while !empty loop needs to move
into the GC task instead. This is a somewhat bigger surgery but doable.

   Jocke




More information about the linux-mtd mailing list