diff options
author | attilio <attilio@FreeBSD.org> | 2008-05-27 00:20:19 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2008-05-27 00:20:19 +0000 |
commit | 37ab20f9345885fbf9de8dc4c7afae66a0e3869b (patch) | |
tree | 5da3b3ed21a7d6dbb039496e5ace93fc34952942 /sys/nfs4client | |
parent | e28e0700e316e526e66bc8f7d5fe1ba4a076ffaa (diff) | |
download | FreeBSD-src-37ab20f9345885fbf9de8dc4c7afae66a0e3869b.zip FreeBSD-src-37ab20f9345885fbf9de8dc4c7afae66a0e3869b.tar.gz |
Once the ENOLCK is detected we expect to retry the acquisition.
Anyway, in the edge case the flushing happens and the while is no more
executed, nfs_flush() (and nfs4_flush()) can return with a wrong
err value of ENOLCK.
Bring it back to 0, as we expect to have for that case.
Reported by: kris
Reviewed by: kib
Diffstat (limited to 'sys/nfs4client')
-rw-r--r-- | sys/nfs4client/nfs4_vnops.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/nfs4client/nfs4_vnops.c b/sys/nfs4client/nfs4_vnops.c index 276cb1a..bd0cfb1 100644 --- a/sys/nfs4client/nfs4_vnops.c +++ b/sys/nfs4client/nfs4_vnops.c @@ -2693,8 +2693,10 @@ loop: BO_MTX(bo), "nfsfsync", slpflag, slptimeo); if (error == 0) panic("nfs4_fsync: inconsistent lock"); - if (error == ENOLCK) + if (error == ENOLCK) { + error = 0; goto loop; + } if (nfs4_sigintr(nmp, NULL, td)) { error = EINTR; goto done; |