From: Mingming Cao <cmm@us.ibm.com>
To: Badari Pulavarty <pbadari@gmail.com>
Cc: Andreas Dilger <adilger@sun.com>,
Girish Shilamkar <girish@clusterfs.com>,
Avantika Mathur <mathur@linux.vnet.ibm.com>,
ext4 <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH][RFC]JBD2: Fix journal checksum kernel oops on NUMA
Date: Mon, 05 Nov 2007 15:21:36 -0800 [thread overview]
Message-ID: <1194304896.3987.27.camel@localhost.localdomain> (raw)
In-Reply-To: <1194286053.17333.14.camel@dyn9047017100.beaverton.ibm.com>
On Mon, 2007-11-05 at 10:07 -0800, Badari Pulavarty wrote:
> On Tue, 2007-11-06 at 00:15 +0800, Andreas Dilger wrote:
> > On Nov 05, 2007 08:04 -0800, Badari Pulavarty wrote:
> > > On Sat, 2007-11-03 at 09:36 +0800, Andreas Dilger wrote:
> > > > But... this implies that every user of bh->b_data needs to kmap, and I
> > > > don't see that in the code anywhere else. That makes me think something
> > > > else is going wrong here.
> > >
> > > Most cases, this is handled in ll_rw_block() code - when we submit the
> > > buffer head for IO. If the page is in highmem, we will end up creating
> > > a bounce bufer for it.
> > >
> > > In our case, JBD code is trying to look at the data to do checksum
> > > on it. Thats why we have to kmap() the page before looking.
> >
> > My point is that there is a LOT of code in ext[234] that dereferences
> > bh->b_data without kmap() (e.g. group descriptors, bitmaps, superblock,
> > inode tables, etc). Does that imply that something is forcing those
> > bh pages into lowmem, or is the journal bh page in question being
> > allocated in some different way that allows it to be in highmem?
>
> Yes. You are right. Its been a while since I had to deal with HIGHMEM.
> All the meta-data should be in LOWMEM. I asked Mingming to verify
> what the buffer-head is pointing to when it has HIGHMEM page.
>
The buffer_heads with NULL bh->b_data(under the "start_journal_io"
branch in jbd2_journal_commit_transaction() code) is created by
jbd2_journal_write_metadata_buffer().
Noticed that in jbd2_journal_write_metadata_buffer(), there are
multiple places which do kmap_atomic() to access the journal bh page
(new_page). In the normal case the new_page is pointing to the bh
pages, which(the page) was initially allocated by _page_cache_alloc()
(sb_bread->__bread()->_...>find_or_create_page()->_page_cache_alloc()
In the case it need a data copy (the buffer start with the
JBD2_MAGIC_NUMBER?), a new page is allocated by by
__get_free_pages()(via jbd2_alloc, which is possible allocated in
highmem. __get_free_pages calls alloc_pages() directly, doesn't seem to
have highmem handling like __page_cache_alloc().
I am not sure why we saw this issue on 2.6.23 kernel, where
jbd2_slab_alloc()->kmem_cache_alloc() is used. Isn't all slab pages
under lowmem?
Regards,
Mingming
next prev parent reply other threads:[~2007-11-05 23:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-30 18:16 jbd2_journal_commit_transaction oops Avantika Mathur
2007-08-31 9:21 ` Girish Shilamkar
2007-08-31 21:32 ` Avantika Mathur
2007-09-13 9:49 ` Girish Shilamkar
2007-11-02 0:40 ` [PATCH][RFC]JBD2: Fix journal checksum kernel oops on NUMA Mingming Cao
2007-11-02 5:20 ` Andreas Dilger
2007-11-02 16:31 ` Badari Pulavarty
2007-11-03 1:36 ` Andreas Dilger
2007-11-05 16:04 ` Badari Pulavarty
2007-11-05 16:15 ` Andreas Dilger
2007-11-05 18:07 ` Badari Pulavarty
2007-11-05 23:21 ` Mingming Cao [this message]
2007-11-06 1:33 ` Andreas Dilger
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=1194304896.3987.27.camel@localhost.localdomain \
--to=cmm@us.ibm.com \
--cc=adilger@sun.com \
--cc=girish@clusterfs.com \
--cc=linux-ext4@vger.kernel.org \
--cc=mathur@linux.vnet.ibm.com \
--cc=pbadari@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.