Utz Lehmann wrote:
> Steve Lord [lord@xxxxxxx] wrote:
> >
> > OK, you made it a lot further through unmount than before, there are
> > two disk I/O's left until you are unmounted from here, and you are
> > waiting for one of them to complete - not sure why it is not completing
> > yet - previously you were stuck at the start of unmount. Russell changed
> > the code in a different direction than we had discussed, I need to go look
> > at what he did. If you have the kdbm_pg module in the kernel when this
> > happens can you take the first argument of pagebuf_iowait and run the
> > pb command on it? From the stack below that would be:
> >
> > kdb> pb 0xcf724180
> >
> > Thanks for trying this stuff out for us.
> >
> > Steve
>
>
Hmm I think see part of the problem; this pagebuf is still ASYNC and DELWRI
previously pagebuf_delwri_flush was blindly unsetting both of these even if
it skipped doing the io.
pagebuf_iorequest will simply requeue the pagebuf if it is delay write
so in this case the io is probably never being issued.
The one thing I changed which I'm not sure it is correct: delwri_flush only
tries to get a conditional lock and therefore will never wait to get a lock,
which may
be why the super block pagebuf is never marked un-delwri.
>
> kdb> pb 0xcf7e50c0
> page_buf_t at 0xcf7e50c0
> pb_flags WRITE MAPPED PARTIAL ASYNC NONE DELWRI SYNC LOCKABLE MEM_ALLOCATED
> FORCEIO
> pb_target 0xcf7f2ac0 pb_hold 1 pb_next 0xceee8f00 pb_prev 0xceee80c0
> pb_file_offset 0x0 pb_buffer_length 0x200 pb_addr 0xcf79c200
> pb_bn 0x0 pb_count_desired 0x200
> pb_io_remaining 0 pb_error 0 pb_mem 0xcfc25cc0
> pb_iodonesema (-1,1) pb_sema (1,0) pincount (0)
> pb_fspriv 0xcec4bc10 pb_fspriv2 0x00000000
> kdb> reboot
>
> utz
--
Russell Cattelan
--
Digital Elves inc. -- Currently on loan to SGI
Linux XFS core developer.
|