On Wed 14-04-21 21:47:33, Zhang Yi wrote: > Now, we can make sure to abort the journal once the original buffer was ^^ Now that we can be sure the journal is aborted once a buffer has failed to be written back to disk, ... > failed to write back to disk, we can remove the journal abort logic in > jbd2_journal_try_to_free_buffers() which was introduced in > <c044f3d8360d> ("jbd2: abort journal if free a async write error > metadata buffer"), because it may costs and propably not safe. ^^ cost ^^ probably is > Signed-off-by: Zhang Yi <yi.zhang@xxxxxxxxxx> Looks good. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/jbd2/transaction.c | 17 ----------------- > 1 file changed, 17 deletions(-) > > diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c > index 9396666b7314..3e0db4953fe4 100644 > --- a/fs/jbd2/transaction.c > +++ b/fs/jbd2/transaction.c > @@ -2118,7 +2118,6 @@ int jbd2_journal_try_to_free_buffers(journal_t *journal, struct page *page) > { > struct buffer_head *head; > struct buffer_head *bh; > - bool has_write_io_error = false; > int ret = 0; > > J_ASSERT(PageLocked(page)); > @@ -2143,26 +2142,10 @@ int jbd2_journal_try_to_free_buffers(journal_t *journal, struct page *page) > jbd2_journal_put_journal_head(jh); > if (buffer_jbd(bh)) > goto busy; > - > - /* > - * If we free a metadata buffer which has been failed to > - * write out, the jbd2 checkpoint procedure will not detect > - * this failure and may lead to filesystem inconsistency > - * after cleanup journal tail. > - */ > - if (buffer_write_io_error(bh)) { > - pr_err("JBD2: Error while async write back metadata bh %llu.", > - (unsigned long long)bh->b_blocknr); > - has_write_io_error = true; > - } > } while ((bh = bh->b_this_page) != head); > > ret = try_to_free_buffers(page); > - > busy: > - if (has_write_io_error) > - jbd2_journal_abort(journal, -EIO); > - > return ret; > } > > -- > 2.25.4 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR