summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2008-02-09 00:03:22 +0000
committerrwatson <rwatson@FreeBSD.org>2008-02-09 00:03:22 +0000
commit0a37acb8a6ab30c3fb8744bc3c243b6393d152d8 (patch)
tree0c0a83d64c506a434328e9debe8eabfe8314b161 /sys/fs
parent409c34ce7db65ef18e27486ee8aed6014b788431 (diff)
downloadFreeBSD-src-0a37acb8a6ab30c3fb8744bc3c243b6393d152d8.zip
FreeBSD-src-0a37acb8a6ab30c3fb8744bc3c243b6393d152d8.tar.gz
Make all calls to vn_lock() in Coda, including recently added ones,
use LK_RETRY, since failure is undesirable (and not handled). MFC after: 1 month Pointed out by: kib
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/coda/coda_vfsops.c6
-rw-r--r--sys/fs/coda/coda_vnops.c8
2 files changed, 7 insertions, 7 deletions
diff --git a/sys/fs/coda/coda_vfsops.c b/sys/fs/coda/coda_vfsops.c
index 078350b..4e5397f 100644
--- a/sys/fs/coda/coda_vfsops.c
+++ b/sys/fs/coda/coda_vfsops.c
@@ -292,7 +292,7 @@ coda_root(vfsp, flags, vpp, td)
/* On Mach, this is vref. On FreeBSD, vref + vn_lock. */
vref(*vpp);
- vn_lock(*vpp, LK_EXCLUSIVE);
+ vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
MARK_INT_SAT(CODA_ROOT_STATS);
return(0);
}
@@ -311,7 +311,7 @@ coda_root(vfsp, flags, vpp, td)
*vpp = mi->mi_rootvp;
vref(*vpp);
- vn_lock(*vpp, LK_EXCLUSIVE);
+ vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
MARK_INT_SAT(CODA_ROOT_STATS);
goto exit;
@@ -327,7 +327,7 @@ coda_root(vfsp, flags, vpp, td)
*/
*vpp = mi->mi_rootvp;
vref(*vpp);
- vn_lock(*vpp, LK_EXCLUSIVE);
+ vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
MARK_INT_FAIL(CODA_ROOT_STATS);
error = 0;
diff --git a/sys/fs/coda/coda_vnops.c b/sys/fs/coda/coda_vnops.c
index 6cb184d..ed5d75b 100644
--- a/sys/fs/coda/coda_vnops.c
+++ b/sys/fs/coda/coda_vnops.c
@@ -233,7 +233,7 @@ coda_open(struct vop_open_args *ap)
}
/* Open the cache file. */
- vn_lock(vp, LK_EXCLUSIVE);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
error = VOP_OPEN(vp, flag, cred, td, NULL);
if (error) {
VOP_UNLOCK(vp, 0);
@@ -272,7 +272,7 @@ coda_close(struct vop_close_args *ap)
}
if (cp->c_ovp) {
- vn_lock(cp->c_ovp, LK_EXCLUSIVE);
+ vn_lock(cp->c_ovp, LK_EXCLUSIVE | LK_RETRY);
VOP_CLOSE(cp->c_ovp, flag, cred, td); /* Do errors matter here? */
vput(cp->c_ovp);
}
@@ -357,7 +357,7 @@ coda_rdwr(struct vnode *vp, struct uio *uiop, enum uio_rw rw, int ioflag,
/* Have UFS handle the call. */
CODADEBUG(CODA_RDWR, myprintf(("indirect rdwr: fid = %s, refcnt = %d\n",
coda_f2s(&cp->c_fid), CTOV(cp)->v_usecount)); )
- vn_lock(cfvp, LK_EXCLUSIVE);
+ vn_lock(cfvp, LK_EXCLUSIVE | LK_RETRY);
if (rw == UIO_READ) {
error = VOP_READ(cfvp, uiop, ioflag, cred);
} else {
@@ -1466,7 +1466,7 @@ coda_readdir(struct vop_readdir_args *ap)
/* Have UFS handle the call. */
CODADEBUG(CODA_READDIR, myprintf(("indirect readdir: fid = %s, refcnt = %d\n", coda_f2s(&cp->c_fid), vp->v_usecount)); )
- vn_lock(cp->c_ovp, LK_EXCLUSIVE);
+ vn_lock(cp->c_ovp, LK_EXCLUSIVE | LK_RETRY);
error = VOP_READDIR(cp->c_ovp, uiop, cred, eofflag, ncookies,
cookies);
VOP_UNLOCK(cp->c_ovp, 0);
OpenPOWER on IntegriCloud