On Mon 03-02-20 22:04:57, zhangyi (F) wrote: > There is no need to delay the clearing of b_modified flag to the > transaction committing time when unmapping the journalled buffer, so > just move it to the journal_unmap_buffer(). > > Signed-off-by: zhangyi (F) <yi.zhang@xxxxxxxxxx> Thanks for the patch. It looks good, just one small comment below: > diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c > index e77a5a0b4e46..a479cbf8ae54 100644 > --- a/fs/jbd2/transaction.c > +++ b/fs/jbd2/transaction.c > @@ -2337,11 +2337,7 @@ static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh, > set_buffer_freed(bh); > if (journal->j_running_transaction && buffer_jbddirty(bh)) > jh->b_next_transaction = journal->j_running_transaction; > - spin_unlock(&journal->j_list_lock); > - spin_unlock(&jh->b_state_lock); > - write_unlock(&journal->j_state_lock); > - jbd2_journal_put_journal_head(jh); > - return 0; > + may_free = 0; I'd rather add b_modified clearing here than trying to reuse the tail of the function. Because this condition is different from the other ones that end up in zap_buffer_locked - here we really want to keep bh and jh mostly intact. Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR