[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-nfs
Subject: Re: Linux server client ID behavior
From: Chuck Lever <chuck.lever () oracle ! com>
Date: 2012-04-30 21:12:07
Message-ID: 281AAE65-A918-4AA8-8BC4-19A7B7A2AEB6 () oracle ! com
[Download RAW message or body]
On Apr 26, 2012, at 3:03 PM, J. Bruce Fields wrote:
> On Thu, Apr 26, 2012 at 12:17:13PM -0400, Chuck Lever wrote:
> > Hi-
> >
> > Follow up on the issue I reported in IRC a couple of days ago.
> >
> > I'm using a stock Fedora 16 NFS server and my prototype UCS client. The client \
> > uses the same nfs_client_id4 string and boot verifier for all mounts on all \
> > servers. It performs a SETCLIENTID as part of the mount operation. SETCLIENTID \
> > is the first NFS operation after the client sends it's NFS ping.
> > The test is simple. It is meant to see if the UCS client recognizes that a \
> > server with an IPv4 and IPv6 address (a very typical configuration) is \
> > effectively trunked. It goes like this:
> > 1. Mount a filesystem on a server on it's IPv4 address via NFSv4.0
> > 2. Without unmounting the first filesystem, and without letting the first lease \
> > expire, mount a different filesystem on the same server on it's IPv6 address via \
> > NFSv4.0
> > The Solaris 11 FCS server allows both mounts, and the client recognizes that the \
> > IPv4 and IPv6 address represent the same server instance. Based on Noveck's \
> > NFSv4 migration draft, I believe this is the correct outcome.
> > With the Fedora 16 (3.3.2-1) Linux NFS server, the following is observed:
> >
> > a. The second (IPv6) mount sends a SETCLIENTID with the same nfs_client_id4 and \
> > boot verifier as the first mount, as expected. The request succeeds, and the \
> > server returns a different clientid4 than the first mount. I believe that's \
> > incorrect.
> > The server should return the same clientid4 as the first SETCLIENTID operation, \
> > since the client has presented the same nfs_client_id4 and boot verifier. The \
> > nfs_client_id4 string alone is how servers should detect client identity. For \
> > non-UCS clients, this should be enough anyway, since IP addresses are already \
> > embedded in the string. [ I have not yet tried this test with NFSv4.1, where all \
> > clients are supposed to use UCS. ]
> > b. The second (IPv6) mount then sends a SETCLIENTID_CONFIRM and the server \
> > replies with NFS4ERR_CLID_INUSE. I believe CLID_INUSE is an incorrect response.
> > My reading of 3530bis is that CLID_INUSE is appropriate only when there is an \
> > authentication flavor mismatch on SETCLIENTID or SETCLIENTID_CONFIRM requests. \
> > That is, the client has previously presented the nfs_client_id4 string using a \
> > different authentication flavor than the one it is using in the current request, \
> > and the lease that resulted from that previous operation has not yet expired. In \
> > this case, the authentication flavor (AUTH_SYS) is the same on both SETCLIENTID \
> > operations, so SETCLIENTID_CONFIRM should be treated as a valid request from this \
> > client.
> > The larger concern is that we have here another example of a widely deployed \
> > server implementation that does not tolerate UCS clients. Before I report this \
> > experience to the working group, I would like comment on the Linux server's \
> > behavior and my opinions about its correctness.
>
> I agree, both sound like bugs. (Could you make patches?)
Sure, I will try some things out. This has to work for me to test my UCS client with \
a NFSv4.1 server.
> The second is easy to fix. From a quick look at historical git
> archives, it appears to have been there from the beginning.
>
> The first I don't understand. It certainly doesn't look like what the
> code's intended to do on a quick glance, so there must be some logic
> error I'm not seeing....
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic