Re: [nfsv4] 3530bis Issue 39: Clarification on renewing sequence IDs

<david.noveck@emc.com> Fri, 19 November 2010 22:39 UTC

Return-Path: <david.noveck@emc.com>
X-Original-To: nfsv4@core3.amsl.com
Delivered-To: nfsv4@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 11B0D3A67F3 for <nfsv4@core3.amsl.com>; Fri, 19 Nov 2010 14:39:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.599
X-Spam-Level:
X-Spam-Status: No, score=-6.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x4PgbjTS5q7K for <nfsv4@core3.amsl.com>; Fri, 19 Nov 2010 14:39:16 -0800 (PST)
Received: from mexforward.lss.emc.com (mexforward.lss.emc.com [128.222.32.20]) by core3.amsl.com (Postfix) with ESMTP id 2CBF73A67E3 for <nfsv4@ietf.org>; Fri, 19 Nov 2010 14:39:15 -0800 (PST)
Received: from hop04-l1d11-si04.isus.emc.com (HOP04-L1D11-SI04.isus.emc.com [10.254.111.24]) by mexforward.lss.emc.com (Switch-3.4.3/Switch-3.4.3) with ESMTP id oAJMe2u9014764 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 19 Nov 2010 17:40:03 -0500
Received: from mailhub.lss.emc.com (mailhub.lss.emc.com [10.254.222.226]) by hop04-l1d11-si04.isus.emc.com (RSA Interceptor); Fri, 19 Nov 2010 17:39:53 -0500
Received: from corpussmtp4.corp.emc.com (corpussmtp4.corp.emc.com [10.254.169.197]) by mailhub.lss.emc.com (Switch-3.4.3/Switch-3.4.3) with ESMTP id oAJMd46L017323; Fri, 19 Nov 2010 17:39:04 -0500
Received: from CORPUSMX50A.corp.emc.com ([128.221.62.43]) by corpussmtp4.corp.emc.com with Microsoft SMTPSVC(6.0.3790.4675); Fri, 19 Nov 2010 17:39:03 -0500
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Fri, 19 Nov 2010 17:39:06 -0500
Message-ID: <BF3BB6D12298F54B89C8DCC1E4073D8002A5EE45@CORPUSMX50A.corp.emc.com>
In-Reply-To: <1290100143.7245.9.camel@heimdal.trondhjem.org>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [nfsv4] 3530bis Issue 39: Clarification on renewing sequence IDs
Thread-Index: AcuHQ4e3YKOdtgbGS9StoVteB11dtgANZYew
References: <4CACD9BF.2010809@oracle.com> <4CD32C31.3040909@oracle.com><1288965554.3975.27.camel@heimdal.trondhjem.org><BF3BB6D12298F54B89C8DCC1E4073D8002945154@CORPUSMX50A.corp.emc.com> <1290100143.7245.9.camel@heimdal.trondhjem.org>
From: david.noveck@emc.com
To: Trond.Myklebust@netapp.com
X-OriginalArrivalTime: 19 Nov 2010 22:39:03.0782 (UTC) FILETIME=[91533060:01CB883A]
X-EMM-MHVC: 1
X-EMM-MFVC: 1
Cc: Robert.Thurlow@oracle.com, nfsv4@ietf.org
Subject: Re: [nfsv4] 3530bis Issue 39: Clarification on renewing sequence IDs
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/nfsv4>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Nov 2010 22:39:19 -0000

SEQ_STATUS_LEASE_MOVED was not intended to be the last word on this
process.  It was only intended to be the last word on it in NFSv4.1 :-)

I don't see the scalability issue for the client SEQUENCE check.  You
have a per-client data structure and you keep a set of status bits in it
which you or into every sequence response.  There is also a count of
file systems that need to get their locations fetched.  You only change
the count when people get locations or something moves.  When the count
changes to or from zero the status bit changes.

I do see the issue for client probe.  I think CB_LEASE_MOVED is a fine
solution.  I think we may have been in this mode of being reluctant to
make it a requirement to have callbacks working.  I think we don't have
to require it.  You can still have SEQ_STATUS_LEASE_MOVED.  It is just
that you now have a simple way to find out the specific fs which moved
and that it will short-circuit the process of finding the fs that moved
so that you can get the fs_locations[_info] and thus resetting the
status bit.

I think that this kind of thing makes sense for v4.2, no matter what
scope decision we make.  Even if you were to decide on a bug-only minor
version, I think this kind of cleanup makes sense to put in the minor
version.  Let's not get into is-this-*really*-a-bug mode.  I accept the
onus of having co-edited a buggy minor version.  I can't see us doing a
critical-bug-only minor version.    

I think we will need to have a v4.2 document minor version document in
place soon.  This kind of small thing (bug or not) is just not big
enough to merit an internet-draft.  If you require it, these things will
just not get done.  I think that once we have a framework for this sort
of small addition, we can publish the text for the new op or callback in
messages on the working group list and then incorporate them in the next
v4.2 draft, once there is rough consensus.  My suggestion is that we
make it the practice to publish proposed v4.2 text in the form of
xml2rfc xml within the working group email to make it simpler for the
v4.2 document editor to incorporate.

 

