Hmm.  The way the revamped console code works is this:

  cn_devopen() calls vn_open() to open the device.  If this is not a 
VCHR device, then it is closed.  Otherwise, the vnode is stashed in
cnd->cnd_vp.

  When the device is closed though cnclose(), it walks through a list
of console devices, and if cnd_vp != NULL, calls vn_close() for that 
vnode, and then NULLs out cnd_vp. (drops the reference.)

  My understanding is that vn_open/vn_close will track the count of 
outstanding references to the vnode, so this should be safe to do.
-- 
Jonathan


On Wed, Oct 24, 2001 at 11:38:12AM -0700, Matthew Dillon wrote:
> 
> :...
> :Sttopped at Debugger+0x44:  pushl    %ebx
> :db> trace
> :Debugger()
> :panic()
> :vrele()
> :vn_close()
> :cnclose()
> :spec_close()
> :spec_vnoperate()
> :vclean()
> :vgonel()
> :vgone()
> :vop_revoke()
> :devfs_revoke()
> :exit1()
> :...
> 
>     In looking at a diff in the last few days, a huge number of changes have been
>     made kern/tty_cons.c by jlemon.  Since the area of the panic is around the same
>     block of code there's a good chance that these changes are the cause, though I
>     have not tested this.  If so, Jonathan can locate the bug much more quickly then
>     I can.
> 
>                                               -Matt

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

Reply via email to