Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Jun 2015 23:18:29 -0700
From:      "alex.burlyga.ietf alex.burlyga.ietf" <alex.burlyga.ietf@gmail.com>
To:        freebsd-fs@freebsd.org
Subject:   [nfs][client] - Question about handling of the NFS3_EEXIST error in SYMLINK rpc
Message-ID:  <CA%2BJhTNTSC-xPVdpUGcQemVMLUwuQB6D8-3d2HD6WjU%2Bjd1SMNQ@mail.gmail.com>
In-Reply-To: <CA%2BJhTNRRTFzZiXT8weAe%2BQkwE_MnPEPGo9MR6daeMvE8aKgvrQ@mail.gmail.com>
References:  <CA%2BJhTNRRTFzZiXT8weAe%2BQkwE_MnPEPGo9MR6daeMvE8aKgvrQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

NFS client code in nfsrpc_symlink() masks server returned NFS3_EEXIST error
code
by returning 0 to the upper layers. I'm assuming this was an attempt to
work around
some server's broken replay cache out there, however, it breaks a more
common
case where server is returning EEXIST for legitimate reason and application
is expecting this error code and equipped to deal with it.

To fix it I see three ways of doing this:
 * Remove offending code
 * Make it optional, sysctl?
 * On NFS3_EEXIST send READLINK rpc to make sure symlink content is right

Which of the ways will maximize the chances of getting this fix upstream?

One more point, old client circa FreeBSD 7.0 does not exhibit this problem.

Alex



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BJhTNTSC-xPVdpUGcQemVMLUwuQB6D8-3d2HD6WjU%2Bjd1SMNQ>