diff options
author | rwatson <rwatson@FreeBSD.org> | 2008-02-09 00:03:22 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2008-02-09 00:03:22 +0000 |
commit | 0a37acb8a6ab30c3fb8744bc3c243b6393d152d8 (patch) | |
tree | 0c0a83d64c506a434328e9debe8eabfe8314b161 /sys/fs | |
parent | 409c34ce7db65ef18e27486ee8aed6014b788431 (diff) | |
download | FreeBSD-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.c | 6 | ||||
-rw-r--r-- | sys/fs/coda/coda_vnops.c | 8 |
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); |