You'll want to look primarily in the swap_pager code since it messes with
that (at least it used to - I don't recall what Matt's new code does with it).
There should be various calls to vm_object_pip_* that manipulate the
paging_in_progress number.

-DG

David Greenman
Co-founder/Principal Architect, The FreeBSD Project - http://www.freebsd.org
Creator of high-performance Internet servers - http://www.terasolutions.com

>On Tuesday, 6th July 1999, Stephen McKay wrote:
>
>>the make world hangs with cc1 in "objtrm"...
>
>I'm having a fun old conversation with myself here! ;-)
>
>Here's some concrete info:
>
>(kgdb) p/x *(struct vm_object*) 0xc32ea21c
>$13 = {object_list = {tqe_next = 0xc3389e58, tqe_prev = 0xc323fdec}, 
>  shadow_head = {tqh_first = 0x0, tqh_last = 0xc32ea224}, shadow_list = {
>    tqe_next = 0xc327b8dc, tqe_prev = 0xc32cb734}, memq = {
>    tqh_first = 0xc0308e80, tqh_last = 0xc03046ec}, generation = 0x3004, 
>  type = 0x1, size = 0x2a7, ref_count = 0x0, shadow_count = 0x0, 
>  pg_color = 0x5, hash_rand = 0xfd9a69d7, flags = 0x21c8, 
>  paging_in_progress = 0x1, behavior = 0x0, resident_page_count = 0x9, 
>  backing_object = 0x0, backing_object_offset = 0x0, last_read = 0x14, 
>  pager_object_list = {tqe_next = 0xc323c438, tqe_prev = 0xc323a424}, 
>  handle = 0x0, un_pager = {vnp = {vnp_size = 0x16}, devp = {devp_pglist = {
>        tqh_first = 0x16, tqh_last = 0x0}}, swp = {swp_bcount = 0x16}}}
>
>The high points:
>    ref_count=0
>    shadow_count=0
>    type=1 (OBJT_SWAP)
>    paging_in_progress=1
>    resident_page_count=9
>    flags=0x21c8 (onemapping, mightbedirty, writeable, pipwnt, dead)
>
>A typical memory page from this object:
>
>(kgdb) p/x *(struct vm_page*) 0xc02ffd90
>$14 = {pageq = {tqe_next = 0xc0317dc0, tqe_prev = 0xc02f1960}, hnext = 0x0, 
>  listq = {tqe_next = 0xc0317dc0, tqe_prev = 0xc02f196c}, object = 0xc32ea21c, 
>  pindex = 0x2f, phys_addr = 0x4f4000, queue = 0x41, flags = 0x0, pc = 0x34, 
>  wire_count = 0x0, hold_count = 0x0, act_count = 0x8, busy = 0x0, 
>  valid = 0xff, dirty = 0xff}
>
>The high points:
>    queue=inactive
>    flags=0
>    wire_count=0
>    hold_count=0
>    busy=0
>    valid=ff
>    dirty=ff
>
>All 9 of them are like that.  So, no busy or PG_BUSY or anything.  No paging
>really in progress after all.  So the object's paging_in_progress count is
>out.
>
>Who was watching what code changed recently?  Remember I had this problem
>on a kernel from 1999/06/16 too.  So it's an "old" problem.
>
>Off to research the next installment...
>
>Stephen.
>
>PS  I haven't worked out yet how to find the stack of the errant process.
>Any hints?  The stack trace should be helpful.
>
>
>To Unsubscribe: send mail to [EMAIL PROTECTED]
>with "unsubscribe freebsd-current" in the body of the message


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to