From: "Duane Griffin" <duaneg@dghda.com>
To: Andreas Dilger <adilger@sun.com>
Cc: Duane Griffin <duaneg@dghda.com>,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org,
Theodore Tso <tytso@mit.edu>,
sct@redhat.com, akpm@linux-foundation.org
Subject: Re: [PATCH 2/3] jbd2: replace potentially false assertion with if block
Date: Sat, 8 Mar 2008 13:33:24 +0000 [thread overview]
Message-ID: <20080308133324.GA9422@dastardly.plus.com> (raw)
In-Reply-To: <20080307212336.GE1881@webber.adilger.int>
On Fri, Mar 07, 2008 at 02:23:36PM -0700, Andreas Dilger wrote:
> On Mar 07, 2008 01:31 +0000, Duane Griffin wrote:
> > If an error occurs during jbd2 cache initialisation it is possible for the
> > journal_head_cache to be NULL when jbd2_journal_destroy_journal_head_cache is
> > called. Replace the J_ASSERT with an if block to handle the situation
> > correctly.
> >
> > Note that even with this fix things will break badly if jbd2 is statically
> > compiled in and cache initialisation fails.
>
> It would probably be prudent to verify that these caches are initialized
> at journal_load() time and either re-try to create the cache, and/or report
> an error in that case and refuse to continue mounting.
Sounds like a plan. I'll see what I can whip up.
> Also, I note that journal_init_journal_head_cache() is comparing pointers
> to "0", a style no-no...
Yes, checkpatch noticed that, too. It was in the original, so I left it
alone. There are also a couple of places in revoke.c where it is done.
See the patch below. If you like it I'll send through one for jbd too.
Cheers,
Duane.
--
"I never could learn to drink that blood and call it wine" - Bob Dylan
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 9d48419..75349b1 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1969,14 +1969,14 @@ static int journal_init_jbd2_journal_head_cache(void)
{
int retval;
- J_ASSERT(jbd2_journal_head_cache == 0);
+ J_ASSERT(!jbd2_journal_head_cache);
jbd2_journal_head_cache = kmem_cache_create("jbd2_journal_head",
sizeof(struct journal_head),
0, /* offset */
SLAB_TEMPORARY, /* flags */
NULL); /* ctor */
retval = 0;
- if (jbd2_journal_head_cache == 0) {
+ if (!jbd2_journal_head_cache) {
retval = -ENOMEM;
printk(KERN_EMERG "JBD: no memory for journal_head cache\n");
}
diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c
index 1bf4c1f..cae1172 100644
--- a/fs/jbd2/revoke.c
+++ b/fs/jbd2/revoke.c
@@ -174,13 +174,13 @@ int __init jbd2_journal_init_revoke_caches(void)
0,
SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY,
NULL);
- if (jbd2_revoke_record_cache == 0)
+ if (!jbd2_revoke_record_cache)
return -ENOMEM;
jbd2_revoke_table_cache = kmem_cache_create("jbd2_revoke_table",
sizeof(struct jbd2_revoke_table_s),
0, SLAB_TEMPORARY, NULL);
- if (jbd2_revoke_table_cache == 0) {
+ if (!jbd2_revoke_table_cache) {
kmem_cache_destroy(jbd2_revoke_record_cache);
jbd2_revoke_record_cache = NULL;
return -ENOMEM;
next prev parent reply other threads:[~2008-03-08 13:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5e28cd633c71f6354a203a43000cbe5fef045589.1204844851.git.duaneg@dghda.com>
2008-03-07 1:31 ` [PATCH 1/3] jbd2: eliminate duplicated code in revocation table init/destroy functions Duane Griffin
[not found] ` <48afbb3a44aa24dc1e31835c14e86c3c6c1c3b0a.1204844851.git.duaneg@dghda.com>
2008-03-07 1:31 ` [PATCH 2/3] jbd2: replace potentially false assertion with if block Duane Griffin
2008-03-07 21:23 ` Andreas Dilger
2008-03-08 13:33 ` Duane Griffin [this message]
2008-03-08 15:02 ` Christoph Hellwig
2008-03-08 16:40 ` Duane Griffin
2008-03-08 16:42 ` Christoph Hellwig
2008-03-08 18:37 ` Duane Griffin
2008-03-08 18:45 ` Christoph Hellwig
[not found] ` <dcb02b202f5a84c79c9e8b1b0102e6ad52ed3b53.1204844851.git.duaneg@dghda.com>
2008-03-07 1:31 ` [PATCH 3/3] jbd2: only create debugfs and stats entries if cache initialisation is successful Duane Griffin
2008-03-07 21:24 ` Andreas Dilger
2008-03-07 21:52 ` [PATCH 1/3] jbd2: eliminate duplicated code in revocation table init/destroy functions Andreas Dilger
2008-03-08 0:05 ` Mingming Cao
2008-03-08 13:26 ` Duane Griffin
2008-03-08 13:20 ` Duane Griffin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080308133324.GA9422@dastardly.plus.com \
--to=duaneg@dghda.com \
--cc=adilger@sun.com \
--cc=akpm@linux-foundation.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sct@redhat.com \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®