On Mon, Dec 02, 2013 at 09:45:02AM -0500, Theodore Ts'o wrote: > If a handle runs out of space, we currently stop the kernel with a > BUG. This makes it hard to figure out what might be going on. So > return an error of ENOSPC, so we can let the file system layer figure > out what is going on, to make it more likely we can get useful > debugging information). This should make it easier to debug problems > such as the one which was reported by: > > https://bugzilla.kernel.org/show_bug.cgi?id=44731 > > The only two callers of this function are ext4_handle_dirty_metadata() > and ocfs2_journal_dirty(). The ocfs2 function will trigger a > BUG_ON(), which means there will be no change in behavior. The ext4 > function will call ext4_error_inode() which will print the useful > debugging information and then handle the situation using ext4's error > handling mechanisms (i.e., which might mean halting the kernel or > remounting the file system read-only). > > Also, since both file systems already call WARN_ON(), drop the WARN_ON > from jbd2_journal_dirty_metadata() to avoid two stack traces from > being displayed. > > Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> > Cc: ocfs2-devel@xxxxxxxxxxxxxx Acked-by: Joel Becker <jlbec@xxxxxxxxxxxx> > --- > fs/jbd2/transaction.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c > index 7aa9a32..b0b74e5 100644 > --- a/fs/jbd2/transaction.c > +++ b/fs/jbd2/transaction.c > @@ -1290,7 +1290,10 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) > * once a transaction -bzzz > */ > jh->b_modified = 1; > - J_ASSERT_JH(jh, handle->h_buffer_credits > 0); > + if (handle->h_buffer_credits <= 0) { > + ret = -ENOSPC; > + goto out_unlock_bh; > + } > handle->h_buffer_credits--; > } > > @@ -1373,7 +1376,6 @@ out_unlock_bh: > jbd2_journal_put_journal_head(jh); > out: > JBUFFER_TRACE(jh, "exit"); > - WARN_ON(ret); /* All errors are bugs, so dump the stack */ > return ret; > } > > -- > 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 -- -- 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