Re: [PATCH 4.4 49/91] ext4: preserve the needs_recovery flag when the journal is aborted

From: Theodore Ts'o
Date: Fri Mar 10 2017 - 15:14:20 EST


On Fri, Mar 10, 2017 at 04:58:02PM +0000, Ben Hutchings wrote:
> > ---
> >  fs/ext4/super.c |    6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > --- a/fs/ext4/super.c
> > +++ b/fs/ext4/super.c
> [...]
> > @@ -802,9 +803,10 @@ static void ext4_put_super(struct super_
> >   destroy_workqueue(sbi->rsv_conversion_wq);
> >  
> >   if (sbi->s_journal) {
> > + aborted = is_journal_aborted(sbi->s_journal);
> >   err = jbd2_journal_destroy(sbi->s_journal);
> >   sbi->s_journal = NULL;
> > - if (err < 0)
> > + if ((err < 0) && !aborted)
> >   ext4_abort(sb, "Couldn't clean up the journal");
> [...]
>
> Shouldn't the aborted flag also be set here when err < 0?

Nice catch. That's a separate issue (the bug was there before this
commit), though I'll send a separate patch to fix this in mainline and
then cc stable, OK?

- Ted