[PATCH] JFFS2: Erase max 3 EB's in jffs2_write_super()

Artem Bityutskiy dedekind1 at gmail.com
Tue Feb 9 07:07:21 EST 2010


On Tue, 2010-02-02 at 10:44 +0100, Joakim Tjernlund wrote:
> Joakim Tjernlund <Joakim.Tjernlund at transmode.se> wrote on 2010/02/02 10:40:00:
> >
> > Deleting big files in a JFFS2 root FS and the rebooting makes
> > the system hang until all freed EB's has been erased which
> > can take several minutes.
> > Fix the hanging by making jffs2_write_super() erase max 3 EB's
> > at a time. If there are more EB's to erase afterwards, reset the
> > s_dirty flag.
> >
> > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
> > ---
> >
> >  I hope the list_empty calls doesn't need locking. If
> >  so, it can easily be added.
> >
> >  fs/jffs2/super.c |    5 ++++-
> >  1 files changed, 4 insertions(+), 1 deletions(-)
> >
> > diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
> > index 9a80e8e..10393e0 100644
> > --- a/fs/jffs2/super.c
> > +++ b/fs/jffs2/super.c
> > @@ -64,7 +64,10 @@ static void jffs2_write_super(struct super_block *sb)
> >     if (!(sb->s_flags & MS_RDONLY)) {
> 
> I wonder if not MS_ACTIVE should be included in the above test too?

If this function is called with MS_ACTIVE flag, I'd say this is a bug.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)




More information about the linux-mtd mailing list