From: "J. Bruce Fields" <bfields@fieldses.org> To: Steve Dickson <SteveD@redhat.com> Cc: NeilBrown <neilb@suse.de>, Chuck Lever <chuck.lever@oracle.com>, NFS <linux-nfs@vger.kernel.org>, Carsten Ziepke <kieltux@gmail.com> Subject: Re: [PATCH - nfs-utils] Fix fallback from tcp to udp Date: Thu, 20 Feb 2014 15:42:47 -0500 [thread overview] Message-ID: <20140220204247.GB13433@fieldses.org> (raw) In-Reply-To: <20140220203701.GA13433@fieldses.org> On Thu, Feb 20, 2014 at 03:37:01PM -0500, bfields wrote: > On Thu, Feb 20, 2014 at 12:50:15PM -0500, Steve Dickson wrote: > > > > > > On 02/17/2014 06:43 PM, NeilBrown wrote: > > > > > > Protocol negotiation in mount.nfs does not correctly negotiate with a > > > server which only support NFSv3 and UDP. > > > > > > When mount.nfs attempts an NFSv4 mount and fails with ECONNREFUSED > > > it does not fall back to NFSv3, as this is not recognised as a > > > "does not support NFSv4" error. > > > However ECONNREFUSED is a clear indication that the server doesn't > > > support TCP, and ipso facto does not support NFSv4. > > > So ECONNREFUSED should trigger a fallback from v4 to v2/3. > > I'm also pretty this is the error returned when the server is > > down or more pointy when server is rebooting... > > Probably worth checking that. > > > Do we really want to fallback at this point? > > From a bz comment (#984901, not sure why it's private): > > Any NFS server has to support either tcp or rpcbind. But it's OK for a > server to support only of those two. So the only way to handle both > cases while continuing to retry after ECONNREFUSED (But I'm not actually convinced that's true. In particular I don't see ECONNREFUSED when rebooting a server. But I'm not clear when it's returned....) --b. > is to alternate > between trying nfs4/tcp and rpcbind until you can connect to one or the > other. > > If it's the rpcbind call that succeeds first then I think we want to do > one more try of nfs4/tcp just to make sure it didn't just come up, > before falling back to v3. > > The rpcbind call is done in userspace, if I understand right, so I think > this is doable. Looking at utils/mount/ I don't understand the mount > process well enough to understand exactly how to do it. Maybe > everything but the final nfs_sys_mount needs to be moved out of > nfs_do_mount_v3v2 into a new nfs_do_probe_v3v2 and nfs_autonegotiate > should alternate between nfs_try_mount_v4 and nfs_do_probe_v3v2 as long > as both return ECONNREFUSED, calling nfs_try_mount_v3v2 only if > nfs_try_mount_v4 has failed after a succesful nfs_do_probe_v3v2? > > Except the v3v2 mount logic seems to actually modify the mount_options, > so probably that doesn't quite work. > > ? > > --b.
next prev parent reply other threads:[~2014-02-20 20:42 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-02-17 23:43 NeilBrown 2014-02-20 17:50 ` Steve Dickson 2014-02-20 20:37 ` J. Bruce Fields 2014-02-20 20:42 ` J. Bruce Fields [this message] 2014-02-21 3:26 ` NeilBrown 2014-02-21 14:59 ` J. Bruce Fields 2014-02-21 15:22 ` Chuck Lever
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=20140220204247.GB13433@fieldses.org \ --to=bfields@fieldses.org \ --cc=SteveD@redhat.com \ --cc=chuck.lever@oracle.com \ --cc=kieltux@gmail.com \ --cc=linux-nfs@vger.kernel.org \ --cc=neilb@suse.de \ --subject='Re: [PATCH - nfs-utils] Fix fallback from tcp to udp' \ /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
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.