From: "Laurence Oberman" <zaurus@photonlinux.com>
To: <linux-kernel@vger.kernel.org>
Subject: Understanding task_list pointers in a wait_queue_head_t
Date: Sun, 27 Feb 2005 09:07:31 -0500 [thread overview]
Message-ID: <3rr3e8$in75md@mxip10a.cluster1.charter.net> (raw)
Hello,
This is my first posting, so apologies if the answer to the question is
obvious to many of you. I have done a lot of investigation before I posted.
I have been attempting to isolate a hang in the Kernel which I suspect is
due to the HP insight manager daemon cmaidad. What I really need is a quick
explanation of the task_list pointers I see in the wait queues.
Here is an example of a task where I/O never returns for cmaidad. At the
bottom I get the data from the wait_queue structure and it does not make
sense to me.
crash-france> bt -t
PID: 3755 TASK: f1e5e000 CPU: 3 COMMAND: "cmaidad"
START: context_switch at c0125ed4
[f1e5fc44] __alloc_pages at c0158e60
[f1e5fc58] schedule at c0123f14
[f1e5fc9c] wait_for_completion at c0124621
[f1e5fcdc] start_io at f886d346
[f1e5fcf0] cciss_ioctl at f886b759
[f1e5fd00] __journal_file_buffer at f887d64f
[f1e5fd34] do_get_write_access at f887bcc8
[f1e5fd88] do_get_write_access at f887bcc8
[f1e5fdd8] journal_dirty_metadata at f887c72c
[f1e5fe00] ext3_do_update_inode at f88931ff
[f1e5fe48] journal_stop at f887cbbe
[f1e5fe78] ext3_commit_write at f8890fdf
[f1e5fe94] journal_dirty_sync_data at f8890d50
[f1e5feb4] follow_page at c01401e7
[f1e5ff34] futex_wake at c013c8b5
[f1e5ff3c] sys_msgrcv at c01aabf4
[f1e5ff50] blkdev_ioctl at c016d50e
[f1e5ff64] sys_ioctl at c0177f26
[f1e5ff90] Enf_ioctl at f8f542
>From bt -f
#2 [f1e5fc9c] wait_for_completion at c012461c
[RA: f886b759 SP: f1e5fca0 FP: f1e5fcf0 SIZE: 84]
f1e5fca0: 00000000 f1e5e000 00000000 00000000
f1e5fcb0: 00000000 e00b8000 00000000 00000030
f1e5fcc0: 00000001 f1e5e000 f1e5ff28 f1e5ff28
f1e5fcd0: 00000000 00000000 200b9000 f886d346
f1e5fce0: f1e5ff20 00003207 f1e5fedc e00b9000
f1e5fcf0: f886b759
crash-france> struct completion f1e5ff20
struct completion {
done = 0,
wait = {
lock = {
lock = 1
},
task_list = {
next = 0xf1e5fcc8, >>>>>>>
prev = 0xf1e5fcc8 >>>>>>> ???
}
}
}
Questions
-----------
The task_list next and previous are set the same, I assume this means there
is only one task on the wait queue.
Now the values:
I cannot find how to see the waiting task from the task list pointers. I
guess these are really the list_head pointers.
I cannot find these addresses in any of the task pointers, so how do I get
the task descriptors on the wait queues from these in the crash dump.
Thanks for the help.
Laurence Oberman
reply other threads:[~2005-02-27 14:07 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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='3rr3e8$in75md@mxip10a.cluster1.charter.net' \
--to=zaurus@photonlinux.com \
--cc=linux-kernel@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
Powered by JetHome