Hi James,

On Fri, Feb 13, 2009 at 11:02:15AM -0600, james wahlig wrote:
> Your condensed explanation had me a little confused, how does vn_rele()  

Sorry for that, I apologize.

> access the mi?  However, I realize that is the async_inactive that uses  
> the vnode to get the mi.

Yes. That's true it is in nfs_async_inactive():

1881 void
1882 nfs_async_inactive(vnode_t *vp, cred_t *cr,
1883     void (*inactive)(vnode_t *, cred_t *, caller_context_t *))
1884 {
1885    mntinfo_t *mi;
1886    struct nfs_async_reqs *args;
1887 
1888    mi = VTOMI(vp);
1889 

[... snip ...]

1910    mutex_enter(&mi->mi_async_lock);      <------------------- HERE
1911    if (mi->mi_manager_thread == NULL) {
1912            rnode_t *rp = VTOR(vp);
1913 

To complete the information, the panic stack is:

> ::stack
vpanic(10bc768, 10bc788, 60010be14f0, deadbeefdeadbee8, 30007f9d840, 0)
nfs_async_inactive+0x44(60010be14f0, 60010b08be0, 7b796170, 5, 60010be1380, 
60010be3970)
nfs3_mount+0x9c8(0, 60010be1380, 60010315430, 6001145f300, 2a1006779d8, 0)
domount+0xac8(60010be3970, 2a1006779d8, 60011454600, 802c, 104, 0)
mount+0x108(600102924b8, 2a100677ad8, 31090, 2ec9c, 104, ffbffe94)
syscall_ap+0x58(2a0, ffbffeb0, 11516d4, 60010292400, 15, 4c)
syscall_trap32+0xcc(ffbffe94, ffbffeb0, 104, 2ec9c, 31090, 4c)


>
> The changes look good.

Thank you!

-- 
Marcel Telka
Solaris RPE

Reply via email to