* [BUG]kmalloc memory in reiserfs code failed on a dual amd64/4G linux 2.6.2 box
@ 2004-02-13 3:16 lepton
2004-02-13 6:31 ` Andrew Morton
0 siblings, 1 reply; 4+ messages in thread
From: lepton @ 2004-02-13 3:16 UTC (permalink / raw)
To: linux-kernel
I seen such dmesg in mu dual amd64/4G memory box.
I am running kernel 2.6.2
This is the second time I saw some problems about __alloc_pages on this
amd 64 box...
sort: page allocation failure. order:1, mode:0x20
Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
<ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
<ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
<ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
<ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff801bd6a8>{pathrelse+40}
<ffffffff801a834b>{reiserfs_create+171} <ffffffff8017690c>{vfs_create+140}
<ffffffff80176ca8>{open_namei+424} <ffffffff801675a7>{filp_open+39}
<ffffffff801210a8>{sys32_open+56} <ffffffff8011e25e>{ia32_do_syscall+30}
sort: page allocation failure. order:1, mode:0x20
Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
<ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
<ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
<ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
<ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff801bd6a8>{pathrelse+40}
<ffffffff801a834b>{reiserfs_create+171} <ffffffff8017690c>{vfs_create+140}
<ffffffff80176ca8>{open_namei+424} <ffffffff801675a7>{filp_open+39}
<ffffffff801210a8>{sys32_open+56} <ffffffff8011e25e>{ia32_do_syscall+30}
sort: page allocation failure. order:1, mode:0x20
Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
<ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
<ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
<ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
<ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff801bd6a8>{pathrelse+40}
<ffffffff801a834b>{reiserfs_create+171} <ffffffff8017690c>{vfs_create+140}
<ffffffff80176ca8>{open_namei+424} <ffffffff801675a7>{filp_open+39}
<ffffffff801210a8>{sys32_open+56} <ffffffff8011e25e>{ia32_do_syscall+30}
sort: page allocation failure. order:1, mode:0x20
Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
<ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
<ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
<ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
<ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff801bd6a8>{pathrelse+40}
<ffffffff801a834b>{reiserfs_create+171} <ffffffff8017690c>{vfs_create+140}
<ffffffff80176ca8>{open_namei+424} <ffffffff801675a7>{filp_open+39}
<ffffffff801210a8>{sys32_open+56} <ffffffff8011e25e>{ia32_do_syscall+30}
sort: page allocation failure. order:1, mode:0x20
Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
<ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
<ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
<ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
<ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff8014e2a5>{buffered_rmqueue+325}
<ffffffff801bd6a8>{pathrelse+40} <ffffffff801a834b>{reiserfs_create+171}
<ffffffff8017690c>{vfs_create+140} <ffffffff80176ca8>{open_namei+424}
<ffffffff801675a7>{filp_open+39} <ffffffff801210a8>{sys32_open+56}
<ffffffff8011e25e>{ia32_do_syscall+30}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG]kmalloc memory in reiserfs code failed on a dual amd64/4G linux 2.6.2 box
2004-02-13 3:16 [BUG]kmalloc memory in reiserfs code failed on a dual amd64/4G linux 2.6.2 box lepton
@ 2004-02-13 6:31 ` Andrew Morton
2004-02-13 10:46 ` Nikita Danilov
2004-02-13 10:57 ` Oleg Drokin
0 siblings, 2 replies; 4+ messages in thread
From: Andrew Morton @ 2004-02-13 6:31 UTC (permalink / raw)
To: lepton; +Cc: linux-kernel, Nikita Danilov
lepton <lepton@mail.goldenhope.com.cn> wrote:
>
> I seen such dmesg in mu dual amd64/4G memory box.
>
> I am running kernel 2.6.2
>
> This is the second time I saw some problems about __alloc_pages on this
> amd 64 box...
>
>
> sort: page allocation failure. order:1, mode:0x20
>
> Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
> <ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
> <ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
> <ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
> <ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff801bd6a8>{pathrelse+40}
> <ffffffff801a834b>{reiserfs_create+171} <ffffffff8017690c>{vfs_create+140}
> <ffffffff80176ca8>{open_namei+424} <ffffffff801675a7>{filp_open+39}
> <ffffffff801210a8>{sys32_open+56} <ffffffff8011e25e>{ia32_do_syscall+30}
Nikita, why cannot get_mem_for_virtual_node() use GFP_KERNEL?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG]kmalloc memory in reiserfs code failed on a dual amd64/4G linux 2.6.2 box
2004-02-13 6:31 ` Andrew Morton
@ 2004-02-13 10:46 ` Nikita Danilov
2004-02-13 10:57 ` Oleg Drokin
1 sibling, 0 replies; 4+ messages in thread
From: Nikita Danilov @ 2004-02-13 10:46 UTC (permalink / raw)
To: Andrew Morton; +Cc: lepton, linux-kernel
Andrew Morton writes:
> lepton <lepton@mail.goldenhope.com.cn> wrote:
> >
> > I seen such dmesg in mu dual amd64/4G memory box.
> >
> > I am running kernel 2.6.2
> >
> > This is the second time I saw some problems about __alloc_pages on this
> > amd 64 box...
> >
> >
> > sort: page allocation failure. order:1, mode:0x20
> >
> > Call Trace:<ffffffff8014e5f0>{__alloc_pages+816} <ffffffff8014e65e>{__get_free_pages+78}
> > <ffffffff80151921>{cache_grow+177} <ffffffff80151e78>{cache_alloc_refill+440}
> > <ffffffff801521c6>{__kmalloc+102} <ffffffff801b44f6>{get_mem_for_virtual_node+102}
> > <ffffffff801b49a8>{fix_nodes+232} <ffffffff801c08c5>{reiserfs_insert_item+149}
> > <ffffffff801acf2c>{reiserfs_new_inode+892} <ffffffff801bd6a8>{pathrelse+40}
> > <ffffffff801a834b>{reiserfs_create+171} <ffffffff8017690c>{vfs_create+140}
> > <ffffffff80176ca8>{open_namei+424} <ffffffff801675a7>{filp_open+39}
> > <ffffffff801210a8>{sys32_open+56} <ffffffff8011e25e>{ia32_do_syscall+30}
>
> Nikita, why cannot get_mem_for_virtual_node() use GFP_KERNEL?
Some stage in reiserfs balancing (fix_nodes() function) has to be
performed without ever scheduling. If it schedules, it has to be
restarted. As we don't want to restart often, we first try to do atomic
allocation, and if it fails, GFP_NOFS allocation is done, and
fix_nodes() restarted.
All we need is to suppress warning.
Nikita.
----------------------------------------------------------------------
===== fs/reiserfs/fix_node.c 1.30 vs edited =====
--- 1.30/fs/reiserfs/fix_node.c Tue Jul 15 21:01:30 2003
+++ edited/fs/reiserfs/fix_node.c Fri Feb 13 13:39:25 2004
@@ -2037,7 +2037,7 @@
tb->vn_buf_size = size;
/* get memory for virtual item */
- buf = reiserfs_kmalloc(size, GFP_ATOMIC, tb->tb_sb);
+ buf = reiserfs_kmalloc(size, GFP_ATOMIC | __GFP_NOWARN, tb->tb_sb);
if ( ! buf ) {
/* getting memory with GFP_KERNEL priority may involve
balancing now (due to indirect_to_direct conversion on
----------------------------------------------------------------------
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG]kmalloc memory in reiserfs code failed on a dual amd64/4G linux 2.6.2 box
2004-02-13 6:31 ` Andrew Morton
2004-02-13 10:46 ` Nikita Danilov
@ 2004-02-13 10:57 ` Oleg Drokin
1 sibling, 0 replies; 4+ messages in thread
From: Oleg Drokin @ 2004-02-13 10:57 UTC (permalink / raw)
To: linux-kernel, akpm
Hello!
Andrew Morton <akpm@osdl.org> wrote:
>> sort: page allocation failure. order:1, mode:0x20
AM> Nikita, why cannot get_mem_for_virtual_node() use GFP_KERNEL?
Well, I am not Nikita, but this comment appears at the place:
/* get memory for virtual item */
buf = reiserfs_kmalloc(size, GFP_ATOMIC, tb->tb_sb);
if ( ! buf ) {
/* getting memory with GFP_KERNEL priority may involve
balancing now (due to indirect_to_direct conversion on
dcache shrinking). So, release path and collected
resources here */
free_buffers_in_tb (tb);
buf = reiserfs_kmalloc(size, GFP_NOFS, tb->tb_sb);
..
This should answer your question, I guess.
Bye,
Oleg
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-02-13 10:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-02-13 3:16 [BUG]kmalloc memory in reiserfs code failed on a dual amd64/4G linux 2.6.2 box lepton
2004-02-13 6:31 ` Andrew Morton
2004-02-13 10:46 ` Nikita Danilov
2004-02-13 10:57 ` Oleg Drokin
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®