On Wed, 2019-08-28 at 15:12 +0000, Rick Macklem wrote: > J. Bruce Fields wrote: > > On Wed, Aug 28, 2019 at 10:16:09AM -0400, Jeff Layton wrote: > > > For the most part, these sorts of errors tend to be rare. If it > > > turns > > > out to be a problem we could consider moving the verifier into > > > svc_export or something? > > > > As Trond says, this isn't really a server implementation issue, > > it's a > > protocol issue. If a client detects when to resend writes by > > storing a > > single verifier per server, then returning different verifiers from > > writes to different exports will have it resending every time it > > writes > > to one export then another. > > Well, here's what RFC-1813 says about the write verifier: > This cookie must be consistent during a single instance > of the NFS version 3 protocol service and must be > unique between instances of the NFS version 3 protocol > server, where uncommitted data may be lost. > You could debate what "service" means in the above, but I'd say it > isn't "per file". > > However, since there is no way for an NFSv3 client to know what a > "server" is, > the FreeBSD client (and maybe the other *BSD, although I haven't been > involved > in them for a long time) stores the write verifier "per mount". > --> So, for the FreeBSD client, it is at the granularity of what the > NFSv3 client sees as > a single file system. (Typically a single file system on the > server unless the knfsd > plays the game of coalescing multiple file systems by > uniquifying the I-node#, etc.) > > It is conceivable that some other NFSv3 client might assume > "same server IP address --> same server" and store it "per server > IP", but I have > no idea if any such client exists. > The patchsets we've been discussing should all be compatible with FreeBSD, as they implement a per-server boot verifier (as in different containers representing different knfsd servers on different networks are allowed to have different boot verifiers, but each server applies their boot verifier globally to all exported filesystems). We could make these boot verifiers be per filesystem to reduce the frequency of these 'server reboots' but the expectation is that filesystem errors on COMMIT are rare. -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx