[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130611021230.GA23966@thunk.org>
Date: Mon, 10 Jun 2013 22:12:30 -0400
From: Theodore Ts'o <tytso@....edu>
To: Paul Gortmaker <paul.gortmaker@...driver.com>
Cc: linux-ext4@...r.kernel.org, linux-rt-users@...r.kernel.org
Subject: Re: [PATCH 1/4] jbd2/journal_commit_transaction: relocate state lock
to incorporate all users
On Mon, Jun 10, 2013 at 03:32:00PM -0400, Paul Gortmaker wrote:
> The state lock is taken after we are doing an assert on the state
> value, not before. It is also taken after the jbd_debug() call.
> Noting that jbd_debug() is implemented with two separate printk()
> calls, it can lead to corrupted and misleading debug output like
> the following (see lines marked with "*"):
This is only a cosmetic fix, but instead of trying to fix it by moving
a lock --- which would only fix this issue, but there are probably
others cases where this might be an issue, I'd suggest fixing it with
something like this:
/* in fs/jbd2/journal.c */
void __jbd2_debug(int level, const char *func, unsigned int line, const char *fmt, ...)
{
struct va_format vaf;
va_list args;
if (level < jbd2_journal_enable_debug)
return;
va_start(args, fmt);
vaf.fmt = fmt;
vaf.va = &args
printk(KERN_DEBUG, "jbd2: (%s, %u): %pV\n", func, line, &vaf);
va_end(args);
}
/* in jbd2.h */
#define jbd_debug(n, fmt, a...) __jbd2_debug((n), __func__, __LINE__, (fmt), ##a)
Could you give this approach a try?
Thanks,
- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists