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>