From: Juan Gomez Subject: Re: Non-blocking lock requests during the grace period Date: Fri, 15 Nov 2002 11:09:44 -0800 Sender: linux-kernel-owner@vger.kernel.org Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Cc: linux-kernel@vger.kernel.org, nfs@lists.sourceforge.net Return-path: To: trond.myklebust@fys.uio.no List-ID: On second thoughts, I think I wonder if we want to fail F_GETLK while in the grace period? seems like we won't there it makes sense to hold until the grace period clears otherwise the client app may think there is something wrong (note that F_GETLK man page does not provide EAGAIN as a possible error code). The case for F_SETLK is different as the result is expected when the lock is not available due to a previous holder (or, as I want to do it, when the lock is not available ether by previous holder or grace period). Juan |---------+----------------------------> | | Trond Myklebust | | | | | | | | | 11/15/02 09:35 AM| | | Please respond to| | | trond.myklebust | | | | |---------+----------------------------> >-------------------------------------------------------------------------------------------------------------------------| | | | To: Juan Gomez/Almaden/IBM@IBMUS | | cc: linux-kernel@vger.kernel.org, nfs@lists.sourceforge.net | | Subject: Re: Non-blocking lock requests during the grace period | | | | | >-------------------------------------------------------------------------------------------------------------------------| > 2.-I also have this part enclosed in the if(resp->status == > NLM_LCK_DENIED_GRACE_PERIOD) as follows: > if(resp->status == NLM_LCK_DENIED_GRACE_PERIOD) { > blah blah... > wait_on_grace: > if ((proc == NLMPROC_LOCK) && > !argp->block) > return -EAGAIN > } else { > .... > } > This with the intention to be very specific as to when we want > the return -EAGAIN to be called. The above means that you will still block on a F_GETLK query... In any case, why would we want to return -EAGAIN in one case where argp->block isn't set, and not in another? If there are cases where we want to block and where we are not currently setting argp->block (the only one I can think of might be NLMPROC_UNLOCK), then we should fix the caller. Cheers, Trond