Re: [nfsv4] can a server replace a read deleg with a write deleg?

Trond Myklebust <trond.myklebust@fys.uio.no> Sun, 04 July 2010 16:24 UTC

Return-Path: <trond.myklebust@fys.uio.no>
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 E25E53A67F2 for <nfsv4@core3.amsl.com>; Sun, 4 Jul 2010 09:24:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.949
X-Spam-Level:
X-Spam-Status: No, score=-5.949 tagged_above=-999 required=5 tests=[AWL=0.650, 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 1Mq5pG0Tp-hB for <nfsv4@core3.amsl.com>; Sun, 4 Jul 2010 09:24:35 -0700 (PDT)
Received: from mail-out1.uio.no (mail-out1.uio.no [129.240.10.57]) by core3.amsl.com (Postfix) with ESMTP id CD8A53A67D7 for <nfsv4@ietf.org>; Sun, 4 Jul 2010 09:24:34 -0700 (PDT)
Received: from mail-mx1.uio.no ([129.240.10.29]) by mail-out1.uio.no with esmtp (Exim 4.69) (envelope-from <trond.myklebust@fys.uio.no>) id 1OVRzf-00058C-0m; Sun, 04 Jul 2010 18:24:35 +0200
Received: from c-68-40-206-115.hsd1.mi.comcast.net ([68.40.206.115] helo=[192.168.1.29]) by mail-mx1.uio.no with esmtpsa (SSLv3:CAMELLIA256-SHA:256) user trondmy (Exim 4.69) (envelope-from <trond.myklebust@fys.uio.no>) id 1OVRze-0000b7-8O; Sun, 04 Jul 2010 18:24:34 +0200
From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Rick Macklem <rmacklem@uoguelph.ca>
In-Reply-To: <Pine.GSO.4.63.1007041217520.6453@muncher.cs.uoguelph.ca>
References: <Pine.GSO.4.63.1007041217520.6453@muncher.cs.uoguelph.ca>
Content-Type: text/plain; charset="UTF-8"
Date: Sun, 04 Jul 2010 12:24:32 -0400
Message-ID: <1278260672.29898.13.camel@heimdal.trondhjem.org>
Mime-Version: 1.0
X-Mailer: Evolution 2.30.2 (2.30.2-1.fc13)
Content-Transfer-Encoding: 7bit
X-UiO-Ratelimit-Test: rcpts/h 6 msgs/h 3 sum rcpts/h 8 sum msgs/h 3 total rcpts 545 max rcpts/h 20 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 32DDC4DAE188FD8870B4FA848435F8E52247E2D8
X-UiO-SPAM-Test: remote_host: 68.40.206.115 spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 3 total 244 max/h 6 blacklist 0 greylist 0 ratelimit 0
Cc: nfsv4@ietf.org
Subject: Re: [nfsv4] can a server replace a read deleg with a write deleg?
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: Sun, 04 Jul 2010 16:24:36 -0000

On Sun, 2010-07-04 at 12:28 -0400, Rick Macklem wrote:
> Somewhat tangencial to the recent thread, what about the following
> simple case:
> - client opens foo for reading and gets read_deleg_stateid_foo
> - client opens foo for writing against the server (which it must do
>    when it holds a read delegation)
> 
> Now, if the server sees that this client is the only one with a read
> delegation for (and opens on) "foo", it could issue a write delegation
> to the client for "foo".
> - To do this does it first need to CBRecall the read delegation? (If so,
>    it probably cannot issue the write delegation for this open, since it
>    would take too long to reply to the Open unless it returns NFS4ERR_DELAY
>    for the Open for a while. Not an ideal situation.)
> OR
> - Can it return a write delegation for "foo" in the write open reply?
>    - If it is allowed to do this, does this delegation replace
>      read_delegation_stateid_foo or is there now multiple delegations for
>      "foo" issued to the same client?
>      (I don't like the concept of having multiple delegations issued to
>       the same client for the same file concurrently and I'm pretty sure
>       my client isn't implemented to handle this case. Without looking at
>       the code to be sure, I think it logs an error and throws away the
>       new second delegation.)
> 
> I don't think this is clarified in RFC3530, but please correct me if I'm
> incorrect w.r.t. this.

I read RFC3530 as being perfectly clear on this.

In section 9.4 it explicitly states that the client _cannot_ make any
changes to the contents or attributes of the file if it holds a read
delegation.

In section 9.4.4 it states that the server must recall the delegation in
the event of a conflicting OPEN or READ/WRITE w/ special stateids.

Cheers
  Trond