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.
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.