Fix the experimental nfs client so that it only calls ncl_vinvalbuf()
for NFSv2 and not NFSv4 when nfscl_mustflush() returns 0. Since nfscl_mustflush() only returns 0 when there is a valid write delegation issued to the client, it only affects the case of an NFSv4 mount with callbacks/delegations enabled. Approved by: re (kensmith), kib (mentor)
This commit is contained in:
parent
da90e22341
commit
1aa3b666bc
@ -687,11 +687,17 @@ nfs_close(struct vop_close_args *ap)
|
||||
int cm = newnfs_commit_on_close ? 1 : 0;
|
||||
error = ncl_flush(vp, MNT_WAIT, cred, ap->a_td, cm);
|
||||
/* np->n_flag &= ~NMODIFIED; */
|
||||
} else if (NFS_ISV4(vp) && nfscl_mustflush(vp)) {
|
||||
int cm = newnfs_commit_on_close ? 1 : 0;
|
||||
error = ncl_flush(vp, MNT_WAIT, cred, ap->a_td, cm);
|
||||
/* as above w.r.t. races when clearing NMODIFIED */
|
||||
/* np->n_flag &= ~NMODIFIED; */
|
||||
} else if (NFS_ISV4(vp)) {
|
||||
if (nfscl_mustflush(vp)) {
|
||||
int cm = newnfs_commit_on_close ? 1 : 0;
|
||||
error = ncl_flush(vp, MNT_WAIT, cred, ap->a_td,
|
||||
cm);
|
||||
/*
|
||||
* as above w.r.t races when clearing
|
||||
* NMODIFIED.
|
||||
* np->n_flag &= ~NMODIFIED;
|
||||
*/
|
||||
}
|
||||
} else
|
||||
error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1);
|
||||
mtx_lock(&np->n_mtx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user