-----Original Message-----
From: nfsv4-bounces@ietf.org [mailto:nfsv4-bounces@ietf.org] On Behalf
Of Trond Myklebust
Sent: Thursday, November 18, 2010 12:09 PM
To: Noveck, David
Cc: Robert.Thurlow@oracle.com; nfsv4@ietf.org
Subject: Re: [nfsv4] 3530bis Issue 39: Clarification on renewing
sequence IDs

So, I don't think that SEQ_STATUS_LEASE_MOVED should be the last word on
this process.

SEQ_STATUS_LEASE_MOVED has the same scalability problems that
NFS4ERR_LEASE_MOVED does: if the server is exporting 1000 or so volumes,
and one of them moves, it has to check every time a client sends a
SEQUENCE op (i.e. pretty much every COMPOUND) if that client has
completed its search for the absent volume. Furthermore, it will be
receiving a bunch of new RPC requests as the clients all probe 1000
volumes for the absent one.

NFSv4.1 has solved the problem of callbacks by means of the session
backchannel. Why can't we now solve the problem of LEASE_MOVED by adding
a CB_LEASE_MOVED operation which reports not only that a filesystem is
missing, but also identifies which filesystem (e.g. by including the
fsid)?

Cheers
  Trond

On Sun, 2010-11-07 at 01:04 -0500, david.noveck@emc.com wrote:
> I agree with Trond's argument as to seqid, i.e. that you should
> increment the seqid in the case of NFS4ERR_LEASE_MOVED.
> 
> NFS4ERR_LEASE_MOVED was buried at a cross-roads in RFC5661, but there
we
> have SEQ_STATUS_LEASE_MOVED so we don't need it.
> 
> If you bury it in RFC3530bis, you do have to have some way to deal
with
> the issue of letting the client find out that there is a migrated
lease.
> Otherwise, there is an unbounded period in which the new server will
not
> hear from the client and the client's open files could be lost.
> 
> The alternative to the monstrous hack would be to require the server
to
> simulate a reboot.  The client would see a STALE client or stateid
error
> and then he would go through the reclaim sequence for both any
migrated
> and non-migrated fs's.   That seems harder to make happen than
> LEASE_MOVED, as monstrous as it is.
>  
> 
> -----Original Message-----
> From: nfsv4-bounces@ietf.org [mailto:nfsv4-bounces@ietf.org] On Behalf
> Of Trond Myklebust
> Sent: Friday, November 05, 2010 9:59 AM
> To: Robert Thurlow
> Cc: NFSv4
> Subject: Re: [nfsv4] 3530bis Issue 39: Clarification on renewing
> sequence IDs
> 
> On Thu, 2010-11-04 at 15:57 -0600, Robert Thurlow wrote:
> > Robert Thurlow wrote:
> > > Hi folks,
> > > 
> > > This is issue 39 from 
> > > http://github.com/loghyr/3530bis/blob/master/tasklist.txt.
> > > 
> > > In implementing NFSv4 migration support, we believe that
> > > MOVED and LEASE_MOVED need to be added to the list of errors
> > > in 8.1.5 which do NOT result in incrementing the open owner
> > > or lock owner sequence ID.  The goal is to make the sequence
> > > ID readily calculable for both the client and the destination
> > > server after the migration has occurred.
> > > 
> > > On the 3530bis call, this appeared exactly backwards to some
> > > others - that since a completely gross error had not occurred,
> > > we should increment the sequence ID and the client and the
> > > destination server should know to expect that when they interact
> > > after a migration.  I do not know this issue well enough to
> > > properly defend a position, so please reply with your reasoned
> > > opinion :-)
> > 
> > I don't think this has had a response.  If you disagree with
> > the wording change, now is the time to say so.
> 
> As stated on the confcall, I strongly disagree with this change w.r.t.
> NFS4ERR_LEASE_MOVED. The operation that resulted in a
> NFS4ERR_LEASE_MOVED cannot be safely replayed if the sequence id has
not
> been bumped.
> 
> The point is that NFS4ERR_LEASE_MOVED is an error that depends on the
> state of a _different_ filesystem. It does not even pertain to the
> actual state you are trying to modify (and is a monstrous hack). Worse
> yet, that error condition can be cleared at any time with no
> consequences for the stateids held by the client, so unlike
> NFS4ERR_BAD_STATEID or NFS4ERR_BAD_SEQID, there is no ordering w.r.t.
> the operation that you are retrying.
> 
> IOW: if the error condition happens to get cleared between two replays
> of the operation, the client may end up getting 2 conflicting replies
> (one NFS4ERR_LEASE_MOVED, the other being a change of state on the
> server). Which one does it choose?
> 
> So how about counter-proposal: we bury NFS4ERR_LEASE_MOVED at a
> cross-roads with a stake through its heart, and promise never to
mention
> it again except when the kids need scaring to bed...
> 
> Trond
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4
> 

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com

_______________________________________________
nfsv4 mailing list
nfsv4@ietf.org
https://www.ietf.org/mailman/listinfo/nfsv4