jbd2: Fix checkpoint list cleanup
Jan Kara
maintainerPATCH 1/1 jbd2: Fix checkpoint list cleanup
Unlike comments and expectation of callers journal_clean_one_cp_list() returned 1 not only if it freed the transaction but also if it freed some buffers in the transaction. That could make __jbd2_journal_clean_checkpoint_list() skip processing t_checkpoint_io_list and continue with processing the next transaction. This is mostly a cosmetic issue since the only result is we can sometimes free less memory than we could. But it's still worth fixing. Fix journal_clean_one_cp_list() to return 1 only if the transaction was really freed.
--- fs/jbd2/checkpoint.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
fs/jbd2/checkpoint.c +3 -5
@@ -427,7 +427,6 @@ static int journal_clean_one_cp_list(struct journal_head *jh, bool destroy)struct journal_head *last_jh;struct journal_head *next_jh = jh;int ret; -int freed =0 ;if (!jh)return 0 ;
@@ -441,10 +440,9 @@ static int journal_clean_one_cp_list(struct journal_head *jh, bool destroy)else ret =__jbd2_journal_remove_checkpoint (jh) +1 ;if (!ret) -return freed; +return 0 ;if (ret ==2 )return 1 ; - freed =1 ;/* * This function only frees up some memory * if possible so we dont have an obligation
@@ -452,10 +450,10 @@ static int journal_clean_one_cp_list(struct journal_head *jh, bool destroy)* requested: */ if (need_resched ()) -return freed; +return 0 ; }while (jh != last_jh); -return freed; +return 0 ; }/*
Signature · 1 line
2.1.4
Quoted 10 lines · Jan Kara
Unlike comments and expectation of callers
journal_clean_one_cp_list()returned 1 not only if it freed the transaction but also if it freed some buffers in the transaction. That could make__jbd2_journal_clean_checkpoint_list()skip processingt_checkpoint_io_listand continue with processing the next transaction. This is mostly a cosmetic issue since the only result is we can sometimes free less memory than we could. But it's still worth fixing. Fixjournal_clean_one_cp_list()to return 1 only if the transaction was really freed.
Quoted 2 lines
Fixes 50849db32a9f529235a84bcc84a6b8e631b1d0ecSigned-off-by Jan Kara <[email protected]>
Applied, thanks.
- Ted