Subject: [nfsv4] Some language I think needs clarification in RFC 3530 bis

From: Frank S Filz <[email-masked]>
Date: Tue, 21 May 2013 11:45:55 -0700

The following section:

9.4. Blocking Locks
Some clients require the support of blocking locks. The NFS version
4 protocol must not rely on a callback mechanism and therefore is
unable to notify a client when a previously denied lock has been
granted. Clients have no choice but to continually poll for the
lock. This presents a fairness problem. Two new lock types are
added, READW and WRITEW, and are used to indicate to the server that
the client is requesting a blocking lock. The server should maintain
an ordered list of pending blocking locks. When the conflicting lock
is released, the server may wait the lease period for the first
waiting client to re-request the lock. After the lease period
expires the next waiting client request is allowed the lock. Clients
are required to poll at an interval sufficiently small that it is
likely to acquire the lock in a timely manner. The server is not
required to maintain a list of pending blocked locks as it is used to
increase fairness and not correct operation. Because of the
unordered nature of crash recovery, storing of lock state to stable
storage would be required to guarantee ordered granting of blocking
locks.

Contains the statement:

The server should maintain an ordered list of pending blocking locks.

And then this statement:

The server is not required to maintain a list of pending blocked locks as
it is used to increase fairness and not correct operation.

Could we change the should in that first statement to may to not be
confused with the RFC meaning of SHOULD?

Or is that second statement not really right? Or is the first statement
correctly a SHOULD and the second statement is giving the "out" for a
server that doesn't want to follow a SHOULD (since it isn't a MUST)?

Thanks

Frank