summaryrefslogtreecommitdiffstats
path: root/sys/fs/unionfs/union_vnops.c
diff options
context:
space:
mode:
authordaichi <daichi@FreeBSD.org>2007-10-14 13:42:05 +0000
committerdaichi <daichi@FreeBSD.org>2007-10-14 13:42:05 +0000
commita763e0d0a249654430445dce1f260e1ae39bf8b1 (patch)
tree8896e89179340ea243975be2a8a285fe3e0bdafb /sys/fs/unionfs/union_vnops.c
parentdc348d6e70a80e44c77b3ceee969b94c04b37cf3 (diff)
downloadFreeBSD-src-a763e0d0a249654430445dce1f260e1ae39bf8b1.zip
FreeBSD-src-a763e0d0a249654430445dce1f260e1ae39bf8b1.tar.gz
Changed it frees unneeded memory ASAP.
Submitted by: Masanori Ozawa <ozawa@ongs.co.jp> (unionfs developer) Reviewed by: jeff, kensmith Approved by: re (kensmith) MFC after: 1 week
Diffstat (limited to 'sys/fs/unionfs/union_vnops.c')
-rw-r--r--sys/fs/unionfs/union_vnops.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index fbce59d..e5c54a7 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -873,6 +873,7 @@ unionfs_ioctl(struct vop_ioctl_args *ap)
unp = VTOUNIONFS(ap->a_vp);
unionfs_get_node_status(unp, ap->a_td, &unsp);
ovp = (unsp->uns_upper_opencnt ? unp->un_uppervp : unp->un_lowervp);
+ unionfs_tryrem_node_status(unp, ap->a_td, unsp);
VOP_UNLOCK(ap->a_vp, 0, ap->a_td);
if (ovp == NULLVP)
@@ -897,6 +898,7 @@ unionfs_poll(struct vop_poll_args *ap)
unp = VTOUNIONFS(ap->a_vp);
unionfs_get_node_status(unp, ap->a_td, &unsp);
ovp = (unsp->uns_upper_opencnt ? unp->un_uppervp : unp->un_lowervp);
+ unionfs_tryrem_node_status(unp, ap->a_td, unsp);
VOP_UNLOCK(ap->a_vp, 0, ap->a_td);
if (ovp == NULLVP)
@@ -915,6 +917,7 @@ unionfs_fsync(struct vop_fsync_args *ap)
unp = VTOUNIONFS(ap->a_vp);
unionfs_get_node_status(unp, ap->a_td, &unsp);
ovp = (unsp->uns_upper_opencnt ? unp->un_uppervp : unp->un_lowervp);
+ unionfs_tryrem_node_status(unp, ap->a_td, unsp);
if (ovp == NULLVP)
return (EBADF);
@@ -1858,7 +1861,8 @@ unionfs_advlock(struct vop_advlock_args *ap)
unsp->uns_upper_opencnt++;
VOP_CLOSE(unp->un_lowervp, unsp->uns_lower_openmode, td->td_ucred, td);
unsp->uns_lower_opencnt--;
- }
+ } else
+ unionfs_tryrem_node_status(unp, td, unsp);
}
VOP_UNLOCK(vp, 0, td);
OpenPOWER on IntegriCloud