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