Date: Tue, 27 Jan 1998 09:57:33 +0000 (GMT) From: Terry Lambert <tlambert@primenet.com> To: freebsd-current@FreeBSD.ORG Subject: PATCH: Fixes for annoying VOP_LEASE bugs for NFS Message-ID: <199801270957.CAA04106@usr09.primenet.com>
next in thread | raw e-mail | index | archive | help
Here are some of the obvious patches I am always on about. This should
be a tiny enough chunk that even an application programmer can understand
them. Someone please commit them. They should help with a few cases
where NFSv3 is wierded out. The utility should be obvious.
Terry Lambert
terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.
==========================================================================
Index: kern/kern_exec.c
===================================================================
RCS file: /b/cvstree/ncvs/src/sys/kern/kern_exec.c,v
retrieving revision 1.68
diff -c -r1.68 kern_exec.c
*** 1.68 1997/11/06 19:29:08
--- kern_exec.c 1998/01/27 09:24:25
***************
*** 183,188 ****
--- 183,189 ----
* header into it.
*/
imgp->image_header = malloc(PAGE_SIZE, M_TEMP, M_WAITOK);
+ VOP_LEASE(imgp->vp, p, p->p_ucred, LEASE_READ);
error = vn_rdwr(UIO_READ, imgp->vp, (void *)imgp->image_header, PAGE_SIZE, 0,
UIO_SYSSPACE, IO_NODELOCKED, p->p_ucred, &resid, p);
/*
Index: kern/kern_ktrace.c
===================================================================
RCS file: /b/cvstree/ncvs/src/sys/kern/kern_ktrace.c,v
retrieving revision 1.21
diff -c -r1.21 kern_ktrace.c
*** 1.21 1997/11/06 19:29:10
--- kern_ktrace.c 1998/01/27 09:35:40
***************
*** 478,483 ****
--- 478,484 ----
aiov[1].iov_len = kth->ktr_len;
auio.uio_resid += kth->ktr_len;
}
+ VOP_LEASE(vp, p, p->p_cred, LEASE_WRITE);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
error = VOP_WRITE(vp, &auio, IO_UNIT|IO_APPEND, p->p_ucred);
VOP_UNLOCK(vp, 0, p);
Index: kern/link_aout.c
===================================================================
RCS file: /b/cvstree/ncvs/src/sys/kern/link_aout.c,v
retrieving revision 1.4
diff -c -r1.4 link_aout.c
*** 1.4 1997/11/07 08:52:59
--- link_aout.c 1998/01/27 09:27:23
***************
*** 116,121 ****
--- 116,122 ----
/*
* Read the a.out header from the file.
*/
+ VOP_LEASE(nd.ni_vp, p, p->p_ucred, LEASE_READ);
error = vn_rdwr(UIO_READ, nd.ni_vp, (void*) &header, sizeof header, 0,
UIO_SYSSPACE, IO_NODELOCKED, p->p_ucred, &resid, p);
if (error)
Index: kern/tty_tty.c
===================================================================
RCS file: /b/cvstree/ncvs/src/sys/kern/tty_tty.c,v
retrieving revision 1.19
diff -c -r1.19 tty_tty.c
*** 1.19 1997/09/16 11:43:35
--- tty_tty.c 1998/01/27 09:06:19
***************
*** 128,133 ****
--- 128,134 ----
if (ttyvp == NULL)
return (EIO);
+ VOP_LEASE(ttyvp, p, NOCRED, LEASE_WRITE);
vn_lock(ttyvp, LK_EXCLUSIVE | LK_RETRY, p);
error = VOP_WRITE(ttyvp, uio, flag, NOCRED);
VOP_UNLOCK(ttyvp, 0, p);
Index: kern/vfs_vnops.c
===================================================================
RCS file: /b/cvstree/ncvs/src/sys/kern/vfs_vnops.c,v
retrieving revision 1.41
diff -c -r1.41 vfs_vnops.c
*** 1.41 1997/11/07 08:53:11
--- vfs_vnops.c 1998/01/27 09:08:27
***************
*** 216,221 ****
--- 216,224 ----
/*
* Package up an I/O request on a vnode into a uio and do it.
+ *
+ * This function assumes the caller has done the appropriate
+ * VOP_LEASE() call prior to calling it.
*/
int
vn_rdwr(rw, vp, base, len, offset, segflg, ioflg, cred, aresid, p)
==========================================================================
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801270957.CAA04106>
