2004-09-05 14:54:53

by Borislav Petkov

[permalink] [raw]
Subject: voluntary-preempt-2.6.7-vanilla-H4 function sleeps inside a spinlock

Hi,

I've applied the patch in the subject line and everything was running fine for
several but today day, during heavy hd activity, i got the following:

Sep 5 16:34:13 gollum kernel: Debug: sleeping function called from invalid
context pdflush(41) at fs/inode.c:245
Sep 5 16:34:13 gollum kernel: in_atomic():1, irqs_disabled():0
Sep 5 16:34:13 gollum kernel: [dump_stack+30/48] dump_stack+0x1e/0x30
Sep 5 16:34:13 gollum kernel: [__might_sleep+205/256]
__might_sleep+0xcd/0x100
Sep 5 16:34:13 gollum kernel: [clear_inode+31/240] clear_inode+0x1f/0xf0
Sep 5 16:34:13 gollum kernel: [generic_delete_inode+206/768]
generic_delete_inode+0xce/0x300
Sep 5 16:34:13 gollum kernel: [iput+100/144] iput+0x64/0x90
Sep 5 16:34:13 gollum kernel: [dput+554/1840] dput+0x22a/0x730
Sep 5 16:34:13 gollum kernel: [release_task+548/880]
release_task+0x224/0x370
Sep 5 16:34:13 gollum kernel: [do_exit+1369/2528] do_exit+0x559/0x9e0
Sep 5 16:34:13 gollum kernel: [kernel_thread_helper+11/16]
kernel_thread_helper+0xb/0x10
Sep 5 16:34:13 gollum kernel:
Sep 5 16:34:50 gollum kernel: Debug: sleeping function called from invalid
context pdflush(42) at fs/inode.c:245
Sep 5 16:34:50 gollum kernel: in_atomic():1, irqs_disabled():0
Sep 5 16:34:50 gollum kernel: [dump_stack+30/48] dump_stack+0x1e/0x30
Sep 5 16:34:50 gollum kernel: [__might_sleep+205/256]
__might_sleep+0xcd/0x100
Sep 5 16:34:50 gollum kernel: [clear_inode+31/240] clear_inode+0x1f/0xf0
Sep 5 16:34:50 gollum kernel: [generic_delete_inode+206/768]
generic_delete_inode+0xce/0x300
Sep 5 16:34:50 gollum kernel: [iput+100/144] iput+0x64/0x90
Sep 5 16:34:50 gollum kernel: [dput+554/1840] dput+0x22a/0x730
Sep 5 16:34:50 gollum kernel: [release_task+548/880]
release_task+0x224/0x370
Sep 5 16:34:50 gollum kernel: [do_exit+1369/2528] do_exit+0x559/0x9e0
Sep 5 16:34:50 gollum kernel: [kernel_thread_helper+11/16]
kernel_thread_helper+0xb/0x10
Sep 5 16:34:50 gollum kernel:

I have also several ACPI patches applied but I think this is
unrelated. .config attached.

Regards,
Boris.


Attachments:
(No filename) (0.00 B)
(No filename) (189.00 B)
Download all attachments

2004-09-05 19:46:38

by Borislav Petkov

[permalink] [raw]
Subject: Re: voluntary-preempt-2.6.7-vanilla-H4 function sleeps inside a spinlock, SOLVED?

On Sunday 05 September 2004 16:52, you wrote:
> Hi,
>
> I've applied the patch in the subject line and everything was running fine
> for several but today day, during heavy hd activity, i got the following:
>
> Sep 5 16:34:13 gollum kernel: Debug: sleeping function called from invalid
> context pdflush(41) at fs/inode.c:245
> Sep 5 16:34:13 gollum kernel: in_atomic():1, irqs_disabled():0
> Sep 5 16:34:13 gollum kernel: [dump_stack+30/48] dump_stack+0x1e/0x30
> Sep 5 16:34:13 gollum kernel: [__might_sleep+205/256]
> __might_sleep+0xcd/0x100
> Sep 5 16:34:13 gollum kernel: [clear_inode+31/240] clear_inode+0x1f/0xf0
> Sep 5 16:34:13 gollum kernel: [generic_delete_inode+206/768]
> generic_delete_inode+0xce/0x300
> Sep 5 16:34:13 gollum kernel: [iput+100/144] iput+0x64/0x90
> Sep 5 16:34:13 gollum kernel: [dput+554/1840] dput+0x22a/0x730
> Sep 5 16:34:13 gollum kernel: [release_task+548/880]
> release_task+0x224/0x370
> Sep 5 16:34:13 gollum kernel: [do_exit+1369/2528] do_exit+0x559/0x9e0
> Sep 5 16:34:13 gollum kernel: [kernel_thread_helper+11/16]
> kernel_thread_helper+0xb/0x10
> Sep 5 16:34:13 gollum kernel:
> Sep 5 16:34:50 gollum kernel: Debug: sleeping function called from invalid
> context pdflush(42) at fs/inode.c:245
> Sep 5 16:34:50 gollum kernel: in_atomic():1, irqs_disabled():0
> Sep 5 16:34:50 gollum kernel: [dump_stack+30/48] dump_stack+0x1e/0x30
> Sep 5 16:34:50 gollum kernel: [__might_sleep+205/256]
> __might_sleep+0xcd/0x100
> Sep 5 16:34:50 gollum kernel: [clear_inode+31/240] clear_inode+0x1f/0xf0
> Sep 5 16:34:50 gollum kernel: [generic_delete_inode+206/768]
> generic_delete_inode+0xce/0x300
> Sep 5 16:34:50 gollum kernel: [iput+100/144] iput+0x64/0x90
> Sep 5 16:34:50 gollum kernel: [dput+554/1840] dput+0x22a/0x730
> Sep 5 16:34:50 gollum kernel: [release_task+548/880]
> release_task+0x224/0x370
> Sep 5 16:34:50 gollum kernel: [do_exit+1369/2528] do_exit+0x559/0x9e0
> Sep 5 16:34:50 gollum kernel: [kernel_thread_helper+11/16]
> kernel_thread_helper+0xb/0x10
> Sep 5 16:34:50 gollum kernel:
>
> I have also several ACPI patches applied but I think this is
> unrelated. .config attached.
>
> Regards,
> Boris.

Ok, since I'm no expert I went for the obvious solution and removed the
preemption point in fs/inode.c,245:

void clear_inode(struct inode *inode)
{
/* might_sleep(); */
invalidate_inode_buffers(inode);

if (inode->i_data.nrpages)

However, maybe a more elegant solution would be preferrable. In addition, I
don't see the same preemption point in the latest patch -
voluntary-preempt-2.6.9-rc1-bk4-R4.patch.

Regards,
Boris.


Attachments:
(No filename) (2.58 kB)
(No filename) (189.00 B)
Download all attachments