| From | Sent On | Attachments |
|---|---|---|
| Rick Macklem | Jul 15, 2008 7:49 pm | |
| Kostik Belousov | Jul 15, 2008 8:36 pm | |
| Rick Macklem | Jul 16, 2008 3:21 pm | |
| Kostik Belousov | Jul 16, 2008 3:43 pm | |
| Kostik Belousov | Jul 17, 2008 11:02 am | |
| Rick Macklem | Jul 17, 2008 2:56 pm | |
| Rick Macklem | Jul 17, 2008 3:20 pm |
| Subject: | executable open until unmount | |
|---|---|---|
| From: | Rick Macklem (rmac...@uoguelph.ca) | |
| Date: | Jul 17, 2008 2:56:37 pm | |
| List: | org.freebsd.freebsd-fs | |
On Wed, 16 Jul 2008, Kostik Belousov wrote:
On Wed, Jul 16, 2008 at 11:32:28AM -0400, Rick Macklem wrote:
Patch looks good. It fixed my problem and hasn't crashed the system yet;-)
Did you tested both elf executables and #!-scripts ?
Yep. (At least I have now. I had only tested Elf when I posted:-)
Working fine without crashes sofar, rick
Thanks, rick
On Tue, 15 Jul 2008, Kostik Belousov wrote:
On Tue, Jul 15, 2008 at 02:57:23PM -0400, Rick Macklem wrote:
I'm testing my nfsv4 client and I've run into this issue under FreeBSD7.0.
When I execute a file on the nfs mounted volume, the file remains open until the vnode gets cleared out, usually when I unmount. For NFSv4, this isn't a particularily good thing, since these Opens tie up resources on the NFS server, etc.
Anyone know if there is something I'm doing incorrectly that causes this or a way to get the close to happen when the executable terminates?
Thanks in advance for any help, rick
Try this:
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index f4335a2..c3ef0e9 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -496,6 +496,7 @@ interpret: interplabel = mac_vnode_label_alloc(); mac_vnode_copy_label(binvp->v_label, interplabel); #endif + VOP_CLOSE(binvp, FREAD, td->td_ucred, td); vput(binvp); vm_object_deallocate(imgp->object); imgp->object = NULL; @@ -845,6 +846,7 @@ exec_fail_dealloc: if (imgp->vp != NULL) { if (args->fname) NDFREE(ndp, NDF_ONLY_PNBUF); + VOP_CLOSE(imgp->vp, FREAD, td->td_ucred, td); vput(imgp->vp); }





