From: Bruce Fields <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: Bruce Fields <bfields@redhat.com>,
Jeff Layton <jlayton@redhat.com>,
Trond Myklebust <trondmy@hammerspace.com>,
Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 0/3] Handling NFSv3 I/O errors in knfsd
Date: Wed, 28 Aug 2019 13:07:35 -0400 [thread overview]
Message-ID: <20190828170735.GD26284@fieldses.org> (raw)
In-Reply-To: <AAF793DB-25B7-42A5-9795-5317B5052F44@oracle.com>
On Wed, Aug 28, 2019 at 10:50:30AM -0400, Chuck Lever wrote:
>
>
> > On Aug 28, 2019, at 10:48 AM, Bruce Fields <bfields@fieldses.org> wrote:
> >
> > On Wed, Aug 28, 2019 at 10:40:31AM -0400, 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.
> >
> > The other way to limit this is by trying to detect the single-writer
> > case, since it's probably also rare for multiple clients to write to the
> > same file.
> >
> > Are there any common cases where two clients share the same TCP
> > connection? Maybe that would be a conservative enough test?
>
> What happens if a client reconnects? Does that bump the verifier?
>
> If it reconnects from the same source port, can the server tell
> that the connection is different?
I assume it creates a new socket structure.
So, you could key off either that or the (address, port) depending on
whether you'd rather risk unnecessarily incrementing the verifier after
a reconnection and write error, or risk failing to increment due to port
reuse.
There's some precedent to taking the latter choice in the DRC. But the
DRC also includes some other stuff (xid, hash) to minimize the chance of
a collision.
If you took the former choice you wouldn't literally want to key off a
pointer to the socket as it'd cause complications when freeing the
socket. But maybe you could add some kind of birth time or generation
number to struct svc_sock to help differentiate?
--b.
>
>
> > And you wouldn't have to track every connection that's ever sent a WRITE
> > to a given file. Just remember the first one, with a flag to track
> > whether anyone else has ever written to it.
> >
> > ??
> >
> > --b.
>
> --
> Chuck Lever
>
>
next prev parent reply other threads:[~2019-08-28 17:07 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-26 16:50 [PATCH 0/3] Handling NFSv3 I/O errors in knfsd Trond Myklebust
2019-08-26 16:50 ` [PATCH 1/3] nfsd: nfsd_file cache entries should be per net namespace Trond Myklebust
2019-08-26 16:50 ` [PATCH 2/3] nfsd: Support the server resetting the boot verifier Trond Myklebust
2019-08-26 16:50 ` [PATCH 3/3] nfsd: Don't garbage collect files that might contain write errors Trond Myklebust
2019-08-27 7:58 ` [PATCH 2/3] nfsd: Support the server resetting the boot verifier kbuild test robot
2019-08-26 20:51 ` [PATCH 0/3] Handling NFSv3 I/O errors in knfsd J. Bruce Fields
2019-08-26 21:02 ` Trond Myklebust
2019-08-27 0:48 ` bfields
2019-08-27 0:56 ` Trond Myklebust
2019-08-27 1:13 ` bfields
2019-08-27 1:28 ` Trond Myklebust
2019-08-27 13:59 ` Chuck Lever
2019-08-27 14:53 ` Trond Myklebust
2019-08-27 14:58 ` bfields
2019-08-27 14:59 ` bfields
2019-08-27 15:15 ` Trond Myklebust
2019-08-27 15:20 ` Chuck Lever
2019-08-28 13:48 ` bfields
2019-08-28 13:51 ` Jeff Layton
2019-08-28 13:57 ` Chuck Lever
2019-08-28 14:00 ` J. Bruce Fields
2019-08-28 14:03 ` Chuck Lever
2019-08-28 14:16 ` Jeff Layton
2019-08-28 14:21 ` Chuck Lever
2019-08-28 14:40 ` J. Bruce Fields
2019-08-28 14:48 ` Bruce Fields
2019-08-28 14:50 ` Chuck Lever
2019-08-28 17:07 ` Bruce Fields [this message]
2019-08-28 15:09 ` Jeff Layton
2019-08-28 15:12 ` Rick Macklem
2019-08-28 15:37 ` Trond Myklebust
2019-08-28 15:46 ` Bruce Fields
2019-08-27 14:54 ` Bruce Fields
2019-08-27 14:59 ` Trond Myklebust
2019-08-27 15:00 ` bfields
2019-08-27 15:17 ` Jeff Layton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190828170735.GD26284@fieldses.org \
--to=bfields@fieldses.org \
--cc=bfields@redhat.com \
--cc=chuck.lever@oracle.com \
--cc=jlayton@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trondmy@hammerspace.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.