summaryrefslogtreecommitdiffstats
path: root/sys/fs/nfsclient/nfs_clvnops.c
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2009-05-18 21:22:03 +0000
committerrmacklem <rmacklem@FreeBSD.org>2009-05-18 21:22:03 +0000
commit29fae940fcbc3e4fe1733778367d0ccc87440b27 (patch)
tree9277d562e5b046ed7113735d075d9ce0ed660a74 /sys/fs/nfsclient/nfs_clvnops.c
parentf5760f10df7caf283652fa3551951b95d84a2423 (diff)
downloadFreeBSD-src-29fae940fcbc3e4fe1733778367d0ccc87440b27.zip
FreeBSD-src-29fae940fcbc3e4fe1733778367d0ccc87440b27.tar.gz
Change the experimental NFSv4 client so that it does not do
the NFSv4 Close operations until ncl_inactive(). This is necessary so that the Open StateIDs are available for doing I/O on mmap'd files after VOP_CLOSE(). I also changed some indentation for the nfscl_getclose() function. Approved by: kib (mentor)
Diffstat (limited to 'sys/fs/nfsclient/nfs_clvnops.c')
-rw-r--r--sys/fs/nfsclient/nfs_clvnops.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index 62808a4..4b320ac 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -517,8 +517,7 @@ nfs_open(struct vop_open_args *ap)
error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1);
if (error == EINTR || error == EIO) {
if (NFS_ISV4(vp))
- (void) nfsrpc_close(vp, ap->a_cred,
- ap->a_td);
+ (void) nfsrpc_close(vp, 0, ap->a_td);
return (error);
}
np->n_attrstamp = 0;
@@ -527,8 +526,7 @@ nfs_open(struct vop_open_args *ap)
error = VOP_GETATTR(vp, &vattr, ap->a_cred);
if (error) {
if (NFS_ISV4(vp))
- (void) nfsrpc_close(vp, ap->a_cred,
- ap->a_td);
+ (void) nfsrpc_close(vp, 0, ap->a_td);
return (error);
}
mtx_lock(&np->n_mtx);
@@ -549,8 +547,7 @@ nfs_open(struct vop_open_args *ap)
error = VOP_GETATTR(vp, &vattr, ap->a_cred);
if (error) {
if (NFS_ISV4(vp))
- (void) nfsrpc_close(vp, ap->a_cred,
- ap->a_td);
+ (void) nfsrpc_close(vp, 0, ap->a_td);
return (error);
}
mtx_lock(&np->n_mtx);
@@ -562,8 +559,8 @@ nfs_open(struct vop_open_args *ap)
error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1);
if (error == EINTR || error == EIO) {
if (NFS_ISV4(vp))
- (void) nfsrpc_close(vp,
- ap->a_cred, ap->a_td);
+ (void) nfsrpc_close(vp, 0,
+ ap->a_td);
return (error);
}
mtx_lock(&np->n_mtx);
@@ -583,8 +580,7 @@ nfs_open(struct vop_open_args *ap)
error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1);
if (error) {
if (NFS_ISV4(vp))
- (void) nfsrpc_close(vp, ap->a_cred,
- ap->a_td);
+ (void) nfsrpc_close(vp, 0, ap->a_td);
return (error);
}
mtx_lock(&np->n_mtx);
@@ -745,7 +741,7 @@ nfs_close(struct vop_close_args *ap)
/*
* and do the close.
*/
- ret = nfsrpc_close(vp, cred, ap->a_td);
+ ret = nfsrpc_close(vp, 0, ap->a_td);
if (!error && ret)
error = ret;
if (error)
OpenPOWER on IntegriCloud