summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2008-05-27 00:20:19 +0000
committerattilio <attilio@FreeBSD.org>2008-05-27 00:20:19 +0000
commit37ab20f9345885fbf9de8dc4c7afae66a0e3869b (patch)
tree5da3b3ed21a7d6dbb039496e5ace93fc34952942 /sys/nfsclient
parente28e0700e316e526e66bc8f7d5fe1ba4a076ffaa (diff)
downloadFreeBSD-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/nfsclient')
-rw-r--r--sys/nfsclient/nfs_vnops.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c
index 8b4b1e1..524c564 100644
--- a/sys/nfsclient/nfs_vnops.c
+++ b/sys/nfsclient/nfs_vnops.c
@@ -2941,8 +2941,10 @@ loop:
BUF_UNLOCK(bp);
goto loop;
}
- if (error == ENOLCK)
+ if (error == ENOLCK) {
+ error = 0;
goto loop;
+ }
if (nfs_sigintr(nmp, NULL, td)) {
error = EINTR;
goto done;
OpenPOWER on IntegriCloud