From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
To: "linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Subject: should bdi_init() initialize congested_fn?
Date: Thu, 13 Oct 2011 17:12:29 +0200 [thread overview]
Message-ID: <4E96FFDD.5030905@itwm.fraunhofer.de> (raw)
Hello,
while testing FhGFS I got a stack trace that seems to point out that
bdi_congested() tries to call an uninitialized bdi->congested_fn().
So I checked where ->congested_fn() is initialized - with exception of
btrfs I do not find a file system that does that at all. But then
bdi_init(), which is called by most file systems for initialization also
does *not* initialize it. So either I'm missing something, or almost all
bdi users have a bug?
Thanks,
Bernd
> [ 351.110903] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
[...]
> [ 351.112022] Call Trace:
> [ 351.112022] [<ffffffff8139a86d>] ? _raw_spin_lock_irq+0x1d/0x60
> [ 351.112022] [<ffffffff8139b0f0>] ? _raw_spin_unlock_irq+0x30/0x50
> [ 351.112022] [<ffffffff81112af3>] shrink_inactive_list+0x193/0x430
> [ 351.112022] [<ffffffff8110871a>] ? determine_dirtyable_memory+0x1a/0x30
> [ 351.112022] [<ffffffff811131fe>] shrink_zone+0x46e/0x5e0
> [ 351.112022] [<ffffffff81114689>] try_to_free_pages+0x1b9/0x560
> [ 351.112022] [<ffffffff8114c395>] ? __slab_alloc+0x405/0x5c0
> [ 351.112022] [<ffffffff811075af>] __alloc_pages_nodemask+0x4af/0x860
> [ 351.112022] [<ffffffff8114c8a5>] ? __kmalloc_node+0x145/0x210
> [ 351.112022] [<ffffffff81140933>] alloc_pages_current+0x83/0x100
> [ 351.112022] [<ffffffff811336da>] __vmalloc_node_range+0x16a/0x210
[...]
> [ 351.112022] RIP [<ffffffff8111247f>] shrink_page_list+0x47f/0x960
> (gdb) l *(shrink_page_list+0x47f)
> 0xffffffff8111247f is in shrink_page_list (include/linux/backing-dev.h:266).
> 261 int writeback_in_progress(struct backing_dev_info *bdi);
> 262
> 263 static inline int bdi_congested(struct backing_dev_info *bdi, int bdi_bits)
> 264 {
> 265 if (bdi->congested_fn)
> 266 return bdi->congested_fn(bdi->congested_data, bdi_bits);
> 267 return (bdi->state & bdi_bits);
> 268 }
> 269
next reply other threads:[~2011-10-13 15:12 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-13 15:12 Bernd Schubert [this message]
2011-10-13 23:12 ` should bdi_init() initialize congested_fn? Dave Chinner
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=4E96FFDD.5030905@itwm.fraunhofer.de \
--to=bernd.schubert@itwm.fraunhofer.de \
--cc=fengguang.wu@intel.com \
--cc=linux-fsdevel@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).