version 1.29, 2007/12/28 17:46:48 |
version 1.30, 2008/01/02 11:48:41 |
|
|
if (flags == 0) { |
if (flags == 0) { |
mutex_exit(&msdosfs_ihash_lock); |
mutex_exit(&msdosfs_ihash_lock); |
} else { |
} else { |
simple_lock(&vp->v_interlock); |
mutex_enter(&vp->v_interlock); |
mutex_exit(&msdosfs_ihash_lock); |
mutex_exit(&msdosfs_ihash_lock); |
if (vget(vp, flags | LK_INTERLOCK)) |
if (vget(vp, flags | LK_INTERLOCK)) |
goto loop; |
goto loop; |
Line 668 msdosfs_inactive(v) |
|
Line 668 msdosfs_inactive(v) |
|
{ |
{ |
struct vop_inactive_args /* { |
struct vop_inactive_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
|
bool *a_recycle; |
} */ *ap = v; |
} */ *ap = v; |
struct vnode *vp = ap->a_vp; |
struct vnode *vp = ap->a_vp; |
struct denode *dep = VTODE(vp); |
struct denode *dep = VTODE(vp); |
Line 704 msdosfs_inactive(v) |
|
Line 705 msdosfs_inactive(v) |
|
} |
} |
deupdat(dep, 0); |
deupdat(dep, 0); |
out: |
out: |
VOP_UNLOCK(vp, 0); |
|
/* |
/* |
* If we are done with the denode, reclaim it |
* If we are done with the denode, reclaim it |
* so that it can be reused immediately. |
* so that it can be reused immediately. |
|
|
printf("msdosfs_inactive(): v_usecount %d, de_Name[0] %x\n", |
printf("msdosfs_inactive(): v_usecount %d, de_Name[0] %x\n", |
vp->v_usecount, dep->de_Name[0]); |
vp->v_usecount, dep->de_Name[0]); |
#endif |
#endif |
if (dep->de_Name[0] == SLOT_DELETED) |
*ap->a_recycle = (dep->de_Name[0] == SLOT_DELETED); |
vrecycle(vp, (struct simplelock *)0, curlwp); |
VOP_UNLOCK(vp, 0); |
return (error); |
return (error); |
} |
} |
|
|