NFSv4: fix delegated locking
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 11 Apr 2010 20:48:44 +0000 (16:48 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 12 Apr 2010 11:55:15 +0000 (07:55 -0400)
commit0df5dd4aae211edeeeb84f7f84f6d093406d7c22
tree6e58bc436b873cf582f20cf0dbd21461c0a56837
parent2c61be0a9478258f77b66208a0c4b1f5f8161c3c
NFSv4: fix delegated locking

Arnaud Giersch reports that NFSv4 locking is broken when we hold a
delegation since commit 8e469ebd6dc32cbaf620e134d79f740bf0ebab79 (NFSv4:
Don't allow posix locking against servers that don't support it).

According to Arnaud, the lock succeeds the first time he opens the file
(since we cannot do a delegated open) but then fails after we start using
delegated opens.

The following patch fixes it by ensuring that locking behaviour is
governed by a per-filesystem capability flag that is initially set, but
gets cleared if the server ever returns an OPEN without the
NFS4_OPEN_RESULT_LOCKTYPE_POSIX flag being set.

Reported-by: Arnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@kernel.org
fs/nfs/client.c
fs/nfs/nfs4proc.c
include/linux/nfs_fs_sb.h