Teach journal_get_write_access() and journal_get_undo_access() to handle aborted trasaction handles. fs/jbd/transaction.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff -puN fs/jbd/transaction.c~ext3-aborted-journal-fix fs/jbd/transaction.c --- 25/fs/jbd/transaction.c~ext3-aborted-journal-fix 2003-08-05 23:53:16.000000000 -0700 +++ 25-akpm/fs/jbd/transaction.c 2003-08-05 23:56:47.000000000 -0700 @@ -525,12 +525,18 @@ do_get_write_access(handle_t *handle, st int force_copy, int *credits) { struct buffer_head *bh; - transaction_t *transaction = handle->h_transaction; - journal_t *journal = transaction->t_journal; + transaction_t *transaction; + journal_t *journal; int error; char *frozen_buffer = NULL; int need_copy = 0; + if (is_handle_aborted(handle)) + return -EROFS; + + transaction = handle->h_transaction; + journal = transaction->t_journal; + jbd_debug(5, "buffer_head %p, force_copy %d\n", jh, force_copy); JBUFFER_TRACE(jh, "entry"); _