Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Dec 2010 10:02:52 -0500 (EST)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        =?utf-8?Q?Tom=C3=A1=C5=A1_Drbohlav?= <drb@karlov.mff.cuni.cz>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: Linux (client) - FreeBSD (server) NFS4 interoperability problem
Message-ID:  <1246727856.1218036.1291647772450.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <4CFCB86F.6090800@karlov.mff.cuni.cz>

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> traffic may be blocked, but we do not want server to make callbacks
> anyway (we are exporting data which are being modified by Samba or
> locally so no delegations and server is going to be access through
> NAT)
>
> > 2 - Disable the server from attempting to do a callback connection
> >      even when the client advertises one. (At the moment this can
> >      only be done for Kerberized mounts by setting
> >      nfsrv_nogsscallback == 1
> >      in sys/fs/nfsserver/nfs_nfsdstate.c. (Maybe I should add a
> >      sysctl
> >      to disable callback attempts?)
> 
> I have try it and it solved our other problem (small delay after first
> file open after connection), probably connected with server trying to
> establish callback. I will check with Linux client and let you know,
> but
> this si what we needed anyway.
> 
> Sysctl is a good idea, btw man nfsv4 mentions
> vfs.newnfs.issue_delegations ... what is the purpose of callback other
> than delegation?
> 
I think the correct solution is to set a short (about 1sec timeout) on
the callback connection attempt when no delegations are issued to that
client. Unfortunately that patch isn't trivial, since the timeout needs
to happen inside of the krpc and there currently isn't a timeout argument
that can be passed into it for this.

At the moment, vfs.newnfs.issue_delegations == 0 doesn't disable attempting
to make a callback connection when the client advertises one, but I agree
that it could disable callbacks since, as you note, callbacks are only
useful when delegations are being issued.

I'll email you a patch that does this. Btw, the other patch shouldn't be
in a production server, since it would time out all connection attempts
and not just callback ones. (That was why I set the timeout in it at 30sec
instead of 1sec. It was just meant to test to see if the Linux client
could Open successfully if the callback connection attempt timed out in
less than the 1minute it waits before giving up on waiting for a reply.)

rick




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1246727856.1218036.1291647772450.JavaMail.root>