Lost JBD fix [message #14934] |
Mon, 09 July 2007 18:14 |
Jan Kara
Messages: 13 Registered: July 2007
|
Junior Member |
|
|
Hi Andrew,
it seems we've accidentally lost one JBD fix (probably it was my mistake
when rediffing some checkpointing changes) as Kirill has noted. A transaction
can currently be released when there are still some buffers on one of its
checkpointing lists. Attached patch should fix it (it still seems to apply
fine). Please apply it. Thanks.
Honza
--
Jan Kara <jack@suse.cz>
SuSE CR Labs
|
|
|
|
Re: Lost JBD fix [message #14940 is a reply to message #14936] |
Fri, 13 July 2007 17:16 |
Jan Kara
Messages: 13 Registered: July 2007
|
Junior Member |
|
|
On Wed 11-07-07 13:55:30, Chuck Ebbert wrote:
> On 07/09/2007 02:14 PM, Jan Kara wrote:
> > Hi Andrew,
> >
> > it seems we've accidentally lost one JBD fix (probably it was my mistake
> > when rediffing some checkpointing changes) as Kirill has noted. A transaction
> > can currently be released when there are still some buffers on one of its
> > checkpointing lists. Attached patch should fix it (it still seems to apply
> > fine). Please apply it. Thanks.
> >
> > Honza
> >
> >
> > ------------------------------------------------------------ ------------
> >
> > We have to check that also the second checkpoint list is non-empty before
> > dropping the transaction.
> >
> > Signed-off-by: Jan Kara <jack@suse.cz>
> >
> > diff -rupX /home/jack/.kerndiffexclude linux-2.6.16-rc1/fs/jbd/commit.c linux-2.6.16-rc1-1-checkpoint-fix/fs/jbd/commit.c
> > --- linux-2.6.16-rc1/fs/jbd/commit.c 2006-01-15 00:20:12.000000000 +0100
> > +++ linux-2.6.16-rc1-1-checkpoint-fix/fs/jbd/commit.c 2006-01-17 23:35:19.000000000 +0100
> > @@ -829,7 +829,8 @@ restart_loop:
> > journal->j_committing_transaction = NULL;
> > spin_unlock(&journal->j_state_lock);
> >
> > - if (commit_transaction->t_checkpoint_list == NULL) {
> > + if (commit_transaction->t_checkpoint_list == NULL &&
> > + commit_transaction->t_checkpoint_io_list == NULL) {
> > __journal_drop_transaction(journal, commit_transaction);
> > } else {
> > if (journal->j_checkpoint_transactions == NULL) {
>
> Critical bugfix -- 2.6.22-stable (no earlier versions) should get
> this too, right?
Yes, the bugfix is probably obvious enough to go into -stable.
Honza
--
Jan Kara <jack@suse.cz>
SuSE CR Labs
|
|
|