aboutsummaryrefslogtreecommitdiff
path: root/sys/nfs4client
diff options
context:
space:
mode:
authorAttilio Rao <attilio@FreeBSD.org>2008-05-27 00:20:19 +0000
committerAttilio Rao <attilio@FreeBSD.org>2008-05-27 00:20:19 +0000
commitedf463270075a681ca37de4f6203a207082bda2e (patch)
tree5da3b3ed21a7d6dbb039496e5ace93fc34952942 /sys/nfs4client
parent8ea4cf79cbe8d0a26450d0b0aa8ea339d9ba4fde (diff)
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
Notes
Notes: svn path=/head/; revision=179333
Diffstat (limited to 'sys/nfs4client')
-rw-r--r--sys/nfs4client/nfs4_vnops.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/nfs4client/nfs4_vnops.c b/sys/nfs4client/nfs4_vnops.c
index 276cb1ac3990..bd0cfb1e5148 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;