Skip to contentSkip to conversation

kernel messages when "rmmod md" module

DISCUSSION 王志坤 2 participants 2 messages May 31, 2006 – Jun 1, 2006 1 message not in the archive MD RAID

lore
Share & tools
lore

王志坤

author
#0 lore raw

hi,
I build the linux-2.6.11 kernel using the default kernle config file in configs directory and just config "<M> RAID support". When i use "mdadm -S /dev/md0" to stop md, everything is ok! But when i "rmmod md", kernel prints messages as follow.

Debug: sleeping function called from invalid context at kernel/workqueue.c:264 in_atomic():1, irqs_disabled():0

 [<c013bbf4>] flush_workqueue+0x1a/0x27
 [<c029ec2f>] blk_cleanup_queue+0x30/0x78
 [<c021eb5d>] kref_put+0x29/0x8c
 [<e11e50d1>] mddev_put+0xad/0x133 [md]
 [<c021df71>] kobject_put+0x1e/0x22
 [<e11ec802>] md_exit+0x1ce/0x2b3 [md]
 [<c014a059>] __try_stop_module+0x27/0x3e
 [<c014a098>] try_stop_module+0x28/0x2d
 [<c014a248>] sys_delete_module+0x13b/0x180
 [<c0108ac4>] do_syscall_trace+0x10b/0x14c
 [<c010384d>] syscall_call+0x7/0xb
    I add some debug message in the md.c and find "md_exit" function calls "mddev_put" function. After "mddev_put" function calls "blk_put_queue(mddev->queue);", the kernel prints message as above.
	I have noticed that "do_md_stop" function calls "mddev->pers->stop(mddev);", and "stop" function has called "blk_sync_queue(mddev->queue);"
 
	Would anybody give me some suggestions? Thanks!

A message that is not in the archive (sent off-list or not yet received): =?ISO-8859-1?Q?=20=1B$(AMuV>@$=1B(B?=

#2 lore raw
Quoted 17 lines · On Wednesday May 31, [email protected] wrote:

hi,
I build the linux-2.6.11 kernel using the default kernle config file in configs directory and just config "<M> RAID support". When i use "mdadm -S /dev/md0" to stop md, everything is ok! But when i "rmmod md", kernel prints messages as follow.

Debug: sleeping function called from invalid context at kernel/workqueue.c:264 in_atomic():1, irqs_disabled():0

 [<c013bbf4>] flush_workqueue+0x1a/0x27
 [<c029ec2f>] blk_cleanup_queue+0x30/0x78
 [<c021eb5d>] kref_put+0x29/0x8c
 [<e11e50d1>] mddev_put+0xad/0x133 [md]
 [<c021df71>] kobject_put+0x1e/0x22
 [<e11ec802>] md_exit+0x1ce/0x2b3 [md]
 [<c014a059>] __try_stop_module+0x27/0x3e
 [<c014a098>] try_stop_module+0x28/0x2d
 [<c014a248>] sys_delete_module+0x13b/0x180
 [<c0108ac4>] do_syscall_trace+0x10b/0x14c
 [<c010384d>] syscall_call+0x7/0xb
Quoted 4 lines
    I add some debug message in the md.c and find "md_exit" function calls "mddev_put" function. After "mddev_put" function calls "blk_put_queue(mddev->queue);", the kernel prints message as above.
	I have noticed that "do_md_stop" function calls "mddev->pers->stop(mddev);", and "stop" function has called "blk_sync_queue(mddev->queue);"
 
	Would anybody give me some suggestions? Thanks!

You should always work with the latest kernel.
That problem was fixed recently in

http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=926ce2d8a7d446c720faec9d8c5105eeb04bcf7a

NeilBrown