On Mon 02-12-13 09:45:01, Ted Tso wrote: > While it's true that errors can only happen if there is a bug in > jbd2_journal_dirty_metadata(), if a bug does happen, we need to halt > the kernel or remount the file system read-only in order to avoid > further data loss. The ext4_journal_abort_handle() function doesn't > do any of this, and while it's likely that this call (since it doesn't > adjust refcounts) will likely result in the file system eventually > deadlocking since the current transaction will never be able to close, > it's much cleaner to call let ext4's error handling system deal with > this situation. > > There's a separate bug here which is that if certain jbd2 errors > errors occur and file system is mounted errors=continue, the file > system will probably eventually end grind to a halt as described > above. But things have been this way in a long time, and usually when > we have these sorts of errors it's pretty much a disaster --- and > that's why the jbd2 layer aggressively retries memory allocations, > which is the most likely cause of these jbd2 errors. > > Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx The patch looks good. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/ext4/ext4_jbd2.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c > index 17ac112..3fe29de 100644 > --- a/fs/ext4/ext4_jbd2.c > +++ b/fs/ext4/ext4_jbd2.c > @@ -259,6 +259,15 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line, > if (WARN_ON_ONCE(err)) { > ext4_journal_abort_handle(where, line, __func__, bh, > handle, err); > + ext4_error_inode(inode, where, line, > + bh->b_blocknr, > + "journal_dirty_metadata failed: " > + "handle type %u started at line %u, " > + "credits %u/%u, errcode %d", > + handle->h_type, > + handle->h_line_no, > + handle->h_requested_credits, > + handle->h_buffer_credits, err); > } > } else { > if (inode) > -- > 1.8.5.rc3.362.gdf10213 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html