From 37ab20f9345885fbf9de8dc4c7afae66a0e3869b Mon Sep 17 00:00:00 2001 From: attilio Date: Tue, 27 May 2008 00:20:19 +0000 Subject: 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 --- sys/nfs4client/nfs4_vnops.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sys/nfs4client') 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; -- cgit v1.1